# aswadekarb24-code/dbms_minmax_proj_1 architecture

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

- Interactive diagram: https://gitdiagram.com/aswadekarb24-code/dbms_minmax_proj_1
- Repository: https://github.com/aswadekarb24-code/dbms_minmax_proj_1

## Overview

TPQA is an academic consultancy and third-party audit management platform. Clients and faculty authenticate, create and review projects, then advance them through acceptance, approval, invoicing, payment, completion, revenue distribution, and closure; faculty can also revert a step. The graph preserves the documented nine stages and the admin, dashboard, and authentication branches. Source excerpts show router dispatch and selected storage/authentication relationships; unsampled frontend project and admin wiring is not inferred.

Main entry points: [`backend/routers/consultancy.py`](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/routers/consultancy.py) (Consultancy API), [`backend/routers/auth.py`](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/routers/auth.py) (Authentication API), [`backend/core/database.py`](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/core/database.py) (Database sessions), [`backend/deps.py`](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/deps.py) (Token validation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_web_auth["Sign-in and signup<br/>[auth-context.tsx]"]
  node_web_api["HTTP client<br/>[api.ts]"]
  node_dashboards["Role dashboards"]
  node_project_view["Project workspace<br/>[page.tsx]"]
  node_workflow_ui["Workflow forms"]
  node_step_modals["Step modals<br/>[StepModals.tsx]"]
end

subgraph group_api["Backend API"]
  node_auth_router["Authentication API<br/>[auth.py]"]
  node_admin_router["Admin API<br/>[admin.py]"]
  node_consultancy_router["Consultancy API<br/>[consultancy.py]"]
end

subgraph group_workflow["Consultancy lifecycle"]
  node_request["Request<br/>[step_1_request.py]"]
  node_response["Faculty response<br/>[step_2_response.py]"]
  node_acceptance["Agency acceptance"]
  node_approval["Director approval<br/>[step_4_approval.py]"]
  node_proforma["Proforma invoice<br/>[step_5_proforma.py]"]
  node_tax["Tax and receipt<br/>[step_6_tax.py]"]
  node_completion["Completion report"]
  node_distribution["Revenue distribution"]
  node_closure["Project closure<br/>[step_9_close.py]"]
  node_revert["Step reversion<br/>[step_revert.py]"]
end

subgraph group_data["Persistence and security"]
  node_auth_deps["Token validation<br/>[deps.py]"]
  node_auth_security["Password and tokens<br/>[security.py]"]
  node_sessions["Database sessions<br/>[database.py]"]
  node_orm["Domain data models<br/>[tables.py]"]
end

node_clients(("Clients"))
node_faculty(("Faculty and directors"))
node_postgres[("PostgreSQL")]

node_clients -->|"signs up"| node_web_auth
node_faculty -->|"signs in"| node_web_auth
node_web_auth -->|"sends requests"| node_web_api
node_web_api -.->|"calls auth endpoints"| node_auth_router
node_clients -->|"uses"| node_dashboards
node_faculty -->|"uses"| node_dashboards
node_dashboards -->|"opens projects"| node_project_view
node_project_view -.->|"presents workflow"| node_workflow_ui
node_workflow_ui -->|"renders"| node_step_modals
node_faculty -.->|"administers"| node_admin_router
node_auth_router -->|"hashes and verifies"| node_auth_security
node_auth_router -->|"uses protected routes"| node_auth_deps
node_auth_deps -->|"decodes tokens"| node_auth_security
node_auth_router -->|"opens database sessions"| node_sessions
node_admin_router -->|"opens database sessions"| node_sessions
node_consultancy_router -->|"opens database sessions"| node_sessions
node_auth_deps -->|"loads users"| node_sessions
node_sessions -->|"connects"| node_postgres
node_auth_router -->|"queries users"| node_orm
node_auth_deps -->|"loads user records"| node_orm
node_consultancy_router -->|"queries projects"| node_orm
node_consultancy_router -->|"dispatches request"| node_request
node_consultancy_router -->|"dispatches response"| node_response
node_consultancy_router -->|"dispatches acceptance"| node_acceptance
node_consultancy_router -->|"dispatches approval"| node_approval
node_consultancy_router -->|"dispatches invoice"| node_proforma
node_consultancy_router -->|"dispatches payment"| node_tax
node_consultancy_router -->|"dispatches report"| node_completion
node_consultancy_router -->|"dispatches distribution"| node_distribution
node_consultancy_router -->|"dispatches closure"| node_closure
node_consultancy_router -->|"dispatches reversion"| node_revert

click node_web_auth "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/frontend/lib/auth-context.tsx"
click node_web_api "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/frontend/lib/api.ts"
click node_dashboards "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/tree/main/frontend/app/dashboard"
click node_project_view "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/frontend/app/dashboard/projects/%5Bid%5D/page.tsx"
click node_workflow_ui "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/frontend/components/workflow/WorkflowContainer.tsx"
click node_step_modals "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/frontend/components/workflow/modals/StepModals.tsx"
click node_auth_router "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/routers/auth.py"
click node_admin_router "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/routers/admin.py"
click node_consultancy_router "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/routers/consultancy.py"
click node_auth_deps "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/deps.py"
click node_auth_security "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/core/security.py"
click node_sessions "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/core/database.py"
click node_orm "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/models/tables.py"
click node_request "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_1_request.py"
click node_response "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_2_response.py"
click node_acceptance "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_3_acceptance.py"
click node_approval "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_4_approval.py"
click node_proforma "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_5_proforma.py"
click node_tax "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_6_tax.py"
click node_completion "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_7_completion.py"
click node_distribution "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_8_distribution.py"
click node_closure "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_9_close.py"
click node_revert "https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_revert.py"

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_web_auth,node_web_api,node_dashboards,node_project_view,node_workflow_ui,node_step_modals,node_clients toneBlue
class node_auth_router,node_admin_router,node_consultancy_router,node_postgres toneAmber
class node_request,node_response,node_acceptance,node_approval,node_proforma,node_tax,node_completion,node_distribution,node_closure,node_revert toneMint
class node_auth_deps,node_auth_security,node_sessions,node_orm toneRose
class node_faculty toneIndigo
```

## Components

### Web application

- [Sign-in and signup](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/frontend/lib/auth-context.tsx): `frontend/lib/auth-context.tsx`
- [HTTP client](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/frontend/lib/api.ts): `frontend/lib/api.ts`
- [Role dashboards](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/tree/main/frontend/app/dashboard): `frontend/app/dashboard`
- [Project workspace](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/frontend/app/dashboard/projects/%5Bid%5D/page.tsx): `frontend/app/dashboard/projects/[id]/page.tsx`
- [Workflow forms](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/frontend/components/workflow/WorkflowContainer.tsx): `frontend/components/workflow/WorkflowContainer.tsx`
- [Step modals](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/frontend/components/workflow/modals/StepModals.tsx): `frontend/components/workflow/modals/StepModals.tsx`

### Backend API

- [Authentication API](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/routers/auth.py): `backend/routers/auth.py`
- [Admin API](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/routers/admin.py): `backend/routers/admin.py`
- [Consultancy API](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/routers/consultancy.py): `backend/routers/consultancy.py`

### Consultancy lifecycle

- [Request](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_1_request.py): `backend/consultancy_steps/step_1_request.py`
- [Faculty response](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_2_response.py): `backend/consultancy_steps/step_2_response.py`
- [Agency acceptance](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_3_acceptance.py): `backend/consultancy_steps/step_3_acceptance.py`
- [Director approval](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_4_approval.py): `backend/consultancy_steps/step_4_approval.py`
- [Proforma invoice](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_5_proforma.py): `backend/consultancy_steps/step_5_proforma.py`
- [Tax and receipt](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_6_tax.py): `backend/consultancy_steps/step_6_tax.py`
- [Completion report](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_7_completion.py): `backend/consultancy_steps/step_7_completion.py`
- [Revenue distribution](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_8_distribution.py): `backend/consultancy_steps/step_8_distribution.py`
- [Project closure](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_9_close.py): `backend/consultancy_steps/step_9_close.py`
- [Step reversion](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/consultancy_steps/step_revert.py): `backend/consultancy_steps/step_revert.py`

### Persistence and security

- [Token validation](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/deps.py): `backend/deps.py`
- [Password and tokens](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/core/security.py): `backend/core/security.py`
- [Database sessions](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/core/database.py): `backend/core/database.py`
- [Domain data models](https://github.com/aswadekarb24-code/dbms_minmax_proj_1/blob/main/backend/models/tables.py): `backend/models/tables.py`

### Other components

- **Clients**
- **Faculty and directors**
- **PostgreSQL**

## Connections

- Clients → Sign-in and signup: signs up
- Faculty and directors → Sign-in and signup: signs in
- Sign-in and signup → HTTP client: sends requests (evidence: `frontend/lib/auth-context.tsx`)
- HTTP client → Authentication API: calls auth endpoints
- Clients → Role dashboards: uses
- Faculty and directors → Role dashboards: uses
- Role dashboards → Project workspace: opens projects
- Project workspace → Workflow forms: presents workflow
- Workflow forms → Step modals: renders (evidence: `frontend/components/workflow/WorkflowContainer.tsx`)
- Faculty and directors → Admin API: administers
- Authentication API → Password and tokens: hashes and verifies (evidence: `backend/routers/auth.py`)
- Authentication API → Token validation: uses protected routes (evidence: `backend/routers/auth.py`)
- Token validation → Password and tokens: decodes tokens (evidence: `backend/deps.py`)
- Authentication API → Database sessions: opens database sessions (evidence: `backend/routers/auth.py`)
- Admin API → Database sessions: opens database sessions (evidence: `backend/routers/admin.py`)
- Consultancy API → Database sessions: opens database sessions (evidence: `backend/routers/consultancy.py`)
- Token validation → Database sessions: loads users (evidence: `backend/deps.py`)
- Database sessions → PostgreSQL: connects (evidence: `backend/core/database.py`)
- Authentication API → Domain data models: queries users (evidence: `backend/routers/auth.py`)
- Token validation → Domain data models: loads user records (evidence: `backend/deps.py`)
- Consultancy API → Domain data models: queries projects (evidence: `backend/routers/consultancy.py`)
- Consultancy API → Request: dispatches request (evidence: `backend/routers/consultancy.py`)
- Consultancy API → Faculty response: dispatches response (evidence: `backend/routers/consultancy.py`)
- Consultancy API → Agency acceptance: dispatches acceptance (evidence: `backend/routers/consultancy.py`)
- Consultancy API → Director approval: dispatches approval (evidence: `backend/routers/consultancy.py`)
- Consultancy API → Proforma invoice: dispatches invoice (evidence: `backend/routers/consultancy.py`)
- Consultancy API → Tax and receipt: dispatches payment (evidence: `backend/routers/consultancy.py`)
- Consultancy API → Completion report: dispatches report (evidence: `backend/routers/consultancy.py`)
- Consultancy API → Revenue distribution: dispatches distribution (evidence: `backend/routers/consultancy.py`)
- Consultancy API → Project closure: dispatches closure (evidence: `backend/routers/consultancy.py`)
- Consultancy API → Step reversion: dispatches reversion (evidence: `backend/routers/consultancy.py`)
