A .NET 10 fintech wallet API built with Clean Architecture and CQRS.
- .NET 10 SDK
- Docker and Docker Compose
- pre-commit (for Git hooks)
git clone <repo-url>
cd fintech-miniwallet
# Install pre-commit (Ubuntu/Debian)
sudo apt install pre-commit
# Activate the hooks
pre-commit install
pre-commit install --hook-type pre-pushdotnet restoredocker compose up -d database redis rabbitmqThis starts:
- PostgreSQL 17 on port
5432 - Redis 8 on port
6379 - RabbitMQ 4 on ports
5672(AMQP) and15672(management UI)
dotnet run --project src/Fintech.MiniWallet.ApiThe API will be available at http://localhost:8080.
docker compose up -dThis builds and starts the API alongside all infrastructure services.
# Unit tests
dotnet test tests/Fintech.MiniWallet.UnitTests
# Integration tests (requires infrastructure running)
dotnet test tests/Fintech.MiniWallet.IntegrationTests
# All tests
dotnet test# Check formatting
dotnet format --verify-no-changes --verbosity minimal
# Apply formatting
dotnet formatThe project uses pre-commit to enforce quality gates automatically. Hooks must be installed once per clone (see Getting Started).
| Stage | Hook | What it does |
|---|---|---|
pre-commit |
gitleaks | Scans for hardcoded secrets |
pre-commit |
dotnet-format | Blocks commit if code is not formatted |
pre-push |
dotnet-build | Ensures the solution builds in Release |
pre-push |
dotnet-test | Runs the full test suite |
# Run all pre-commit hooks against every file
pre-commit run --all-files
# Run only gitleaks
pre-commit run gitleaks --all-filesNote:
dotnet-formatverifies but does not auto-fix. If a commit is blocked, rundotnet formatand stage the changes before committing again.
docker compose stopdocker compose downdocker compose down --volumes --rmi localsrc/
Fintech.MiniWallet.Domain/ # Entities, value objects, domain events
Fintech.MiniWallet.Application/ # CQRS commands, queries, handlers
Fintech.MiniWallet.Infrastructure/ # Database, cache, messaging
Fintech.MiniWallet.Api/ # HTTP layer, controllers, DI wiring
tests/
Fintech.MiniWallet.UnitTests/
Fintech.MiniWallet.IntegrationTests/