An open API service indexing awesome lists of open source software.

https://github.com/galadeat/bank-sim

Scalable banking backend built with Go and gRPC. Starts with account services, designed to evolve into a full financial simulation.
https://github.com/galadeat/bank-sim

account-management backend banking fintech go golang grpc simulation

Last synced: about 1 month ago
JSON representation

Scalable banking backend built with Go and gRPC. Starts with account services, designed to evolve into a full financial simulation.

Awesome Lists containing this project

README

          

# ๐Ÿฆ bank-sim

A simulation project demonstrating interaction between two microservices (user and account). It highlights clean architecture, gRPC integration, and a modern clientโ€“server setup.

---
## ๐Ÿš€ Quickstart

Quickly launch both server and client with:
```
make quickstart
```
---
## ๐Ÿ“Œ REPL UI
The client includes an interactive REPL that simulates account management.
Through simple menus you can:
- Create and manage users
- Open and manage accounts
- Perform deposits and withdrawals
- Query balances in real time

---
## ๐Ÿ›  Tech Stack

- **Go 1.24+**
- **gRPC**

---

## ๐Ÿ“ Project Structure
```
.
โ””โ”€โ”€ bankAccount/
โ”œโ”€โ”€ api/
โ”‚ โ””โ”€โ”€ proto/ # gRPC contracts
โ”‚ โ”œโ”€โ”€ account/ # account service (v1, v2)
โ”‚ โ”œโ”€โ”€ common/ # common types (Money, etc)
โ”‚ โ”œโ”€โ”€ reporting/ # reporting service
โ”‚ โ”œโ”€โ”€ transaction/ # transaction service
โ”‚ โ””โ”€โ”€ user/ # user service
โ”œโ”€โ”€ cmd/
โ”‚ โ”œโ”€โ”€ client
โ”‚ โ””โ”€โ”€ server
โ”œโ”€โ”€ internal/
โ”‚ โ”œโ”€โ”€ account
โ”‚ โ”œโ”€โ”€ repl
โ”‚ โ””โ”€โ”€ user
โ”œโ”€โ”€ mocks/
โ”œโ”€โ”€ pkg/
โ”‚ โ”œโ”€โ”€ clients
โ”‚ โ””โ”€โ”€ logger
โ”œโ”€โ”€ tests/
โ”‚ โ””โ”€โ”€ integration
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ go.mod
โ”œโ”€โ”€ go.sum
โ”œโ”€โ”€ .env.example
โ””โ”€โ”€ .gitignore
```
---

## ๐Ÿ–ฅ๏ธ Server
```
make run-server
```

## ๐Ÿ“ฌ Client
```
make run-client
```

---
## โœ… Tests
```
make tests
```
---
## ๐Ÿง  Features

- **Create** accounts with unique UUIDs
- **Retrieve** accounts by ID
- **Store** data in memory using Go maps
- **Interact** through an intuitive REPL for better UX
- **Deposit** and **Withdraw** money from accounts
- **Communicate** via the modern gRPC client API

## ๐Ÿ”ฎ Future Plans

This project will evolve into a more realistic banking simulation. Planned features include:

- Persistent storage (e.g., PostgreSQL or MongoDB)

- REST gateway via grpc-gateway

- Authentication and TLS encryption

- Transaction support (deposits, withdrawals, transfers)

- Dockerization and CI/CD pipelines