Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

45 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Š FinOps Core - Financial Management and Reconciliation System

.NET C%23 Angular Tailwind Oracle Entity Framework Core Dapper Docker Kubernetes GitHub Actions License

Architecture DDD CQRS MediatR Result Pattern Unit of Work

Corporate application developed to demonstrate advanced architectural patterns, financial data integrity, and high-performance read operations using CQRS.


πŸ›οΈ Architecture

The solution follows Clean Architecture and Domain-Driven Design (DDD), keeping business rules completely isolated from infrastructure and frameworks.

To support scalability and high throughput, the application adopts CQRS (Command Query Responsibility Segregation).

✍️ Command Side (Write)

  • Entity Framework Core
  • Unit of Work
  • Rich Domain Model (Validations inside the Entity)
  • Optimistic Concurrency (RowVersion tracking)
  • ACID Transactions
  • MediatR

Business operations pass through the domain layer, ensuring consistency and protecting financial transactions without throwing costly exceptions, using the Result Pattern.


πŸ“– Query Side (Read)

  • Dapper
  • Native SQL (Oracle Syntax)
  • Lightweight DTOs
  • Optimized Queries

Read operations bypass ORM tracking, opening direct connections to deliver significantly faster dashboard and reporting performance.


🧩 Design Patterns

Pattern Purpose
βœ… Clean Architecture Separation of concerns
βœ… Domain-Driven Design Rich business domain
βœ… CQRS Read/Write segregation
βœ… Unit of Work Transaction management
βœ… Repository Pattern Persistence abstraction
βœ… MediatR Decoupled application layer
βœ… Result Pattern Business validation without exceptions
βœ… Dependency Injection Loose coupling via Extension Methods

πŸš€ Tech Stack

Backend

Technology Description
.NET 8 Backend Framework
C# 12 Programming Language
Entity Framework Core Relational ORM for Commands
Oracle.EntityFrameworkCore Official Oracle Provider
Dapper Micro ORM for High-performance Queries
MediatR Mediator Pattern for CQRS
xUnit / Moq Unit Tests & Mocking (Planned)

Frontend

Technology Description
Angular 19+ Single Page Application (SPA)
TypeScript Strongly Typed Language
Tailwind CSS v4 Utility-first CSS Framework (Native CSS)
RxJS Reactive Programming

Infrastructure

Technology Description
Oracle Database Relational Database (Dockerized XE)
Docker Containers
Docker Compose Local Environment Orchestration
Kubernetes Deployment (Planned)
GitHub Actions CI/CD (Planned)

πŸ“‚ Project Structure

src
β”œβ”€β”€ FinOpsCore.Domain
β”‚   β”œβ”€β”€ Entities          # Rich Models (e.g., Transaction)
β”‚   β”œβ”€β”€ Common            # Shared constructs (e.g., Result Pattern)
β”‚   β”œβ”€β”€ Enums             # Domain Enumerators
β”‚   └── Interfaces        # IUnitOfWork, ITransactionRepository
β”‚
β”œβ”€β”€ FinOpsCore.Application
β”‚   β”œβ”€β”€ Transactions
β”‚   β”‚   β”œβ”€β”€ Commands      # Create, Liquidar (Write ops)
β”‚   β”‚   └── Queries       # GetCashFlow (Read ops / DTOs)
β”‚   └── Interfaces        # ISqlConnectionFactory
β”‚
β”œβ”€β”€ FinOpsCore.Infrastructure
β”‚   β”œβ”€β”€ Data
β”‚   β”‚   β”œβ”€β”€ Context       # AppDbContext (EF Core)
β”‚   β”‚   β”œβ”€β”€ Mappings      # Fluent API (TransactionConfiguration)
β”‚   β”‚   └── Connections   # OracleConnectionFactory (Dapper)
β”‚   └── Repositories      # TransactionRepository implementation
β”‚
└── FinOpsCore.API
    β”œβ”€β”€ Controllers       # REST Endpoints via MediatR
    β”œβ”€β”€ Extensions        # DependencyInjection (IoC Setup)
    └── appsettings.json  # DB Connection Strings

frontend
└── finops-app            # Angular + Tailwind Application

k8s
└── deployment            # Kubernetes Manifests


⚑ Running Locally

Requirements

  • Docker Desktop
  • .NET SDK 8.0
  • Node.js (v20+)
  • Angular CLI

Clone Repository

git clone [https://github.com/gabrielcamposdeveloper/finops-core.git](https://github.com/gabrielcamposdeveloper/finops-core.git)
cd finops-core

Start Oracle Database

docker compose up -d db

(Wait 1-2 minutes for the Oracle XE container to fully initialize).


Apply Migrations and Run API

cd src/FinOpsCore.API
dotnet ef database update
dotnet run

Swagger will be available at:

https://localhost:5001/swagger


Run Angular Frontend

Open a new terminal window:

cd frontend/finops-app
npm install
ng serve

The application will be available at:

http://localhost:4200


πŸ‘¨β€πŸ’» Author

Gabriel Campos


πŸ“„ License

Licensed under the MIT License.

About

Enterprise application developed to demonstrate advanced architectural patterns, high-performance data querying, and financial data integrity.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages