# neto-santana-22/korpis architecture

> Architecture diagram of the GitHub repository neto-santana-22/korpis, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/neto-santana-22/korpis
- Repository: https://github.com/neto-santana-22/korpis

## Overview

Korpis is a finance-management SPA and REST API for client records, Pix charges, and financial metrics. The main workflow is user sign-in, navigation to client or charge management, API requests, persistence, and dashboard review; charge operations also include Pix generation and simulated payment/cancellation. The README describes JWT/REST and PostgreSQL, while sampled backend persistence uses Entity Framework Core. Edges reflect sampled calls, SOURCE INDEX references, or README claims; unsampled capabilities and integrations are shown only where documented.

Main entry points: [`frontend/src/services/api.ts`](https://github.com/neto-santana-22/korpis/blob/main/frontend/src/services/api.ts) (HTTP client), [`frontend/src/App.tsx`](https://github.com/neto-santana-22/korpis/blob/main/frontend/src/App.tsx) (App navigation), [`backend/Infrastructure/Data/AppDbContext.cs`](https://github.com/neto-santana-22/korpis/blob/main/backend/Infrastructure/Data/AppDbContext.cs) (Database context), [`frontend/src/components/ChargesManager.tsx`](https://github.com/neto-santana-22/korpis/blob/main/frontend/src/components/ChargesManager.tsx) (Charge manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["App navigation<br/>[App.tsx]"]
  node_login["Login view<br/>[LoginView.tsx]"]
  node_clientsui["Client manager<br/>[ClientsManager.tsx]"]
  node_chargesui["Charge manager<br/>[ChargesManager.tsx]"]
  node_dashboardui["Dashboard view<br/>[DashboardView.tsx]"]
  node_http["HTTP client<br/>[api.ts]"]
  node_format["Currency formatters<br/>[formatters.ts]"]
end

subgraph group_api["API workflows"]
  node_auth["Authentication endpoint<br/>[AuthController.cs]"]
  node_clientapi["Client endpoints"]
  node_chargeapi["Charge endpoints"]
  node_metricsapi["Dashboard endpoint"]
end

subgraph group_domain["Domain and services"]
  node_clientrepo["Client repository"]
  node_chargerepo["Charge repository"]
  node_payment["Mock Pix service"]
  node_cliententity["Client records<br/>[Client.cs]"]
  node_chargeentity["Charge records<br/>[Charge.cs]"]
end

subgraph group_data["Persistence"]
  node_dbcontext["Database context<br/>[AppDbContext.cs]"]
  node_postgres[("PostgreSQL")]
end

node_user(("Finance user"))

node_user -->|"uses"| node_app
node_app -->|"shows when signed out"| node_login
node_app -->|"selects"| node_clientsui
node_app -->|"selects"| node_chargesui
node_app -->|"selects"| node_dashboardui
node_login -->|"requests login"| node_http
node_clientsui -->|"requests clients"| node_http
node_chargesui -->|"requests charges and clients"| node_http
node_dashboardui -->|"requests metrics"| node_http
node_chargesui -->|"formats amounts"| node_format
node_http -.->|"sends REST requests"| node_auth
node_http -.->|"sends REST requests"| node_clientapi
node_http -.->|"sends REST requests"| node_chargeapi
node_http -.->|"sends REST requests"| node_metricsapi
node_clientapi -->|"uses repository"| node_clientrepo
node_chargeapi -->|"uses repository"| node_chargerepo
node_chargeapi -->|"invokes payment service"| node_payment
node_metricsapi -->|"queries metrics"| node_dbcontext
node_clientrepo -->|"reads and writes"| node_dbcontext
node_chargerepo -->|"reads and writes"| node_dbcontext
node_dbcontext -.->|"persists data"| node_postgres
node_clientrepo -->|"manages"| node_cliententity
node_chargerepo -->|"manages"| node_chargeentity
node_payment -->|"operates on"| node_chargeentity

click node_app "https://github.com/neto-santana-22/korpis/blob/main/frontend/src/App.tsx"
click node_login "https://github.com/neto-santana-22/korpis/blob/main/frontend/src/components/LoginView.tsx"
click node_clientsui "https://github.com/neto-santana-22/korpis/blob/main/frontend/src/components/ClientsManager.tsx"
click node_chargesui "https://github.com/neto-santana-22/korpis/blob/main/frontend/src/components/ChargesManager.tsx"
click node_dashboardui "https://github.com/neto-santana-22/korpis/blob/main/frontend/src/components/DashboardView.tsx"
click node_http "https://github.com/neto-santana-22/korpis/blob/main/frontend/src/services/api.ts"
click node_format "https://github.com/neto-santana-22/korpis/blob/main/frontend/src/utils/formatters.ts"
click node_auth "https://github.com/neto-santana-22/korpis/blob/main/backend/Controllers/AuthController.cs"
click node_clientapi "https://github.com/neto-santana-22/korpis/blob/main/backend/Controllers/ClientsController.cs"
click node_chargeapi "https://github.com/neto-santana-22/korpis/blob/main/backend/Controllers/ChargesController.cs"
click node_metricsapi "https://github.com/neto-santana-22/korpis/blob/main/backend/Controllers/DashboardController.cs"
click node_clientrepo "https://github.com/neto-santana-22/korpis/blob/main/backend/Infrastructure/Repositories/ClientRepository.cs"
click node_chargerepo "https://github.com/neto-santana-22/korpis/blob/main/backend/Infrastructure/Repositories/ChargeRepository.cs"
click node_payment "https://github.com/neto-santana-22/korpis/blob/main/backend/Infrastructure/Services/MockPaymentService.cs"
click node_cliententity "https://github.com/neto-santana-22/korpis/blob/main/backend/Domain/Entities/Client.cs"
click node_chargeentity "https://github.com/neto-santana-22/korpis/blob/main/backend/Domain/Entities/Charge.cs"
click node_dbcontext "https://github.com/neto-santana-22/korpis/blob/main/backend/Infrastructure/Data/AppDbContext.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_login,node_clientsui,node_chargesui,node_dashboardui,node_http,node_format,node_user toneBlue
class node_auth,node_clientapi,node_chargeapi,node_metricsapi toneAmber
class node_clientrepo,node_chargerepo,node_payment,node_cliententity,node_chargeentity toneMint
class node_dbcontext,node_postgres toneRose
```

## Components

### Web application

- [App navigation](https://github.com/neto-santana-22/korpis/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Login view](https://github.com/neto-santana-22/korpis/blob/main/frontend/src/components/LoginView.tsx): `frontend/src/components/LoginView.tsx`
- [Client manager](https://github.com/neto-santana-22/korpis/blob/main/frontend/src/components/ClientsManager.tsx): `frontend/src/components/ClientsManager.tsx`
- [Charge manager](https://github.com/neto-santana-22/korpis/blob/main/frontend/src/components/ChargesManager.tsx): `frontend/src/components/ChargesManager.tsx`
- [Dashboard view](https://github.com/neto-santana-22/korpis/blob/main/frontend/src/components/DashboardView.tsx): `frontend/src/components/DashboardView.tsx`
- [HTTP client](https://github.com/neto-santana-22/korpis/blob/main/frontend/src/services/api.ts): `frontend/src/services/api.ts`
- [Currency formatters](https://github.com/neto-santana-22/korpis/blob/main/frontend/src/utils/formatters.ts): `frontend/src/utils/formatters.ts`

### API workflows

- [Authentication endpoint](https://github.com/neto-santana-22/korpis/blob/main/backend/Controllers/AuthController.cs): `backend/Controllers/AuthController.cs`
- [Client endpoints](https://github.com/neto-santana-22/korpis/blob/main/backend/Controllers/ClientsController.cs): `backend/Controllers/ClientsController.cs`
- [Charge endpoints](https://github.com/neto-santana-22/korpis/blob/main/backend/Controllers/ChargesController.cs): `backend/Controllers/ChargesController.cs`
- [Dashboard endpoint](https://github.com/neto-santana-22/korpis/blob/main/backend/Controllers/DashboardController.cs): `backend/Controllers/DashboardController.cs`

### Domain and services

- [Client repository](https://github.com/neto-santana-22/korpis/blob/main/backend/Infrastructure/Repositories/ClientRepository.cs): `backend/Infrastructure/Repositories/ClientRepository.cs`
- [Charge repository](https://github.com/neto-santana-22/korpis/blob/main/backend/Infrastructure/Repositories/ChargeRepository.cs): `backend/Infrastructure/Repositories/ChargeRepository.cs`
- [Mock Pix service](https://github.com/neto-santana-22/korpis/blob/main/backend/Infrastructure/Services/MockPaymentService.cs): `backend/Infrastructure/Services/MockPaymentService.cs`
- [Client records](https://github.com/neto-santana-22/korpis/blob/main/backend/Domain/Entities/Client.cs): `backend/Domain/Entities/Client.cs`
- [Charge records](https://github.com/neto-santana-22/korpis/blob/main/backend/Domain/Entities/Charge.cs): `backend/Domain/Entities/Charge.cs`

### Persistence

- [Database context](https://github.com/neto-santana-22/korpis/blob/main/backend/Infrastructure/Data/AppDbContext.cs): `backend/Infrastructure/Data/AppDbContext.cs`
- **PostgreSQL**

### Other components

- **Finance user**

## Connections

- Finance user → App navigation: uses (evidence: `README.md`)
- App navigation → Login view: shows when signed out (evidence: `frontend/src/App.tsx`)
- App navigation → Client manager: selects (evidence: `frontend/src/App.tsx`)
- App navigation → Charge manager: selects (evidence: `frontend/src/App.tsx`)
- App navigation → Dashboard view: selects (evidence: `frontend/src/App.tsx`)
- Login view → HTTP client: requests login (evidence: `README.md`)
- Client manager → HTTP client: requests clients (evidence: `frontend/src/components/ClientsManager.tsx`)
- Charge manager → HTTP client: requests charges and clients (evidence: `frontend/src/components/ChargesManager.tsx`)
- Dashboard view → HTTP client: requests metrics (evidence: `frontend/src/components/DashboardView.tsx`)
- Charge manager → Currency formatters: formats amounts (evidence: `frontend/src/components/ChargesManager.tsx`)
- HTTP client → Authentication endpoint: sends REST requests (evidence: `README.md`)
- HTTP client → Client endpoints: sends REST requests (evidence: `README.md`)
- HTTP client → Charge endpoints: sends REST requests (evidence: `README.md`)
- HTTP client → Dashboard endpoint: sends REST requests (evidence: `README.md`)
- Client endpoints → Client repository: uses repository (evidence: `backend/Controllers/ClientsController.cs`)
- Charge endpoints → Charge repository: uses repository (evidence: `backend/Controllers/ChargesController.cs`)
- Charge endpoints → Mock Pix service: invokes payment service (evidence: `backend/Controllers/ChargesController.cs`)
- Dashboard endpoint → Database context: queries metrics (evidence: `backend/Controllers/DashboardController.cs`)
- Client repository → Database context: reads and writes (evidence: `backend/Infrastructure/Repositories/ClientRepository.cs`)
- Charge repository → Database context: reads and writes (evidence: `backend/Infrastructure/Repositories/ChargeRepository.cs`)
- Database context → PostgreSQL: persists data (evidence: `README.md`)
- Client repository → Client records: manages (evidence: `backend/Infrastructure/Repositories/ClientRepository.cs`)
- Charge repository → Charge records: manages (evidence: `backend/Infrastructure/Repositories/ChargeRepository.cs`)
- Mock Pix service → Charge records: operates on (evidence: `backend/Infrastructure/Services/MockPaymentService.cs`)
