# adityagangwar2674/finance-tracker architecture

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

- Interactive diagram: https://gitdiagram.com/adityagangwar2674/finance-tracker
- Repository: https://github.com/adityagangwar2674/finance-tracker

## Overview

Finesse Finance is a personal-finance tracker. Users register or sign in, then manage transactions and monthly category budgets; the dashboard loads those records, computes spending summaries, and presents charts and budget comparisons. API routes own authenticated record operations, while shared auth utilities validate sessions and MongoDB models persist users, transactions, and budgets. The README describes additional analytics and goal capabilities, but the sampled source does not establish their full implementation or wiring.

Main entry points: [`app/page.tsx`](https://github.com/adityagangwar2674/finance-tracker/blob/main/app/page.tsx) (Dashboard), [`lib/db.ts`](https://github.com/adityagangwar2674/finance-tracker/blob/main/lib/db.ts) (Database connection), [`lib/auth.ts`](https://github.com/adityagangwar2674/finance-tracker/blob/main/lib/auth.ts) (Auth utilities), [`app/api/transactions/route.ts`](https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/transactions/route.ts) (Transaction API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Account access"]
  node_register_page["Registration page<br/>[page.tsx]"]
  node_login_page["Login page<br/>[page.tsx]"]
  node_register_api["Register API<br/>[route.ts]"]
  node_login_api["Login API<br/>[route.ts]"]
  node_logout_api["Logout API<br/>[route.ts]"]
  node_session_api["Session API<br/>[route.ts]"]
  node_auth["Auth utilities<br/>[auth.ts]"]
end

subgraph group_dashboard["Dashboard and analytics"]
  node_dashboard_page["Dashboard<br/>[page.tsx]"]
  node_financial_chart["Spending trends<br/>[FinancialChart.tsx]"]
  node_category_charts["Category breakdown"]
  node_budget_chart["Budget comparison"]
end

subgraph group_records["Financial records"]
  node_transaction_form["Transaction entry"]
  node_transaction_list["Transaction history"]
  node_transaction_api["Transaction API<br/>[route.ts]"]
  node_transaction_item_api["Transaction item API<br/>[route.ts]"]
  node_budget_form["Budget planner<br/>[BudgetForm.tsx]"]
  node_budget_api["Budget API<br/>[route.ts]"]
end

subgraph group_storage["Persistence"]
  node_db_connect["Database connection<br/>[db.ts]"]
  node_user_model["User model<br/>[User.ts]"]
  node_transaction_model["Transaction model<br/>[Transaction.ts]"]
  node_budget_model["Budget model<br/>[Budget.ts]"]
  node_mongodb[("MongoDB")]
end

node_user(("Finance user"))

node_user -->|"enters details"| node_register_page
node_user -->|"submits credentials"| node_login_page
node_register_page -->|"posts registration"| node_register_api
node_login_page -->|"posts credentials"| node_login_api
node_register_api -->|"connects"| node_db_connect
node_register_api -->|"checks and creates"| node_user_model
node_register_api -->|"hashes and signs"| node_auth
node_login_api -->|"connects"| node_db_connect
node_login_api -->|"finds account"| node_user_model
node_login_api -->|"checks and signs"| node_auth
node_logout_api -->|"clears session cookie"| node_user
node_session_api -->|"gets session"| node_auth
node_user -->|"opens dashboard"| node_dashboard_page
node_dashboard_page -->|"checks session"| node_session_api
node_dashboard_page -->|"loads transactions"| node_transaction_api
node_dashboard_page -->|"loads budgets"| node_budget_api
node_dashboard_page -->|"renders"| node_transaction_form
node_dashboard_page -->|"renders"| node_transaction_list
node_dashboard_page -->|"renders"| node_budget_form
node_dashboard_page -->|"passes spending data"| node_financial_chart
node_dashboard_page -->|"passes category data"| node_category_charts
node_dashboard_page -->|"passes comparison data"| node_budget_chart
node_transaction_form -->|"creates transaction"| node_transaction_api
node_transaction_list -->|"edits or deletes"| node_transaction_item_api
node_budget_form -->|"creates or updates"| node_budget_api
node_transaction_api -->|"gets user identity"| node_auth
node_transaction_item_api -->|"gets user identity"| node_auth
node_budget_api -->|"gets user identity"| node_auth
node_transaction_api -->|"connects"| node_db_connect
node_transaction_item_api -->|"connects"| node_db_connect
node_budget_api -->|"connects"| node_db_connect
node_transaction_api -->|"reads and writes"| node_transaction_model
node_transaction_item_api -->|"updates and deletes"| node_transaction_model
node_budget_api -->|"reads and writes"| node_budget_model
node_db_connect -->|"connects"| node_mongodb
node_user_model -->|"persists users"| node_mongodb
node_transaction_model -->|"persists transactions"| node_mongodb
node_budget_model -->|"persists budgets"| node_mongodb

click node_register_page "https://github.com/adityagangwar2674/finance-tracker/blob/main/app/register/page.tsx"
click node_login_page "https://github.com/adityagangwar2674/finance-tracker/blob/main/app/login/page.tsx"
click node_register_api "https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/auth/register/route.ts"
click node_login_api "https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/auth/login/route.ts"
click node_logout_api "https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/auth/logout/route.ts"
click node_session_api "https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/auth/me/route.ts"
click node_auth "https://github.com/adityagangwar2674/finance-tracker/blob/main/lib/auth.ts"
click node_dashboard_page "https://github.com/adityagangwar2674/finance-tracker/blob/main/app/page.tsx"
click node_financial_chart "https://github.com/adityagangwar2674/finance-tracker/blob/main/components/FinancialChart.tsx"
click node_category_charts "https://github.com/adityagangwar2674/finance-tracker/blob/main/components/CategoryPieCharts.tsx"
click node_budget_chart "https://github.com/adityagangwar2674/finance-tracker/blob/main/components/BudgetVsActualChart.tsx"
click node_transaction_form "https://github.com/adityagangwar2674/finance-tracker/blob/main/components/TransactionForm.tsx"
click node_transaction_list "https://github.com/adityagangwar2674/finance-tracker/blob/main/components/TransactionList.tsx"
click node_transaction_api "https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/transactions/route.ts"
click node_transaction_item_api "https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/transactions/%5Bid%5D/route.ts"
click node_budget_form "https://github.com/adityagangwar2674/finance-tracker/blob/main/components/BudgetForm.tsx"
click node_budget_api "https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/budget/route.ts"
click node_db_connect "https://github.com/adityagangwar2674/finance-tracker/blob/main/lib/db.ts"
click node_user_model "https://github.com/adityagangwar2674/finance-tracker/blob/main/models/User.ts"
click node_transaction_model "https://github.com/adityagangwar2674/finance-tracker/blob/main/models/Transaction.ts"
click node_budget_model "https://github.com/adityagangwar2674/finance-tracker/blob/main/models/Budget.ts"

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_register_page,node_login_page,node_register_api,node_login_api,node_logout_api,node_session_api,node_auth,node_user toneBlue
class node_dashboard_page,node_financial_chart,node_category_charts,node_budget_chart toneAmber
class node_transaction_form,node_transaction_list,node_transaction_api,node_transaction_item_api,node_budget_form,node_budget_api toneMint
class node_db_connect,node_user_model,node_transaction_model,node_budget_model,node_mongodb toneRose
```

## Components

### Account access

- [Registration page](https://github.com/adityagangwar2674/finance-tracker/blob/main/app/register/page.tsx): `app/register/page.tsx`
- [Login page](https://github.com/adityagangwar2674/finance-tracker/blob/main/app/login/page.tsx): `app/login/page.tsx`
- [Register API](https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/auth/register/route.ts): `app/api/auth/register/route.ts`
- [Login API](https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/auth/login/route.ts): `app/api/auth/login/route.ts`
- [Logout API](https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/auth/logout/route.ts): `app/api/auth/logout/route.ts`
- [Session API](https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/auth/me/route.ts): `app/api/auth/me/route.ts`
- [Auth utilities](https://github.com/adityagangwar2674/finance-tracker/blob/main/lib/auth.ts): `lib/auth.ts`

### Dashboard and analytics

- [Dashboard](https://github.com/adityagangwar2674/finance-tracker/blob/main/app/page.tsx): `app/page.tsx`
- [Spending trends](https://github.com/adityagangwar2674/finance-tracker/blob/main/components/FinancialChart.tsx): `components/FinancialChart.tsx`
- [Category breakdown](https://github.com/adityagangwar2674/finance-tracker/blob/main/components/CategoryPieCharts.tsx): `components/CategoryPieCharts.tsx`
- [Budget comparison](https://github.com/adityagangwar2674/finance-tracker/blob/main/components/BudgetVsActualChart.tsx): `components/BudgetVsActualChart.tsx`

### Financial records

- [Transaction entry](https://github.com/adityagangwar2674/finance-tracker/blob/main/components/TransactionForm.tsx): `components/TransactionForm.tsx`
- [Transaction history](https://github.com/adityagangwar2674/finance-tracker/blob/main/components/TransactionList.tsx): `components/TransactionList.tsx`
- [Transaction API](https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/transactions/route.ts): `app/api/transactions/route.ts`
- [Transaction item API](https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/transactions/%5Bid%5D/route.ts): `app/api/transactions/[id]/route.ts`
- [Budget planner](https://github.com/adityagangwar2674/finance-tracker/blob/main/components/BudgetForm.tsx): `components/BudgetForm.tsx`
- [Budget API](https://github.com/adityagangwar2674/finance-tracker/blob/main/app/api/budget/route.ts): `app/api/budget/route.ts`

### Persistence

- [Database connection](https://github.com/adityagangwar2674/finance-tracker/blob/main/lib/db.ts): `lib/db.ts`
- [User model](https://github.com/adityagangwar2674/finance-tracker/blob/main/models/User.ts): `models/User.ts`
- [Transaction model](https://github.com/adityagangwar2674/finance-tracker/blob/main/models/Transaction.ts): `models/Transaction.ts`
- [Budget model](https://github.com/adityagangwar2674/finance-tracker/blob/main/models/Budget.ts): `models/Budget.ts`
- **MongoDB**

### Other components

- **Finance user**

## Connections

- Finance user → Registration page: enters details
- Finance user → Login page: submits credentials
- Registration page → Register API: posts registration
- Login page → Login API: posts credentials
- Register API → Database connection: connects
- Register API → User model: checks and creates
- Register API → Auth utilities: hashes and signs
- Login API → Database connection: connects
- Login API → User model: finds account
- Login API → Auth utilities: checks and signs
- Logout API → Finance user: clears session cookie
- Session API → Auth utilities: gets session
- Finance user → Dashboard: opens dashboard
- Dashboard → Session API: checks session
- Dashboard → Transaction API: loads transactions
- Dashboard → Budget API: loads budgets
- Dashboard → Transaction entry: renders
- Dashboard → Transaction history: renders
- Dashboard → Budget planner: renders
- Dashboard → Spending trends: passes spending data
- Dashboard → Category breakdown: passes category data
- Dashboard → Budget comparison: passes comparison data
- Transaction entry → Transaction API: creates transaction
- Transaction history → Transaction item API: edits or deletes
- Budget planner → Budget API: creates or updates
- Transaction API → Auth utilities: gets user identity
- Transaction item API → Auth utilities: gets user identity
- Budget API → Auth utilities: gets user identity
- Transaction API → Database connection: connects
- Transaction item API → Database connection: connects
- Budget API → Database connection: connects
- Transaction API → Transaction model: reads and writes
- Transaction item API → Transaction model: updates and deletes
- Budget API → Budget model: reads and writes
- Database connection → MongoDB: connects
- User model → MongoDB: persists users
- Transaction model → MongoDB: persists transactions
- Budget model → MongoDB: persists budgets
