Skip to content

whr129/Go-Wallet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go Wallet

Microservice-based wallet app inspired by the Simple Bank course on Udemy. It handles auth, accounts, transfers, and notifications with clear service boundaries.

Features

  • Account management, transfers, and balance tracking
  • Idempotent transfers with DB uniqueness and distributed locking
  • Role-based access (admin, customer service, user)
  • Low-balance email notifications

Services

  • Auth Service – JWT issuance/verification; Redis-backed session cache
  • Wallet Service – Account CRUD and balances via Gin; publishes low-balance events (RabbitMQ)
  • Transaction Service – PostgreSQL-backed transfers with in-DB transaction + Redis distributed lock + deadlock handling/concurrency tests
  • Notification Service – Consumes RabbitMQ events and sends emails

Stack

  • Backend: Go, Gin, gRPC for inter-service calls
  • Data: PostgreSQL; Redis for cache/locks
  • Messaging: RabbitMQ for async events
  • Frontend: React + Ant Design
  • Delivery: Docker/Kubernetes (targets AWS free tier)
  • CI: GitHub Actions

Roadmap

  • ✅ Learn Go + Gin + gRPC + RabbitMQ + microservices
  • ✅ Define architecture and repo layout
  • ✅ Bootstrap Makefiles, DB, MQ, Redis, Gin gateway, Docker
  • ✅ Design and evolve database schema
  • ✅ Auth service with middleware integration
  • ✅ Wallet service with low-balance notifications
  • ✅ Notification service
  • ✅ Transaction service (idempotent transfers, locking)
  • ✅ Unit tests and GitHub Actions CI
  • ✅ Backend polish and deployment
  • ✅ MongoDB for API call logging history storage

Future Ideas

  • Support real-world crypto rails

References

About

Micro-services based Go Wallet backend Redis auth/session management + rabbitmq notification

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors