Keep the strengths of ReactFullStackDemo:
- React frontend
- ASP.NET Core services
- Docker-based local development
- Cloud-ready deployment path
But evolve the backend from a single API into a microservice-oriented banking platform.
- Frontend:
React + Vite - Entry point:
API Gateway / BFF - Services:
Customer ServiceAccount ServiceDeposit ServiceAudit ServiceQuery Service
- Messaging: message bus
- Observability: logs, metrics, tracing
- Customer master data
- Customer status
- Uniqueness validation
- Account lifecycle
- Balance ownership
- Account-level concurrency control
- Deposit intake
- Idempotency
- Transaction lifecycle
- Audit ingestion
- Audit search
- Retry and compensation for audit failures
- Aggregated read models
- Read-optimized APIs
Do not rely on a single Mongo-style CRUD store for core ledger behavior.
Recommended direction:
- PostgreSQL or SQL Server for
Customer,Account, andDeposit - Append-only or relational storage for
Audit - Read-optimized store for
Query - Redis for caching and support utilities
- Local transaction inside each service
- No distributed 2PC
- SAGA for cross-service workflows
- Outbox for reliable event publication
- Idempotent consumers
- Deposit Service accepts request and creates a transaction
- Deposit Service publishes
DepositRequested - Account Service validates and posts balance
- Account Service publishes
DepositPostedorDepositRejected - Deposit Service updates transaction state
- Audit Service writes audit record
- Query Service updates read model
BasicBankingSystem/
docs/
infra/
src/
Banking.Web/
Banking.Gateway/
Banking.Services.Customer/
Banking.Services.Account/
Banking.Services.Deposit/
Banking.Services.Audit/
Banking.Services.Query/
Banking.BuildingBlocks/
tests/