ExpenseTracker
ExpenseTracker is a modular, event-sourced .NET Core application designed to manage personal finances. It uses Clean Architecture, Domain-Driven Design (DDD), and Event Sourcing to deliver a scalable and maintainable system.
Install / Use
/learn @aekoky/ExpenseTrackerREADME
ExpenseTracker
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.
Table of Contents
- Features
- Technologies Used
- Installation
- Usage
- API Reference
- Tests
- Deployment
- Contributing
- License
- Contact and Acknowledgments
Features
- 🧾 Account creation and lifecycle management
- 💸 Deposit and withdrawal tracking
- 📜 Event-sourced audit logs
- 🧠 Projections using Marten for read models
- 🚀 Asynchronous communication with RabbitMQ and Wolverine
- 🔒 Health checks and diagnostics endpoints
- 📦 Containerized using Docker Compose
- 🛡️ API Gateway via Kong
Technologies Used
- Backend: .NET 8, C#
- Messaging: RabbitMQ, Wolverine
- Event Store & Projections: Marten (PostgreSQL)
- API Gateway: Kong
- Cache: Redis
- Infrastructure: Docker, Docker Compose
- Tests: xUnit, Testcontainers
Installation
Prerequisites
- Docker + Docker Compose
- .NET 8 SDK
- Git
Steps
# Clone the repository
git clone https://github.com/aekoky/ExpenseTracker.git
cd ExpenseTracker
# Start the system
docker-compose up --build
Usage
- Kong Gateway Proxy: http://localhost:8000
- AuditService Swagger: http://localhost:8000/audit/api/docs
- ExpenseService Swagger: http://localhost:8000/expense/api/docs
Health endpoints:
GET /health
Run services manually if needed:
dotnet run --project src/Services/ExpenseService
dotnet run --project src/Services/AuditService
API Reference
ExpenseService
POST /expense/api/accountsPUT /expense/api/accounts/{id}/depositPUT /expense/api/accounts/{id}/withdrawDELETE /expense/api/accounts/{id}
AuditService
GET /audit/api/accountsGET /audit/api/accounts/{id}/events
Tests
dotnet test
Test projects are located in /tests:
ExpenseService.IntegrationTestsExpenseService.UnitTestsAuditService.IntegrationTestsAuditService.UnitTests
Uses Testcontainers for ephemeral PostgreSQL and RabbitMQ setup.
Deployment
- Deploy via Docker Compose or Kubernetes
- Customize
.envanddocker-compose.override.ymlfor production settings - Ensure external databases, queues, and cache systems are configured properly
Contributing
We welcome contributions!
- Fork the repo
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a pull request
License
This project is licensed under the MIT License.
Contact and Acknowledgments
Developed by Reda AEKOKY
Special thanks to the open-source community and libraries like:
- JasperFx Ecosystem (Marten, Wolverine)
- Testcontainers
- Kong Gateway
Related Skills
node-connect
341.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
prose
341.8kOpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
frontend-design
84.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
