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.
Application Type | Name | Version | Details |
---|---|---|---|
Web | React | 18.2.0 | SPA |
Mobile | Flutter | 3.22 | Android & iOS |
The project follows a microservices architecture with some components hosted in Azure.
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 |
<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>
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
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 |
- The API has been load tested using K6
- Capable of serving 1000 requests in parallel
- Utilizes distributed caching for improved response times
- Azure EntraAD: Handles authentication and authorization
- Azure Blob Storage: Planned for long-term data archival (cold storage)
- Seq: Centralized logging and tracing with OpenTelemetry integration
- Prometheus & Grafana: Real-time monitoring of API traffic and system metrics
- Build on Clean Architecture principle
- Containerised