A high-performance, secure banking API built with Go, featuring real-time transactions and advanced monitoring.
- Instant Account Creation: Streamlined onboarding with secure password hashing.
- Real-time Fund Transfers: Asynchronous processing via RabbitMQ for high throughput.
- Robust Security: JWT authentication and bcrypt password encryption.
- Advanced Monitoring: Prometheus integration for real-time performance metrics.
- Scalable Architecture: Microservices-ready with Docker containerization.
- Comprehensive Logging: Colorized logs for enhanced debugging and traceability.
This architecture ensures high availability, fault tolerance, and easy scalability.
- Backend: Go with Echo framework
- Database: PostgreSQL for ACID-compliant transactions
- Message Queue: RabbitMQ for asynchronous operations
- Monitoring: Prometheus & Grafana dashboard and loki for logs
- Containerization: Docker & Docker Compose
POST /account: Create new accountGET /account: List accountsGET /login: Authenticate and receive JWTPOST /transfer/:accno: Execute fund transfer (Auth required)GET /transfer/:id: Check transfer status (Auth required)
- Clone the repo
- Run
make dcubto launch the entire stack - Visit
http://localhost:8080to start banking!
- Access Prometheus metrics at
/metrics - View logs for real-time system insights
- Bcrypt hashing for passwords
- JWT-based API authentication
- HTTPS support for production environments
make run: Launch API locallymake test: Run test suitemake dbinit: Set up PostgreSQLmake mqinit: Initialize RabbitMQ
make docker-build: Build FastBank imagemake dcu: Spin up all services (docker compose up)make dcub: Build and Spin up all services (docker compose up build)make dcd: Tear down the stack
We welcome contributions! Please check our contribution guidelines before submitting PRs.
