Corporate application developed to demonstrate advanced architectural patterns, financial data integrity, and high-performance read operations using CQRS.
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).
- 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.
- 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.
| 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 |
| 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) |
| Technology | Description |
|---|---|
| Angular 19+ | Single Page Application (SPA) |
| TypeScript | Strongly Typed Language |
| Tailwind CSS v4 | Utility-first CSS Framework (Native CSS) |
| RxJS | Reactive Programming |
| Technology | Description |
|---|---|
| Oracle Database | Relational Database (Dockerized XE) |
| Docker | Containers |
| Docker Compose | Local Environment Orchestration |
| Kubernetes | Deployment (Planned) |
| GitHub Actions | CI/CD (Planned) |
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
- Docker Desktop
- .NET SDK 8.0
- Node.js (v20+)
- Angular CLI
git clone [https://github.com/gabrielcamposdeveloper/finops-core.git](https://github.com/gabrielcamposdeveloper/finops-core.git)
cd finops-core
docker compose up -d db
(Wait 1-2 minutes for the Oracle XE container to fully initialize).
cd src/FinOpsCore.API
dotnet ef database update
dotnet run
Swagger will be available at:
https://localhost:5001/swagger
Open a new terminal window:
cd frontend/finops-app
npm install
ng serve
The application will be available at:
http://localhost:4200
Gabriel Campos
Licensed under the MIT License.