Microservice-based wallet app inspired by the Simple Bank course on Udemy. It handles auth, accounts, transfers, and notifications with clear service boundaries.
- 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
- 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
- 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
- ✅ 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
- Support real-world crypto rails
- Go, Gin, gRPC, Docker, deployment: https://github.com/techschool/simplebank
- Microservices & RabbitMQ: https://github.com/SmoothWay/udemy-go-microservices
- Architecture & implementation: https://github.com/JordanMarcelino/learn-go-microservices/
- Project layout: https://github.com/golang-standards/project-layout