Skip to content

Latest commit

 

History

History
90 lines (65 loc) · 5.04 KB

README.md

File metadata and controls

90 lines (65 loc) · 5.04 KB

Expense Tracker Project

Overview

This repository contains a "comprehensive expense tracking solution developed as one of my hobby project."

One of my hobby project architected and deployed on my Linux server. Built on clean architecture as 3 microservices, it features a .NET 8 WebAPI containerized with Docker. Supports distributed logging and tracing with Seq, metrics with Prometheus and Grafana. A Flutter app logs expenses and manages categories. The system uses RabbitMQ for messaging, Redis for caching, MongoDB for persistence, EF Core as ORM, Firebase for notifications, Azure EntraAD for auth & Blob storage for archrivals.


Technology Stack

Frontend

Application Type Name Version Details
Web React 18.2.0 SPA
Mobile Flutter 3.22 Android & iOS

Backend

Backend Architecture

The project follows a microservices architecture with some components hosted in Azure.

Expence Tracker v1 Service Architecture drawio

Component Name Version Details
API .NET 8 Alpine Chiseled Ubuntu image (aspnet:8.0-jammy-chiseled) on Docker
Database MongoDB 8.0 Preview · 2023 on Docker
Distributed Caching Redis 7.0 on Docker
Distributed Messaging RabbitMQ 3.13.6 on Docker
Logging & Tracing Seq 2023.1 on Docker
Serilog Local logging (file)
Metrics & Monitoring Grafana 11.0.0-preview on Docker
Prometheus 2.53.1 / 2024-07-10 on Docker
Cloud Storage & Archival Azure Blob Storage Azure
Authentication Entra AD Azure
CDNs Azure CDN Azure

Demo Video

<iframe width="296" height="628" src="https://www.youtube.com/embed/4neii_v1MAQ" title="Demo" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin"></iframe>

Demo Screenshots

Image 1 Image 2 Image 3
Image 4 Image 5 Image 6

Deployment Environment

Docker Instances

image

Property Value
Operating System Ubuntu 23.04
Kernel Linux 6.2.0-39-generic
Architecture x86-64
Memory 8GB Physical
CPU(s) 2 vCPUs
Model name AMD EPYC 7543P 32-Core Processor

Other Missilenius Tools Involved

K6 Performance Tests

  • The API has been load tested using K6
  • Capable of serving 1000 requests in parallel
  • Utilizes distributed caching for improved response times

Azure Cloud Integration

  • Azure EntraAD: Handles authentication and authorization
  • Azure Blob Storage: Planned for long-term data archival (cold storage)

Monitoring and Observability

  • Seq: Centralized logging and tracing with OpenTelemetry integration
  • Prometheus & Grafana: Real-time monitoring of API traffic and system metrics

Development Practices

  • Build on Clean Architecture principle
  • Containerised