# sejpalvatsal456/goodbudget-backend architecture

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

- Interactive diagram: https://gitdiagram.com/sejpalvatsal456/goodbudget-backend
- Repository: https://github.com/sejpalvatsal456/goodbudget-backend

## Overview

Good Budget Backend API is an Express REST service for personal-finance users. Its principal workflow is an HTTP request entering a mounted route, passing authentication where required, reaching a domain controller that validates input and queries PostgreSQL, then returning JSON. Domain areas include identity and profile management, accounts, categories, transactions (including balance updates), and date/category/account summaries. The excerpts establish route registration, several route-to-controller bindings, validation and database usage; some route/controller wiring and transaction behavior are only documented, so uncertain links are omitted.

Main entry points: [`src/index.ts`](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/index.ts) (Express App), [`src/lib/pgInit.ts`](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/lib/pgInit.ts) (PostgreSQL Pool), [`src/middlewares/authMidddleware.ts`](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/middlewares/authMidddleware.ts) (JWT Middleware), [`src/lib/validations.ts`](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/lib/validations.ts) (Input Validation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_http["HTTP API"]
  node_app["Express App<br/>[index.ts]"]
  node_health["Health Check<br/>[index.ts]"]
  node_auth_routes["Auth Routes<br/>[authRoute.ts]"]
  node_user_routes["User Routes<br/>[usersRoute.ts]"]
  node_account_routes["Account Routes<br/>[accountsRoute.ts]"]
  node_category_routes["Category Routes<br/>[categoryRoute.ts]"]
  node_transaction_routes["Transaction Routes"]
  node_summary_routes["Summary Routes<br/>[summaryRoutes.ts]"]
end

subgraph group_identity["Identity and Access"]
  node_auth["Authentication<br/>[authController.ts]"]
  node_users["User Profiles<br/>[usersController.ts]"]
  node_auth_middleware["JWT Middleware<br/>[authMidddleware.ts]"]
end

subgraph group_finance["Finance Domains"]
  node_accounts["Account Management"]
  node_categories["Category Management"]
  node_transactions["Transactions"]
  node_summaries["Summary Reporting"]
end

subgraph group_infra["Shared Services"]
  node_validation["Input Validation<br/>[validations.ts]"]
  node_pool["PostgreSQL Pool<br/>[pgInit.ts]"]
  node_dbtest["Database Check"]
end

node_client(("API Client"))
node_database[("PostgreSQL")]

node_client -->|"sends request"| node_app
node_app -->|"serves health"| node_health
node_app -->|"mounts"| node_auth_routes
node_app -->|"mounts"| node_user_routes
node_app -->|"mounts"| node_account_routes
node_app -->|"mounts"| node_category_routes
node_app -->|"mounts"| node_transaction_routes
node_app -->|"mounts"| node_summary_routes
node_app -->|"routes test"| node_dbtest
node_auth_routes -->|"dispatches"| node_auth
node_user_routes -->|"dispatches"| node_users
node_user_routes -->|"guards"| node_auth_middleware
node_account_routes -->|"dispatches"| node_accounts
node_account_routes -->|"guards"| node_auth_middleware
node_category_routes -->|"dispatches"| node_categories
node_category_routes -->|"guards"| node_auth_middleware
node_transaction_routes -->|"dispatches"| node_transactions
node_transaction_routes -->|"guards"| node_auth_middleware
node_summary_routes -->|"dispatches"| node_summaries
node_summary_routes -->|"guards"| node_auth_middleware
node_auth -->|"validates fields"| node_validation
node_users -->|"validates fields"| node_validation
node_accounts -->|"validates fields"| node_validation
node_transactions -->|"validates fields"| node_validation
node_summaries -->|"validates dates"| node_validation
node_auth -->|"queries"| node_pool
node_users -->|"queries"| node_pool
node_accounts -->|"queries"| node_pool
node_categories -->|"queries"| node_pool
node_transactions -->|"queries"| node_pool
node_summaries -->|"queries"| node_pool
node_auth_middleware -->|"checks user"| node_pool
node_dbtest -->|"checks connection"| node_pool
node_pool -->|"connects"| node_database

click node_app "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/index.ts"
click node_health "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/index.ts"
click node_auth_routes "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/routes/authRoute.ts"
click node_user_routes "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/routes/usersRoute.ts"
click node_account_routes "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/routes/accountsRoute.ts"
click node_category_routes "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/routes/categoryRoute.ts"
click node_transaction_routes "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/routes/transactionsRoute.ts"
click node_summary_routes "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/routes/summaryRoutes.ts"
click node_auth "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/authController.ts"
click node_users "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/usersController.ts"
click node_accounts "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/accountsController.ts"
click node_categories "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/categoryController.ts"
click node_transactions "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/transactionsController.ts"
click node_summaries "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/summaryController.ts"
click node_auth_middleware "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/middlewares/authMidddleware.ts"
click node_validation "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/lib/validations.ts"
click node_pool "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/lib/pgInit.ts"
click node_dbtest "https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/dbTestController.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_app,node_health,node_auth_routes,node_user_routes,node_account_routes,node_category_routes,node_transaction_routes,node_summary_routes,node_client toneBlue
class node_auth,node_users,node_auth_middleware,node_database toneAmber
class node_accounts,node_categories,node_transactions,node_summaries toneMint
class node_validation,node_pool,node_dbtest toneRose
```

## Components

### HTTP API

- [Express App](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/index.ts): `src/index.ts`
- [Health Check](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/index.ts): `src/index.ts`
- [Auth Routes](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/routes/authRoute.ts): `src/routes/authRoute.ts`
- [User Routes](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/routes/usersRoute.ts): `src/routes/usersRoute.ts`
- [Account Routes](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/routes/accountsRoute.ts): `src/routes/accountsRoute.ts`
- [Category Routes](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/routes/categoryRoute.ts): `src/routes/categoryRoute.ts`
- [Transaction Routes](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/routes/transactionsRoute.ts): `src/routes/transactionsRoute.ts`
- [Summary Routes](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/routes/summaryRoutes.ts): `src/routes/summaryRoutes.ts`

### Identity and Access

- [Authentication](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/authController.ts): `src/controllers/authController.ts`
- [User Profiles](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/usersController.ts): `src/controllers/usersController.ts`
- [JWT Middleware](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/middlewares/authMidddleware.ts): `src/middlewares/authMidddleware.ts`

### Finance Domains

- [Account Management](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/accountsController.ts): `src/controllers/accountsController.ts`
- [Category Management](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/categoryController.ts): `src/controllers/categoryController.ts`
- [Transactions](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/transactionsController.ts): `src/controllers/transactionsController.ts`
- [Summary Reporting](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/summaryController.ts): `src/controllers/summaryController.ts`

### Shared Services

- [Input Validation](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/lib/validations.ts): `src/lib/validations.ts`
- [PostgreSQL Pool](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/lib/pgInit.ts): `src/lib/pgInit.ts`
- [Database Check](https://github.com/sejpalvatsal456/goodbudget-backend/blob/main/src/controllers/dbTestController.ts): `src/controllers/dbTestController.ts`

### Other components

- **API Client**
- **PostgreSQL**

## Connections

- API Client → Express App: sends request (evidence: `src/index.ts`)
- Express App → Health Check: serves health (evidence: `src/index.ts`)
- Express App → Auth Routes: mounts (evidence: `src/index.ts`)
- Express App → User Routes: mounts (evidence: `src/index.ts`)
- Express App → Account Routes: mounts (evidence: `src/index.ts`)
- Express App → Category Routes: mounts (evidence: `src/index.ts`)
- Express App → Transaction Routes: mounts (evidence: `src/index.ts`)
- Express App → Summary Routes: mounts (evidence: `src/index.ts`)
- Express App → Database Check: routes test (evidence: `src/index.ts`)
- Auth Routes → Authentication: dispatches (evidence: `src/routes/authRoute.ts`)
- User Routes → User Profiles: dispatches (evidence: `src/routes/usersRoute.ts`)
- User Routes → JWT Middleware: guards (evidence: `src/routes/usersRoute.ts`)
- Account Routes → Account Management: dispatches (evidence: `src/routes/accountsRoute.ts`)
- Account Routes → JWT Middleware: guards (evidence: `src/routes/accountsRoute.ts`)
- Category Routes → Category Management: dispatches (evidence: `src/routes/categoryRoute.ts`)
- Category Routes → JWT Middleware: guards (evidence: `src/routes/categoryRoute.ts`)
- Transaction Routes → Transactions: dispatches (evidence: `src/routes/transactionsRoute.ts`)
- Transaction Routes → JWT Middleware: guards (evidence: `src/routes/transactionsRoute.ts`)
- Summary Routes → Summary Reporting: dispatches (evidence: `src/routes/summaryRoutes.ts`)
- Summary Routes → JWT Middleware: guards (evidence: `src/routes/summaryRoutes.ts`)
- Authentication → Input Validation: validates fields (evidence: `src/controllers/authController.ts`)
- User Profiles → Input Validation: validates fields (evidence: `src/controllers/usersController.ts`)
- Account Management → Input Validation: validates fields (evidence: `src/controllers/accountsController.ts`)
- Transactions → Input Validation: validates fields (evidence: `src/controllers/transactionsController.ts`)
- Summary Reporting → Input Validation: validates dates (evidence: `src/controllers/summaryController.ts`)
- Authentication → PostgreSQL Pool: queries (evidence: `src/controllers/authController.ts`)
- User Profiles → PostgreSQL Pool: queries (evidence: `src/controllers/usersController.ts`)
- Account Management → PostgreSQL Pool: queries (evidence: `src/controllers/accountsController.ts`)
- Category Management → PostgreSQL Pool: queries (evidence: `src/controllers/categoryController.ts`)
- Transactions → PostgreSQL Pool: queries (evidence: `src/controllers/transactionsController.ts`)
- Summary Reporting → PostgreSQL Pool: queries (evidence: `src/controllers/summaryController.ts`)
- JWT Middleware → PostgreSQL Pool: checks user (evidence: `src/middlewares/authMidddleware.ts`)
- Database Check → PostgreSQL Pool: checks connection (evidence: `src/controllers/dbTestController.ts`)
- PostgreSQL Pool → PostgreSQL: connects (evidence: `src/lib/pgInit.ts`)
