Skip to content
thuanvu301103 edited this page Feb 19, 2026 · 4 revisions

GopherPay: Distributed Payment System

GopherPay is a robust, distributed financial platform designed to handle user accounts, secure money transfers, and real-time transaction history. Built with a microservices-oriented mindset, it ensures high availability, data consistency, and secure communication.


Project Overview

The primary goal of GopherPay is to provide a scalable and reliable architecture for financial applications. It addresses the critical challenges of data atomicity—ensuring money is never lost during transfers—and service decoupling through modern infrastructure.

Core Capabilities

  • Identity Management: Secure user registration, profile management, and authentication.
  • Multi-Currency Wallets: Flexible management of balances across various currencies (USD, VND, etc.).
  • Reliable Transfers: A dedicated transaction engine that guarantees "all-or-nothing" execution.
  • Async Notifications: Real-time user communication managed via a dedicated, asynchronous service.

System Architecture

The system is decomposed into independent core services that communicate through a mix of synchronous APIs and asynchronous message brokers.

Core Services

  • Identity Service: Manages security, password hashing (Bcrypt), and JWT-based authentication.
  • Account Service: Handles the CRUD operations for bank accounts and wallet balances.
  • Transaction Engine: The "Heart" of the system, responsible for the logic of moving money between users.

Support & Infrastructure

  • Notification Service (Novu): An asynchronous service responsible for all outgoing user communications.
  • Message Broker (Apache Kafka): The backbone that decouples core logic from background tasks and support services.

Technical Pillars

  • Distributed Design: Services are isolated using Docker containers and connected via a shared global network.
  • Security First: Implements industry-standard encryption (OpenSSL) and stateless sessions via JSON Web Tokens (JWT).
  • Data Integrity: Utilizes Database Transactions to ensure that if a sender's deduction fails, the receiver's credit never occurs.
  • Event-Driven: Leverages Kafka to trigger non-blocking background processes, improving system responsiveness.

Documentation Navigation

To learn more about specific parts of the system, please visit the following pages:


*GopherPay is designed for scalability and security