Skip to content

Latest commit

History

45 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

📊 FinOps Core - Financial Management and Reconciliation System

.NETC%23AngularTailwindOracleEntity Framework CoreDapperDockerKubernetesGitHub ActionsLicense

ArchitectureDDDCQRSMediatRResult PatternUnit 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

PatternPurpose
✅ Clean ArchitectureSeparation of concerns
✅ Domain-Driven DesignRich business domain
✅ CQRSRead/Write segregation
✅ Unit of WorkTransaction management
✅ Repository PatternPersistence abstraction
✅ MediatRDecoupled application layer
✅ Result PatternBusiness validation without exceptions
✅ Dependency InjectionLoose coupling via Extension Methods

🚀 Tech Stack

Backend

TechnologyDescription
.NET 8Backend Framework
C# 12Programming Language
Entity Framework CoreRelational ORM for Commands
Oracle.EntityFrameworkCoreOfficial Oracle Provider
DapperMicro ORM for High-performance Queries
MediatRMediator Pattern for CQRS
xUnit / MoqUnit Tests & Mocking (Planned)

Frontend

TechnologyDescription
Angular 19+Single Page Application (SPA)
TypeScriptStrongly Typed Language
Tailwind CSS v4Utility-first CSS Framework (Native CSS)
RxJSReactive Programming

Infrastructure

TechnologyDescription
Oracle DatabaseRelational Database (Dockerized XE)
DockerContainers
Docker ComposeLocal Environment Orchestration
KubernetesDeployment (Planned)
GitHub ActionsCI/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

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages