The Transaction Service handles the recording, retrieval, and presentation of all financial transactions across the platform. It provides customers with transparent access to their transaction history, generates digital receipts for individual transactions, and produces account statements for regulatory and personal use.
It acts as a query and reporting layer over the Account Service ledger, ensuring customers and admins have accurate visibility into all money movements.
- Language/Framework: .NET 9, ASP.NET Core
- Database: PostgreSQL
- Cache/Queue: Redis, Kafka
- Protocols: gRPC, REST
- Dependencies: Account Service, Ledger Service, Notification Service
- Handles customer bank accounts business logic
- Interacts with Account Service.
- Integrates with 3rd party APIs if any
TransactionService.Api→ API endpointsTransactionService.Grpc→ gRPC endpointsTransactionService.Application→ Business logic (CQRS, MediatR handlers)TransactionService.Domain→ Core entities & aggregatesTransactionService.Worker→ Background workers and RabbitMQ/Kafka set upTransactionService.Infrastructure→ Database (EF Core), repositories, external integrationsTransactionService.Tests→ Unit & integration tests
- gRPC proto definitions →
/proto/transaction.proto - REST endpoints → See
/docs/api.md
- Dockerized and deployed via Kubernetes
- CI/CD with GitHub Actions (
.github/workflows/ci-cd.yml) - Config via environment variables (see
.env.example)
- Unit tests:
make test - Integration tests: details
- CI/CD pipeline: GitHub Actions / GitLab CI
# Install dependencies
make build
# Start dev server
make run-all
# Start watch server
make watch-all