Menu โ–พ โ–ด

Tree [1a6686] master /
 History

HTTPS access


File Date Author Commit
 Kong 2025-06-06 aekokyreda aekokyreda [722dbd] create an event sourcing backend
 Postgres 2025-06-23 aekokyreda aekokyreda [4b33ee] separating databases and fixing expected versio...
 Redis 2025-06-06 aekokyreda aekokyreda [722dbd] create an event sourcing backend
 src 2025-06-25 aekokyreda aekokyreda [9bead3] add cache abstraction and use reddis
 tests 2025-06-25 aekokyreda aekokyreda [9bead3] add cache abstraction and use reddis
 .dockerignore 2025-06-06 aekokyreda aekokyreda [722dbd] create an event sourcing backend
 .editorconfig 2025-06-06 aekokyreda aekokyreda [722dbd] create an event sourcing backend
 .env-default 2025-06-16 aekokyreda aekokyreda [f7b1b0] impliment event driven
 .filenesting.json 2025-06-06 aekokyreda aekokyreda [722dbd] create an event sourcing backend
 .gitignore 2025-06-16 aekokyreda aekokyreda [f7b1b0] impliment event driven
 ExpenseTracker.sln 2025-06-19 aekokyreda aekokyreda [4e2509] integration tests setup
 README.md 2025-06-24 AEKOKY Reda AEKOKY Reda [b2688c] Update README.md
 docker-compose.dcproj 2025-06-06 aekokyreda aekokyreda [722dbd] create an event sourcing backend
 docker-compose.override.yml 2025-06-06 aekokyreda aekokyreda [722dbd] create an event sourcing backend
 docker-compose.yml 2025-06-16 aekokyreda aekokyreda [f7b1b0] impliment event driven
 global.json 2025-06-06 aekokyreda aekokyreda [722dbd] create an event sourcing backend
 launchSettings.json 2025-06-06 aekokyreda aekokyreda [722dbd] create an event sourcing backend

Read Me

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

  • ๐Ÿงพ 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

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/accounts
  • PUT /expense/api/accounts/{id}/deposit
  • PUT /expense/api/accounts/{id}/withdraw
  • DELETE /expense/api/accounts/{id}

AuditService

  • GET /audit/api/accounts
  • GET /audit/api/accounts/{id}/events

Tests

dotnet test

Test projects are located in /tests:
- ExpenseService.IntegrationTests
- ExpenseService.UnitTests
- AuditService.IntegrationTests
- AuditService.UnitTests

Uses Testcontainers for ephemeral PostgreSQL and RabbitMQ setup.


Deployment

  • Deploy via Docker Compose or Kubernetes
  • Customize .env and docker-compose.override.yml for production settings
  • Ensure external databases, queues, and cache systems are configured properly

Contributing

We welcome contributions!

  1. Fork the repo
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. 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

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.