# jineshprajapat/finance_dashboard architecture

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

- Interactive diagram: https://gitdiagram.com/jineshprajapat/finance_dashboard
- Repository: https://github.com/jineshprajapat/finance_dashboard

## Overview

This NestJS backend serves a finance dashboard: clients authenticate, then use protected endpoints to manage users and financial records, administer database-backed roles and permissions, and retrieve analytics. Services own business logic and authorization; TypeORM persists users, sessions, RBAC mappings, and records. The README documents these capabilities, but sampled source excerpts do not show every service implementation or module wiring, so those internal links are represented only where documented or directly evident.

Main entry points: [`src/middlewares/access-token.middleware.ts`](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/middlewares/access-token.middleware.ts) (Token middleware), [`src/data-source.ts`](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/data-source.ts) (SQL database), [`src/middlewares/app_token.middleware.ts`](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/middlewares/app_token.middleware.ts) (App token check), [`src/modules/users/users.controller.ts`](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/users/users.controller.ts) (User endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and security"]
  node_middleware["Token middleware"]
  node_app_token["App token check"]
end

subgraph group_identity["Identity and access"]
  node_user_auth_api["Auth endpoints"]
  node_user_auth["Login and refresh"]
  node_jwt["JWT service<br/>[auth.service.ts]"]
  node_sessions["Refresh sessions"]
  node_users_api["User endpoints"]
  node_users["User management<br/>[users.service.ts]"]
  node_roles_api["Role endpoints"]
  node_roles["Role management<br/>[roles.service.ts]"]
  node_permissions_api["Permission endpoints"]
  node_permissions["Permission registry"]
  node_role_permissions_api["Role-permission endpoints"]
  node_role_permissions["Permission mapping"]
  node_rbac["RBAC checks"]
end

subgraph group_finance["Finance and analytics"]
  node_records_api["Record endpoints"]
  node_records["Record management"]
  node_dashboard_api["Dashboard endpoints"]
  node_dashboard["Analytics queries"]
end

subgraph group_persistence["Persistence"]
  node_sql[("SQL database<br/>[data-source.ts]")]
end

node_client(("Client"))

node_client -->|"requests"| node_user_auth_api
node_client -->|"requests"| node_users_api
node_client -->|"requests"| node_roles_api
node_client -->|"requests"| node_permissions_api
node_client -->|"requests"| node_role_permissions_api
node_client -->|"requests"| node_records_api
node_client -->|"requests"| node_dashboard_api
node_middleware -->|"protects"| node_user_auth_api
node_middleware -->|"protects"| node_users_api
node_middleware -->|"protects"| node_roles_api
node_middleware -->|"protects"| node_permissions_api
node_middleware -->|"protects"| node_role_permissions_api
node_middleware -->|"protects"| node_records_api
node_middleware -->|"protects"| node_dashboard_api
node_app_token -->|"protects"| node_users_api
node_app_token -->|"protects"| node_roles_api
node_app_token -->|"protects"| node_permissions_api
node_app_token -->|"protects"| node_role_permissions_api
node_app_token -->|"protects"| node_records_api
node_app_token -->|"protects"| node_dashboard_api
node_user_auth_api -->|"delegates"| node_user_auth
node_user_auth -->|"creates tokens"| node_jwt
node_user_auth -->|"manages sessions"| node_sessions
node_user_auth -->|"reads users"| node_sql
node_sessions -->|"reads/writes"| node_sql
node_users_api -->|"delegates"| node_users
node_users_api -->|"uses"| node_role_permissions
node_users -->|"checks access"| node_rbac
node_roles_api -->|"delegates"| node_roles
node_permissions_api -->|"delegates"| node_permissions
node_role_permissions_api -->|"delegates"| node_role_permissions
node_roles -->|"persists roles"| node_sql
node_permissions -->|"persists permissions"| node_sql
node_role_permissions -->|"persists mappings"| node_sql
node_rbac -->|"loads permissions"| node_sql
node_records_api -->|"delegates"| node_records
node_records -->|"checks access"| node_rbac
node_records -->|"reads/writes"| node_sql
node_dashboard_api -->|"delegates"| node_dashboard
node_dashboard -->|"checks access"| node_rbac
node_dashboard -->|"aggregates records"| node_sql

click node_middleware "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/middlewares/access-token.middleware.ts"
click node_app_token "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/middlewares/app_token.middleware.ts"
click node_user_auth_api "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/user-auth/use-auth.controller.ts"
click node_user_auth "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/user-auth/user-auth.service.ts"
click node_jwt "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/auth/auth.service.ts"
click node_sessions "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/user-auth/user_sessions/user-sessions.service.ts"
click node_users_api "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/users/users.controller.ts"
click node_users "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/users/users.service.ts"
click node_roles_api "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/roles/roles.controller.ts"
click node_roles "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/roles/roles.service.ts"
click node_permissions_api "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/permissions/permissions.controller.ts"
click node_permissions "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/permissions/permissions.service.ts"
click node_role_permissions_api "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/role-has-permissions/role-has-permissions.controller.ts"
click node_role_permissions "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/role-has-permissions/role-has-permissions.service.ts"
click node_rbac "https://github.com/jineshprajapat/finance_dashboard/tree/main/src/modules"
click node_records_api "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/financial-records/financial-records.controller.ts"
click node_records "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/financial-records/financial-records.service.ts"
click node_dashboard_api "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/dashboard/dashboard.controller.ts"
click node_dashboard "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/dashboard/dashboard.service.ts"
click node_sql "https://github.com/jineshprajapat/finance_dashboard/blob/main/src/data-source.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_middleware,node_app_token,node_client toneBlue
class node_user_auth_api,node_user_auth,node_jwt,node_sessions,node_users_api,node_users,node_roles_api,node_roles,node_permissions_api,node_permissions,node_role_permissions_api,node_role_permissions,node_rbac toneAmber
class node_records_api,node_records,node_dashboard_api,node_dashboard toneMint
class node_sql toneRose
```

## Components

### API and security

- [Token middleware](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/middlewares/access-token.middleware.ts): `src/middlewares/access-token.middleware.ts`
- [App token check](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/middlewares/app_token.middleware.ts): `src/middlewares/app_token.middleware.ts`

### Identity and access

- [Auth endpoints](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/user-auth/use-auth.controller.ts): `src/modules/user-auth/use-auth.controller.ts`
- [Login and refresh](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/user-auth/user-auth.service.ts): `src/modules/user-auth/user-auth.service.ts`
- [JWT service](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/auth/auth.service.ts): `src/modules/auth/auth.service.ts`
- [Refresh sessions](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/user-auth/user_sessions/user-sessions.service.ts): `src/modules/user-auth/user_sessions/user-sessions.service.ts`
- [User endpoints](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/users/users.controller.ts): `src/modules/users/users.controller.ts`
- [User management](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/users/users.service.ts): `src/modules/users/users.service.ts`
- [Role endpoints](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/roles/roles.controller.ts): `src/modules/roles/roles.controller.ts`
- [Role management](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/roles/roles.service.ts): `src/modules/roles/roles.service.ts`
- [Permission endpoints](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/permissions/permissions.controller.ts): `src/modules/permissions/permissions.controller.ts`
- [Permission registry](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/permissions/permissions.service.ts): `src/modules/permissions/permissions.service.ts`
- [Role-permission endpoints](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/role-has-permissions/role-has-permissions.controller.ts): `src/modules/role-has-permissions/role-has-permissions.controller.ts`
- [Permission mapping](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/role-has-permissions/role-has-permissions.service.ts): `src/modules/role-has-permissions/role-has-permissions.service.ts`
- [RBAC checks](https://github.com/jineshprajapat/finance_dashboard/tree/main/src/modules): `src/modules`

### Finance and analytics

- [Record endpoints](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/financial-records/financial-records.controller.ts): `src/modules/financial-records/financial-records.controller.ts`
- [Record management](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/financial-records/financial-records.service.ts): `src/modules/financial-records/financial-records.service.ts`
- [Dashboard endpoints](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/dashboard/dashboard.controller.ts): `src/modules/dashboard/dashboard.controller.ts`
- [Analytics queries](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/modules/dashboard/dashboard.service.ts): `src/modules/dashboard/dashboard.service.ts`

### Persistence

- [SQL database](https://github.com/jineshprajapat/finance_dashboard/blob/main/src/data-source.ts): `src/data-source.ts`

### Other components

- **Client**

## Connections

- Client → Auth endpoints: requests
- Client → User endpoints: requests
- Client → Role endpoints: requests
- Client → Permission endpoints: requests
- Client → Role-permission endpoints: requests
- Client → Record endpoints: requests
- Client → Dashboard endpoints: requests
- Token middleware → Auth endpoints: protects
- Token middleware → User endpoints: protects
- Token middleware → Role endpoints: protects
- Token middleware → Permission endpoints: protects
- Token middleware → Role-permission endpoints: protects
- Token middleware → Record endpoints: protects
- Token middleware → Dashboard endpoints: protects
- App token check → User endpoints: protects
- App token check → Role endpoints: protects
- App token check → Permission endpoints: protects
- App token check → Role-permission endpoints: protects
- App token check → Record endpoints: protects
- App token check → Dashboard endpoints: protects
- Auth endpoints → Login and refresh: delegates
- Login and refresh → JWT service: creates tokens
- Login and refresh → Refresh sessions: manages sessions
- Login and refresh → SQL database: reads users
- Refresh sessions → SQL database: reads/writes
- User endpoints → User management: delegates
- User endpoints → Permission mapping: uses
- User management → RBAC checks: checks access
- Role endpoints → Role management: delegates
- Permission endpoints → Permission registry: delegates
- Role-permission endpoints → Permission mapping: delegates
- Role management → SQL database: persists roles
- Permission registry → SQL database: persists permissions
- Permission mapping → SQL database: persists mappings
- RBAC checks → SQL database: loads permissions
- Record endpoints → Record management: delegates
- Record management → RBAC checks: checks access
- Record management → SQL database: reads/writes
- Dashboard endpoints → Analytics queries: delegates
- Analytics queries → RBAC checks: checks access
- Analytics queries → SQL database: aggregates records
