# mad-dcoder/financas.api architecture

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

- Interactive diagram: https://gitdiagram.com/mad-dcoder/financas.api
- Repository: https://github.com/mad-dcoder/financas.api

## Overview

Financas is a personal-finance web app backed by a .NET REST API and PostgreSQL. A signed-in user manages transactions and cards through the dashboard: React loads finance data, derives dashboard summaries and charts, and sends changes through Axios to API endpoints that persist them. Other major capabilities include JWT login, category management, financial limits/goals, and profile/settings pages. The graph follows documented routes and sampled calls; unsampled UI and API wiring is represented only where the README supports it.

Main entry points: [`Front-End/src/api/axios.js`](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/api/axios.js) (Axios API client), [`Financas.API/Data/AppDbContext.cs`](https://github.com/mad-dcoder/financas.api/blob/master/Financas.API/Data/AppDbContext.cs) (Entity Framework context), [`Front-End/src/pages/Dashboard.jsx`](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/pages/Dashboard.jsx) (Dashboard view), [`Front-End/src/pages/Login.jsx`](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/pages/Login.jsx) (Login and session)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["React application"]
  node_app["Routes and layout<br/>[App.jsx]"]
  node_login["Login and session<br/>[Login.jsx]"]
  node_auth["JWT session state<br/>[AuthContext.jsx]"]
  node_client["Axios API client<br/>[axios.js]"]
  node_finance["Shared finance state"]
  node_dashboard["Dashboard view<br/>[Dashboard.jsx]"]
  node_dashlogic["Dashboard calculations<br/>[useDashboard.js]"]
  node_transactions["Transaction entry and history"]
  node_charts["Category and spending charts<br/>[DonutChart.jsx]"]
  node_categoriesui["Category management"]
  node_limits["Limits and goals<br/>[LimitesMetas.jsx]"]
  node_profile["Profile and preferences<br/>[MeusDados.jsx]"]
end

subgraph group_api["REST API"]
  node_apiusers["User and JWT endpoints"]
  node_apitransactions["Transaction endpoints"]
  node_apicategories["Category endpoints"]
  node_apicards["Card endpoints"]
  node_apicuentas["Account endpoints"]
end

subgraph group_data["Finance data"]
  node_dbcontext["Entity Framework context<br/>[AppDbContext.cs]"]
  node_postgres[("PostgreSQL database")]
end

node_user(("User"))

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_login
node_user -->|"signs in"| node_login
node_login -->|"sends requests"| node_client
node_login -.->|"sets session"| node_auth
node_auth -->|"sets bearer token"| node_client
node_dashboard -->|"uses"| node_dashlogic
node_dashlogic -->|"reads state"| node_finance
node_dashlogic -->|"requests updates"| node_client
node_finance -->|"loads finance data"| node_client
node_dashboard -->|"renders"| node_transactions
node_dashboard -->|"renders"| node_charts
node_categoriesui -->|"uses API service"| node_client
node_limits -->|"requests data"| node_client
node_profile -->|"requests data"| node_client
node_client -->|"HTTP requests"| node_apiusers
node_client -->|"HTTP requests"| node_apitransactions
node_client -->|"HTTP requests"| node_apicategories
node_client -->|"HTTP requests"| node_apicards
node_client -.->|"HTTP requests"| node_apicuentas
node_apiusers -->|"reads and writes"| node_dbcontext
node_apitransactions -->|"reads and writes"| node_dbcontext
node_apicategories -->|"reads and writes"| node_dbcontext
node_apicards -->|"reads and writes"| node_dbcontext
node_apicuentas -->|"reads and writes"| node_dbcontext
node_dbcontext -->|"persists through EF"| node_postgres

click node_app "https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/App.jsx"
click node_login "https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/pages/Login.jsx"
click node_auth "https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/contexts/AuthContext.jsx"
click node_client "https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/api/axios.js"
click node_finance "https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/contexts/FinanceiroContext.jsx"
click node_dashboard "https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/pages/Dashboard.jsx"
click node_dashlogic "https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/hooks/useDashboard.js"
click node_transactions "https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/components/TransactionForm.jsx"
click node_charts "https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/components/DonutChart.jsx"
click node_categoriesui "https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/pages/GerenciarCategorias.jsx"
click node_limits "https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/pages/LimitesMetas.jsx"
click node_profile "https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/pages/MeusDados.jsx"
click node_apiusers "https://github.com/mad-dcoder/financas.api/blob/master/Financas.API/Controllers/UsuariosController.cs"
click node_apitransactions "https://github.com/mad-dcoder/financas.api/blob/master/Financas.API/Controllers/TransacoesController.cs"
click node_apicategories "https://github.com/mad-dcoder/financas.api/blob/master/Financas.API/Controllers/CategoriasController.cs"
click node_apicards "https://github.com/mad-dcoder/financas.api/blob/master/Financas.API/Controllers/CartoesController.cs"
click node_apicuentas "https://github.com/mad-dcoder/financas.api/blob/master/Financas.API/Controllers/ContasController.cs"
click node_dbcontext "https://github.com/mad-dcoder/financas.api/blob/master/Financas.API/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_auth,node_client,node_finance,node_dashboard,node_dashlogic,node_transactions,node_charts,node_categoriesui,node_limits,node_profile,node_user toneBlue
class node_apiusers,node_apitransactions,node_apicategories,node_apicards,node_apicuentas toneAmber
class node_dbcontext,node_postgres toneMint
```

## Components

### React application

- [Routes and layout](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/App.jsx): `Front-End/src/App.jsx`
- [Login and session](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/pages/Login.jsx): `Front-End/src/pages/Login.jsx`
- [JWT session state](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/contexts/AuthContext.jsx): `Front-End/src/contexts/AuthContext.jsx`
- [Axios API client](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/api/axios.js): `Front-End/src/api/axios.js`
- [Shared finance state](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/contexts/FinanceiroContext.jsx): `Front-End/src/contexts/FinanceiroContext.jsx`
- [Dashboard view](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/pages/Dashboard.jsx): `Front-End/src/pages/Dashboard.jsx`
- [Dashboard calculations](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/hooks/useDashboard.js): `Front-End/src/hooks/useDashboard.js`
- [Transaction entry and history](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/components/TransactionForm.jsx): `Front-End/src/components/TransactionForm.jsx`
- [Category and spending charts](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/components/DonutChart.jsx): `Front-End/src/components/DonutChart.jsx`
- [Category management](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/pages/GerenciarCategorias.jsx): `Front-End/src/pages/GerenciarCategorias.jsx`
- [Limits and goals](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/pages/LimitesMetas.jsx): `Front-End/src/pages/LimitesMetas.jsx`
- [Profile and preferences](https://github.com/mad-dcoder/financas.api/blob/master/Front-End/src/pages/MeusDados.jsx): `Front-End/src/pages/MeusDados.jsx`

### REST API

- [User and JWT endpoints](https://github.com/mad-dcoder/financas.api/blob/master/Financas.API/Controllers/UsuariosController.cs): `Financas.API/Controllers/UsuariosController.cs`
- [Transaction endpoints](https://github.com/mad-dcoder/financas.api/blob/master/Financas.API/Controllers/TransacoesController.cs): `Financas.API/Controllers/TransacoesController.cs`
- [Category endpoints](https://github.com/mad-dcoder/financas.api/blob/master/Financas.API/Controllers/CategoriasController.cs): `Financas.API/Controllers/CategoriasController.cs`
- [Card endpoints](https://github.com/mad-dcoder/financas.api/blob/master/Financas.API/Controllers/CartoesController.cs): `Financas.API/Controllers/CartoesController.cs`
- [Account endpoints](https://github.com/mad-dcoder/financas.api/blob/master/Financas.API/Controllers/ContasController.cs): `Financas.API/Controllers/ContasController.cs`

### Finance data

- [Entity Framework context](https://github.com/mad-dcoder/financas.api/blob/master/Financas.API/Data/AppDbContext.cs): `Financas.API/Data/AppDbContext.cs`
- **PostgreSQL database**

### Other components

- **User**

## Connections

- User → Routes and layout: uses
- Routes and layout → Dashboard view: routes to (evidence: `Front-End/src/App.jsx`)
- Routes and layout → Login and session: routes to (evidence: `Front-End/src/App.jsx`)
- User → Login and session: signs in
- Login and session → Axios API client: sends requests (evidence: `Front-End/src/pages/Login.jsx`)
- Login and session → JWT session state: sets session
- JWT session state → Axios API client: sets bearer token (evidence: `Front-End/src/contexts/AuthContext.jsx`)
- Dashboard view → Dashboard calculations: uses (evidence: `Front-End/src/pages/Dashboard.jsx`)
- Dashboard calculations → Shared finance state: reads state (evidence: `Front-End/src/hooks/useDashboard.js`)
- Dashboard calculations → Axios API client: requests updates (evidence: `Front-End/src/hooks/useDashboard.js`)
- Shared finance state → Axios API client: loads finance data (evidence: `Front-End/src/contexts/FinanceiroContext.jsx`)
- Dashboard view → Transaction entry and history: renders (evidence: `Front-End/src/pages/Dashboard.jsx`)
- Dashboard view → Category and spending charts: renders (evidence: `Front-End/src/pages/Dashboard.jsx`)
- Category management → Axios API client: uses API service (evidence: `Front-End/src/pages/GerenciarCategorias.jsx`)
- Limits and goals → Axios API client: requests data (evidence: `Front-End/src/pages/LimitesMetas.jsx`)
- Profile and preferences → Axios API client: requests data (evidence: `Front-End/src/pages/MeusDados.jsx`)
- Axios API client → User and JWT endpoints: HTTP requests
- Axios API client → Transaction endpoints: HTTP requests
- Axios API client → Category endpoints: HTTP requests
- Axios API client → Card endpoints: HTTP requests
- Axios API client → Account endpoints: HTTP requests
- User and JWT endpoints → Entity Framework context: reads and writes (evidence: `Financas.API/Controllers/UsuariosController.cs`)
- Transaction endpoints → Entity Framework context: reads and writes (evidence: `Financas.API/Controllers/TransacoesController.cs`)
- Category endpoints → Entity Framework context: reads and writes (evidence: `Financas.API/Controllers/CategoriasController.cs`)
- Card endpoints → Entity Framework context: reads and writes (evidence: `Financas.API/Controllers/CartoesController.cs`)
- Account endpoints → Entity Framework context: reads and writes (evidence: `Financas.API/Controllers/ContasController.cs`)
- Entity Framework context → PostgreSQL database: persists through EF
