# jilbertvasquez/budget-tracker architecture

> Architecture diagram of the GitHub repository jilbertvasquez/budget-tracker, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jilbertvasquez/budget-tracker
- Repository: https://github.com/jilbertvasquez/budget-tracker

## Overview

Budget Tracker is a full-stack personal-finance application: users sign in, enter and review financial records in an Angular UI, which communicates with an ASP.NET Core API backed by EF Core. The active API supports expenses, fixed expenses, savings, commissions, and user identity; frontend route guards and backend authorization protect role-specific areas. Budgets are documented and have backend service code, but their API mapping is commented out; period management is likewise present but currently unmapped. The tree and sampled excerpts support the main boundaries, but not every endpoint-to-service call.

Main entry points: [`budget-tracker-client/Program.cs`](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Program.cs) (API host), [`budget-tracker-client/Shared/DataContext.cs`](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Shared/DataContext.cs) (EF data context), [`budget-tracker-frontend/src/app/app.routes.ts`](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-frontend/src/app/app.routes.ts) (App routes), [`budget-tracker-client/Users/UsersEndpoints.cs`](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Users/UsersEndpoints.cs) (User endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Angular frontend"]
  node_routes["App routes<br/>[app.routes.ts]"]
  node_authui["Auth UI"]
  node_expenseui["Expense UI"]
  node_savingui["Savings UI"]
  node_commissionui["Commission UI"]
end

subgraph group_backend["ASP.NET API"]
  node_backend["API host<br/>[Program.cs]"]
end

subgraph group_domain["Finance domains"]
  node_expenseapi["Expense endpoints"]
  node_expensesvc["Expense services<br/>[ExpenseServices.cs]"]
  node_fixedapi["Fixed expense endpoints"]
  node_fixedsvc["Fixed expense services"]
  node_savingapi["Savings endpoints<br/>[SavingEndpoints.cs]"]
  node_savingsvc["Savings services<br/>[SavingServices.cs]"]
  node_commissionapi["Commission endpoints"]
  node_commissionsvc["Commission services"]
  node_budgetsvc["Budget services<br/>[BudgetServices.cs]"]
  node_periodsvc["Period services<br/>[PeriodServices.cs]"]
end

subgraph group_security["Identity and access"]
  node_usersapi["User endpoints<br/>[UsersEndpoints.cs]"]
  node_usersvc["User services<br/>[UserServices.cs]"]
  node_authz["Authorization policies"]
end

subgraph group_persistence["Data persistence"]
  node_db[("EF data context<br/>[DataContext.cs]")]
end

node_user(("User"))

node_user -->|"opens"| node_routes
node_routes -->|"initializes auth"| node_authui
node_routes -->|"routes"| node_expenseui
node_routes -->|"routes"| node_savingui
node_routes -->|"routes"| node_commissionui
node_authui -->|"checks identity"| node_usersapi
node_expenseui -->|"API requests"| node_backend
node_savingui -->|"API requests"| node_backend
node_commissionui -->|"API requests"| node_backend
node_backend -->|"maps endpoints"| node_usersapi
node_backend -->|"maps endpoints"| node_expenseapi
node_backend -->|"maps endpoints"| node_fixedapi
node_backend -->|"maps endpoints"| node_savingapi
node_backend -->|"maps endpoints"| node_commissionapi
node_backend -->|"enforces policies"| node_authz
node_usersapi -->|"dispatches"| node_usersvc
node_expenseapi -->|"dispatches"| node_expensesvc
node_fixedapi -->|"dispatches"| node_fixedsvc
node_savingapi -->|"dispatches"| node_savingsvc
node_commissionapi -->|"dispatches"| node_commissionsvc
node_usersvc -->|"reads/writes"| node_db
node_expensesvc -->|"reads/writes"| node_db
node_fixedsvc -->|"reads/writes"| node_db
node_savingsvc -->|"reads/writes"| node_db
node_commissionsvc -->|"reads/writes"| node_db
node_budgetsvc -->|"reads/writes"| node_db
node_periodsvc -->|"reads/writes"| node_db

click node_routes "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-frontend/src/app/app.routes.ts"
click node_authui "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-frontend/src/app/_services/app-auth.service.ts"
click node_expenseui "https://github.com/jilbertvasquez/budget-tracker/tree/main/budget-tracker-frontend/src/app/expenses"
click node_savingui "https://github.com/jilbertvasquez/budget-tracker/tree/main/budget-tracker-frontend/src/app/savings"
click node_commissionui "https://github.com/jilbertvasquez/budget-tracker/tree/main/budget-tracker-frontend/src/app/commissions"
click node_backend "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Program.cs"
click node_usersapi "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Users/UsersEndpoints.cs"
click node_usersvc "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Users/UserServices.cs"
click node_expenseapi "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Expenses/ExpenseEndpoints.cs"
click node_expensesvc "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Expenses/ExpenseServices.cs"
click node_fixedapi "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/FixedExpenses/FixedExpenseEndpoints.cs"
click node_fixedsvc "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/FixedExpenses/FixedExpenseServices.cs"
click node_savingapi "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Savings/SavingEndpoints.cs"
click node_savingsvc "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Savings/SavingServices.cs"
click node_commissionapi "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Commissions/CommissionEndpoints.cs"
click node_commissionsvc "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Commissions/CommissionServices.cs"
click node_budgetsvc "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Budget/BudgetServices.cs"
click node_periodsvc "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Period/PeriodServices.cs"
click node_authz "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Configurations/AuthorizationPolicy/HasPermissionHandler.cs"
click node_db "https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Shared/DataContext.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_routes,node_authui,node_expenseui,node_savingui,node_commissionui,node_user toneBlue
class node_backend toneAmber
class node_expenseapi,node_expensesvc,node_fixedapi,node_fixedsvc,node_savingapi,node_savingsvc,node_commissionapi,node_commissionsvc,node_budgetsvc,node_periodsvc toneMint
class node_usersapi,node_usersvc,node_authz toneRose
class node_db toneIndigo
```

## Components

### Angular frontend

- [App routes](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-frontend/src/app/app.routes.ts): `budget-tracker-frontend/src/app/app.routes.ts`
- [Auth UI](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-frontend/src/app/_services/app-auth.service.ts): `budget-tracker-frontend/src/app/_services/app-auth.service.ts`
- [Expense UI](https://github.com/jilbertvasquez/budget-tracker/tree/main/budget-tracker-frontend/src/app/expenses): `budget-tracker-frontend/src/app/expenses`
- [Savings UI](https://github.com/jilbertvasquez/budget-tracker/tree/main/budget-tracker-frontend/src/app/savings): `budget-tracker-frontend/src/app/savings`
- [Commission UI](https://github.com/jilbertvasquez/budget-tracker/tree/main/budget-tracker-frontend/src/app/commissions): `budget-tracker-frontend/src/app/commissions`

### ASP.NET API

- [API host](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Program.cs): `budget-tracker-client/Program.cs`

### Finance domains

- [Expense endpoints](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Expenses/ExpenseEndpoints.cs): `budget-tracker-client/Expenses/ExpenseEndpoints.cs`
- [Expense services](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Expenses/ExpenseServices.cs): `budget-tracker-client/Expenses/ExpenseServices.cs`
- [Fixed expense endpoints](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/FixedExpenses/FixedExpenseEndpoints.cs): `budget-tracker-client/FixedExpenses/FixedExpenseEndpoints.cs`
- [Fixed expense services](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/FixedExpenses/FixedExpenseServices.cs): `budget-tracker-client/FixedExpenses/FixedExpenseServices.cs`
- [Savings endpoints](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Savings/SavingEndpoints.cs): `budget-tracker-client/Savings/SavingEndpoints.cs`
- [Savings services](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Savings/SavingServices.cs): `budget-tracker-client/Savings/SavingServices.cs`
- [Commission endpoints](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Commissions/CommissionEndpoints.cs): `budget-tracker-client/Commissions/CommissionEndpoints.cs`
- [Commission services](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Commissions/CommissionServices.cs): `budget-tracker-client/Commissions/CommissionServices.cs`
- [Budget services](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Budget/BudgetServices.cs): `budget-tracker-client/Budget/BudgetServices.cs`
- [Period services](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Period/PeriodServices.cs): `budget-tracker-client/Period/PeriodServices.cs`

### Identity and access

- [User endpoints](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Users/UsersEndpoints.cs): `budget-tracker-client/Users/UsersEndpoints.cs`
- [User services](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Users/UserServices.cs): `budget-tracker-client/Users/UserServices.cs`
- [Authorization policies](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Configurations/AuthorizationPolicy/HasPermissionHandler.cs): `budget-tracker-client/Configurations/AuthorizationPolicy/HasPermissionHandler.cs`

### Data persistence

- [EF data context](https://github.com/jilbertvasquez/budget-tracker/blob/main/budget-tracker-client/Shared/DataContext.cs): `budget-tracker-client/Shared/DataContext.cs`

### Other components

- **User**

## Connections

- User → App routes: opens
- App routes → Auth UI: initializes auth
- App routes → Expense UI: routes
- App routes → Savings UI: routes
- App routes → Commission UI: routes
- Auth UI → User endpoints: checks identity
- Expense UI → API host: API requests
- Savings UI → API host: API requests
- Commission UI → API host: API requests
- API host → User endpoints: maps endpoints
- API host → Expense endpoints: maps endpoints
- API host → Fixed expense endpoints: maps endpoints
- API host → Savings endpoints: maps endpoints
- API host → Commission endpoints: maps endpoints
- API host → Authorization policies: enforces policies
- User endpoints → User services: dispatches
- Expense endpoints → Expense services: dispatches
- Fixed expense endpoints → Fixed expense services: dispatches
- Savings endpoints → Savings services: dispatches
- Commission endpoints → Commission services: dispatches
- User services → EF data context: reads/writes
- Expense services → EF data context: reads/writes
- Fixed expense services → EF data context: reads/writes
- Savings services → EF data context: reads/writes
- Commission services → EF data context: reads/writes
- Budget services → EF data context: reads/writes
- Period services → EF data context: reads/writes
