# shubhamg2004/fintrack-personal-finance-tracker-nextjs architecture

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

- Interactive diagram: https://gitdiagram.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs
- Repository: https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs

## Overview

FinTrack is a personal-finance web app for recording expenses and income, managing budgets, and viewing spending summaries and financial-health insights. The main transaction path is dashboard entry to the transactions API, then validation, persistence, anomaly checking, and—when flagged—alert creation; dashboard clients can also query stored data and insights. The README describes Gemini categorization and exports, but sampled code shows local anomaly heuristics and a CSV export; those documented capabilities are represented cautiously. Unsampled page and database wiring is omitted where it cannot be established from excerpts.

Main entry points: [`app/(routes)/dashboard/page.jsx`](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/(routes)/dashboard/page.jsx) (Dashboard), [`lib/services/transaction.service.js`](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/services/transaction.service.js) (Transaction service), [`lib/db/queries.js`](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/db/queries.js) (Database queries), [`app/api/transactions/route.js`](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/api/transactions/route.js) (Transaction API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_auth["Sign-in / sign-up<br/>[page.jsx]"]
  node_landing["Landing page<br/>[page.js]"]
  node_dashboard["Dashboard<br/>[page.jsx]"]
  node_dashboard_views["Charts and summaries<br/>[ExpenseChart.jsx]"]
  node_health_card["Financial health"]
end

subgraph group_finance["Finance management"]
  node_expense_ui["Expense tracking<br/>[page.jsx]"]
  node_budget_ui["Budget management<br/>[page.jsx]"]
  node_income_ui["Income management<br/>[page.jsx]"]
end

subgraph group_services["API and services"]
  node_transaction_api["Transaction API<br/>[route.js]"]
  node_transaction_service["Transaction service"]
  node_validator["Payload validation"]
  node_anomaly["Anomaly detection<br/>[ai.service.js]"]
  node_insights_api["Insights API<br/>[route.js]"]
  node_insights_service["Financial insights<br/>[insight.service.js]"]
  node_alerts_api["Alerts API<br/>[route.js]"]
  node_alert_service["Alert service<br/>[alert.service.js]"]
end

subgraph group_data["Data and alerts"]
  node_queries["Database queries<br/>[queries.js]"]
  node_schema["Finance schema<br/>[schema.jsx]"]
  node_alert_history[("Alert history<br/>[alert.service.js]")]
end

node_person(("Finance user"))
node_postgres[("Neon PostgreSQL")]
node_clerk["Clerk auth"]
node_gemini["Gemini AI"]

node_person -->|"opens"| node_landing
node_landing -->|"starts account"| node_auth
node_person -->|"signs in"| node_auth
node_auth -->|"authenticates"| node_clerk
node_person -->|"views finances"| node_dashboard
node_dashboard -->|"opens expenses"| node_expense_ui
node_dashboard -->|"opens budgets"| node_budget_ui
node_dashboard -->|"opens income"| node_income_ui
node_expense_ui -->|"submits changes"| node_transaction_api
node_transaction_api -->|"dispatches writes"| node_transaction_service
node_transaction_api -->|"loads transactions"| node_queries
node_transaction_service -->|"validates input"| node_validator
node_transaction_service -->|"persists changes"| node_queries
node_transaction_service -->|"checks anomaly"| node_anomaly
node_transaction_service -->|"creates alert"| node_alert_service
node_alert_service -->|"stores alerts"| node_alert_history
node_alerts_api -->|"reads history"| node_alert_service
node_health_card -->|"requests insights"| node_insights_api
node_insights_api -->|"dispatches query"| node_insights_service
node_insights_service -->|"loads finance data"| node_queries
node_dashboard -->|"renders summaries"| node_dashboard_views
node_queries -->|"reads and writes"| node_postgres
node_queries -->|"uses definitions"| node_schema
node_anomaly -.->|"categorization described"| node_gemini

click node_auth "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/(auth)/sign-in/%5B%5B...sign-in%5D%5D/page.jsx"
click node_landing "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/page.js"
click node_dashboard "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/(routes)/dashboard/page.jsx"
click node_expense_ui "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/(routes)/dashboard/expenses/page.jsx"
click node_budget_ui "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/(routes)/dashboard/budgets/page.jsx"
click node_income_ui "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/(routes)/dashboard/incomes/page.jsx"
click node_dashboard_views "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/components/dashboard/ExpenseChart.jsx"
click node_health_card "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/components/dashboard/FinancialHealthCard.jsx"
click node_transaction_api "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/api/transactions/route.js"
click node_transaction_service "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/services/transaction.service.js"
click node_validator "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/validators/transaction.validator.js"
click node_anomaly "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/services/ai.service.js"
click node_insights_api "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/api/insights/route.js"
click node_insights_service "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/services/insight.service.js"
click node_alerts_api "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/api/alerts/route.js"
click node_alert_service "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/services/alert.service.js"
click node_queries "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/db/queries.js"
click node_schema "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/utils/schema.jsx"
click node_alert_history "https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/services/alert.service.js"

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_auth,node_landing,node_dashboard,node_dashboard_views,node_health_card,node_person toneBlue
class node_expense_ui,node_budget_ui,node_income_ui,node_postgres toneAmber
class node_transaction_api,node_transaction_service,node_validator,node_anomaly,node_insights_api,node_insights_service,node_alerts_api,node_alert_service toneMint
class node_queries,node_schema,node_alert_history toneRose
class node_clerk,node_gemini toneIndigo
```

## Components

### User experience

- [Sign-in / sign-up](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/(auth)/sign-in/%5B%5B...sign-in%5D%5D/page.jsx): `app/(auth)/sign-in/[[...sign-in]]/page.jsx`
- [Landing page](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/page.js): `app/page.js`
- [Dashboard](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/(routes)/dashboard/page.jsx): `app/(routes)/dashboard/page.jsx`
- [Charts and summaries](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/components/dashboard/ExpenseChart.jsx): `components/dashboard/ExpenseChart.jsx`
- [Financial health](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/components/dashboard/FinancialHealthCard.jsx): `components/dashboard/FinancialHealthCard.jsx`

### Finance management

- [Expense tracking](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/(routes)/dashboard/expenses/page.jsx): `app/(routes)/dashboard/expenses/page.jsx`
- [Budget management](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/(routes)/dashboard/budgets/page.jsx): `app/(routes)/dashboard/budgets/page.jsx`
- [Income management](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/(routes)/dashboard/incomes/page.jsx): `app/(routes)/dashboard/incomes/page.jsx`

### API and services

- [Transaction API](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/api/transactions/route.js): `app/api/transactions/route.js`
- [Transaction service](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/services/transaction.service.js): `lib/services/transaction.service.js`
- [Payload validation](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/validators/transaction.validator.js): `lib/validators/transaction.validator.js`
- [Anomaly detection](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/services/ai.service.js): `lib/services/ai.service.js`
- [Insights API](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/api/insights/route.js): `app/api/insights/route.js`
- [Financial insights](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/services/insight.service.js): `lib/services/insight.service.js`
- [Alerts API](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/app/api/alerts/route.js): `app/api/alerts/route.js`
- [Alert service](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/services/alert.service.js): `lib/services/alert.service.js`

### Data and alerts

- [Database queries](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/db/queries.js): `lib/db/queries.js`
- [Finance schema](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/utils/schema.jsx): `utils/schema.jsx`
- [Alert history](https://github.com/shubhamg2004/fintrack-personal-finance-tracker-nextjs/blob/master/lib/services/alert.service.js): `lib/services/alert.service.js`

### Other components

- **Finance user**
- **Neon PostgreSQL**
- **Clerk auth**
- **Gemini AI**

## Connections

- Finance user → Landing page: opens
- Landing page → Sign-in / sign-up: starts account
- Finance user → Sign-in / sign-up: signs in
- Sign-in / sign-up → Clerk auth: authenticates
- Finance user → Dashboard: views finances
- Dashboard → Expense tracking: opens expenses
- Dashboard → Budget management: opens budgets
- Dashboard → Income management: opens income
- Expense tracking → Transaction API: submits changes
- Transaction API → Transaction service: dispatches writes
- Transaction API → Database queries: loads transactions
- Transaction service → Payload validation: validates input
- Transaction service → Database queries: persists changes
- Transaction service → Anomaly detection: checks anomaly
- Transaction service → Alert service: creates alert
- Alert service → Alert history: stores alerts
- Alerts API → Alert service: reads history
- Financial health → Insights API: requests insights
- Insights API → Financial insights: dispatches query
- Financial insights → Database queries: loads finance data
- Dashboard → Charts and summaries: renders summaries
- Database queries → Neon PostgreSQL: reads and writes
- Database queries → Finance schema: uses definitions
- Anomaly detection → Gemini AI: categorization described
