A microservices-based, event-driven and event sourcing application for tracking financial transactions.
ExpenseTracker is built with modularity, scalability, and observability in mind. It enables users to create accounts, track income/expenses, and audit every transaction using Event Sourcing and Event-Driven Architecture.
# Clone the repository
git clone https://github.com/aekoky/ExpenseTracker.git
cd ExpenseTracker
# Start the system
docker-compose up --build
Health endpoints:
GET /health
Run services manually if needed:
dotnet run --project src/Services/ExpenseService
dotnet run --project src/Services/AuditService
POST /expense/api/accounts
PUT /expense/api/accounts/{id}/deposit
PUT /expense/api/accounts/{id}/withdraw
DELETE /expense/api/accounts/{id}
GET /audit/api/accounts
GET /audit/api/accounts/{id}/events
dotnet test
Test projects are located in /tests
:
- ExpenseService.IntegrationTests
- ExpenseService.UnitTests
- AuditService.IntegrationTests
- AuditService.UnitTests
Uses Testcontainers for ephemeral PostgreSQL and RabbitMQ setup.
.env
and docker-compose.override.yml
for production settingsWe welcome contributions!
git checkout -b feature/AmazingFeature
)git commit -m 'Add AmazingFeature'
)git push origin feature/AmazingFeature
)This project is licensed under the MIT License.
Developed by Reda AEKOKY
Special thanks to the open-source community and libraries like:
- JasperFx Ecosystem (Marten, Wolverine)
- Testcontainers
- Kong Gateway