# mervin0266/iqac-plateform architecture

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

- Interactive diagram: https://gitdiagram.com/mervin0266/iqac-plateform
- Repository: https://github.com/mervin0266/iqac-plateform

## Overview

#### 1. Purpose and entry points
IQAC Platform is a two-process institutional-quality-management application: a React/Vite frontend for public and authenticated administration views, plus an Express backend for persistent operational data. Frontend starts at `src/main.tsx` and composes the application in `src/app/App.tsx`; backend starts at `src/app/backend/server.js`.

#### 2. Frontend application shell
`src/app/App.tsx` is the primary UI composition and navigation boundary. It brings together public-site presentation, login, dashboard, and content-management pages. Shared authenticated layout/navigation is represented by `src/app/components/Header.tsx`, `src/app/components/Sidebar.tsx`, and `src/app/components/DashboardPage.tsx`.

#### 3. Public versus administrative experiences
The UI separates public institutional content from managed IQAC workflows. Public-facing rendering is centered on `src/app/components/PublicWebsite.tsx`, `src/app/components/PublicHomePage.tsx`, and `src/app/components/PublicNavBar.tsx`. Administrative pages cover departments, faculty, students, documents, achievements, strategic plans, and placement/research areas, such as `src/app/components/DepartmentTrackingPage.tsx`, `src/app/components/AchievementsPage.tsx`, and `src/app/components/StrategicPlanPage.tsx`.

#### 4. Authentication and authorization boundary
Frontend authentication state is owned by `src/app/contexts/AuthContext.tsx`. UI-level access enforcement uses `src/app/components/PermissionGuard.tsx` and the permission definitions in `src/app/config/permissions.ts`. Backend requests cross the trust boundary through `src/app/backend/middleware/auth.js`; authorization and audit behavior should remain server-enforced rather than relying on the UI guard.

#### 5. Backend API and domain modules
The Express server mounts resource-specific route modules from `src/app/backend/routes/`, which dispatch to controllers in `src/app/backend/controllers/`. Key domain slices include identity (`src/app/backend/routes/auth.js`, `src/app/backend/controllers/authController.js`, `src/app/backend/models/User.js`), institutional entities (`src/app/backend/routes/departments.js`, `src/app/backend/controllers/departmentController.js`, `src/app/backend/models/Department.js`), and document governance (`src/app/backend/routes/documents.js`, `src/app/backend/controllers/documentController.js`, `src/app/backend/models/Document.js`).

#### 6. Persistence, workflow, and observability
Database configuration is isolated in `src/app/backend/config/database.js`, while model registration is consolidated in `src/app/backend/models/index.js`. The backend supports governance workflows beyond CRUD: edit-request lifecycle through `src/app/backend/models/EditRequest.js` and `src/app/backend/controllers/editRequestController.js`; user notifications through `src/app/backend/models/Notification.js` and `src/app/backend/middleware/notificationHelper.js`; and audit capture through `src/app/backend/models/AuditLog.js` and `src/app/backend/middleware/auditLogger.js`. Seeding/initialization is provided by `src/app/backend/config/autoSeed.js` and `src/app/backend/scripts/initDatabase.js`.

#### 7. Runtime and delivery shape
The frontend runs under Vite, configured by `vite.config.ts`, with TypeScript/React source under `src/` and static host entry `index.html`. The backend is a separately installed Node.js package under `src/app/backend/package.json`, run independently from the frontend. The repository includes backend deployment and operational guidance at `src/app/backend/DEPLOYMENT.md` and `src/app/backend/QUICKSTART.md`; a hosted design/site reference is identified in `README.md`.

Main entry points: [`src/app/backend/models/index.js`](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/models/index.js) (Model registry), [`src/app/App.tsx`](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/App.tsx) (Application shell), [`src/app/components/PermissionGuard.tsx`](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/components/PermissionGuard.tsx) (UI permission guard), [`src/app/backend/server.js`](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/server.js) (Express server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["React/Vite frontend"]
  node_vite{{"Vite runtime<br/>build runtime<br/>[vite.config.ts]"}}
  node_frontend_entry["Frontend entry<br/>React entry<br/>[main.tsx]"]
  node_app_shell["Application shell<br/>UI composition<br/>[App.tsx]"]
  node_public_site["Public website<br/>public UI<br/>[PublicWebsite.tsx]"]
  node_auth_state["Auth state<br/>React context<br/>[AuthContext.tsx]"]
  node_ui_access["UI permission guard<br/>access control"]
  node_admin_layout["Admin dashboard layout<br/>authenticated UI<br/>[DashboardPage.tsx]"]
  node_admin_pages["IQAC management pages<br/>admin feature pages"]
end

subgraph group_backend["Express backend"]
  node_api_server{{"Express server<br/>API runtime<br/>[server.js]"}}
  node_auth_middleware["Server auth middleware<br/>trust boundary<br/>[auth.js]"]
  node_routes["Resource routes<br/>Express routes"]
  node_controllers["Domain controllers<br/>request handlers"]
  node_models["Model registry<br/>data models<br/>[index.js]"]
  node_database[("Database<br/>persistent store<br/>[database.js]")]
  node_edit_requests["Edit-request workflow<br/>governance workflow<br/>[EditRequest.js]"]
  node_notifications["Notifications<br/>workflow messaging"]
  node_audit_logs["Audit logging<br/>observability<br/>[auditLogger.js]"]
  node_seed_init["Database initialization<br/>bootstrap<br/>[initDatabase.js]"]
end

node_vite -->|"serves"| node_frontend_entry
node_frontend_entry -->|"mounts"| node_app_shell
node_app_shell -->|"renders public experience"| node_public_site
node_app_shell -->|"uses session state"| node_auth_state
node_auth_state -->|"supplies identity"| node_ui_access
node_app_shell -->|"guards admin views"| node_ui_access
node_ui_access -->|"permits"| node_admin_layout
node_admin_layout -->|"hosts"| node_admin_pages
node_public_site -->|"API requests"| node_api_server
node_admin_pages -->|"API requests"| node_api_server
node_api_server -->|"protects requests"| node_auth_middleware
node_auth_middleware -->|"authorizes"| node_routes
node_routes -->|"dispatches"| node_controllers
node_controllers -->|"reads and writes"| node_models
node_models -->|"persists to"| node_database
node_controllers -->|"manages"| node_edit_requests
node_controllers -->|"triggers"| node_notifications
node_controllers -->|"records actions"| node_audit_logs
node_edit_requests -->|"stored as model"| node_models
node_notifications -->|"creates notification records"| node_models
node_audit_logs -->|"writes audit records"| node_models
node_seed_init -.->|"initializes"| node_database

click node_vite "https://github.com/mervin0266/iqac-plateform/blob/main/vite.config.ts"
click node_frontend_entry "https://github.com/mervin0266/iqac-plateform/blob/main/src/main.tsx"
click node_app_shell "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/App.tsx"
click node_public_site "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/components/PublicWebsite.tsx"
click node_auth_state "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/contexts/AuthContext.tsx"
click node_ui_access "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/components/PermissionGuard.tsx"
click node_admin_layout "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/components/DashboardPage.tsx"
click node_admin_pages "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/components/DepartmentTrackingPage.tsx"
click node_api_server "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/server.js"
click node_auth_middleware "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/middleware/auth.js"
click node_models "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/models/index.js"
click node_database "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/config/database.js"
click node_edit_requests "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/models/EditRequest.js"
click node_notifications "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/middleware/notificationHelper.js"
click node_audit_logs "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/middleware/auditLogger.js"
click node_seed_init "https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/scripts/initDatabase.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_vite,node_frontend_entry,node_app_shell,node_public_site,node_auth_state,node_ui_access,node_admin_layout,node_admin_pages toneBlue
class node_api_server,node_auth_middleware,node_routes,node_controllers,node_models,node_database,node_edit_requests,node_notifications,node_audit_logs,node_seed_init toneAmber
```

## Components

### React/Vite frontend

Public site and authenticated IQAC administration UI.

- [Vite runtime](https://github.com/mervin0266/iqac-plateform/blob/main/vite.config.ts): build runtime · `vite.config.ts`
- [Frontend entry](https://github.com/mervin0266/iqac-plateform/blob/main/src/main.tsx): React entry · `src/main.tsx`
- [Application shell](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/App.tsx): UI composition · Navigation boundary for public, login, dashboard, and management pages. · `src/app/App.tsx`
- [Public website](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/components/PublicWebsite.tsx): public UI · `src/app/components/PublicWebsite.tsx`
- [Auth state](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/contexts/AuthContext.tsx): React context · `src/app/contexts/AuthContext.tsx`
- [UI permission guard](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/components/PermissionGuard.tsx): access control · Applies frontend permission definitions to administrative views. · `src/app/components/PermissionGuard.tsx`
- [Admin dashboard layout](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/components/DashboardPage.tsx): authenticated UI · `src/app/components/DashboardPage.tsx`
- [IQAC management pages](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/components/DepartmentTrackingPage.tsx): admin feature pages · Manages departments, documents, achievements, plans, and related institutional data. · `src/app/components/DepartmentTrackingPage.tsx`

### Express backend

Independently run API, workflow, and persistence service.

- [Express server](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/server.js): API runtime · `src/app/backend/server.js`
- [Server auth middleware](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/middleware/auth.js): trust boundary · Enforces authentication and authorization on backend requests. · `src/app/backend/middleware/auth.js`
- **Resource routes**: Express routes · Mounts domain-specific API endpoints.
- **Domain controllers**: request handlers · Implements identity, institutional, document, and workflow operations.
- [Model registry](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/models/index.js): data models · Consolidates registered persistence models. · `src/app/backend/models/index.js`
- [Database](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/config/database.js): persistent store · `src/app/backend/config/database.js`
- [Edit-request workflow](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/models/EditRequest.js): governance workflow · Tracks lifecycle of requested edits. · `src/app/backend/models/EditRequest.js`
- [Notifications](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/middleware/notificationHelper.js): workflow messaging · Creates user notifications during backend workflows. · `src/app/backend/middleware/notificationHelper.js`
- [Audit logging](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/middleware/auditLogger.js): observability · Captures server-side operational audit records. · `src/app/backend/middleware/auditLogger.js`
- [Database initialization](https://github.com/mervin0266/iqac-plateform/blob/main/src/app/backend/scripts/initDatabase.js): bootstrap · Seeds and initializes operational data. · `src/app/backend/scripts/initDatabase.js`

## Connections

- Vite runtime → Frontend entry: serves
- Frontend entry → Application shell: mounts
- Application shell → Public website: renders public experience
- Application shell → Auth state: uses session state
- Auth state → UI permission guard: supplies identity
- Application shell → UI permission guard: guards admin views
- UI permission guard → Admin dashboard layout: permits
- Admin dashboard layout → IQAC management pages: hosts
- Public website → Express server: API requests
- IQAC management pages → Express server: API requests
- Express server → Server auth middleware: protects requests
- Server auth middleware → Resource routes: authorizes
- Resource routes → Domain controllers: dispatches
- Domain controllers → Model registry: reads and writes
- Model registry → Database: persists to
- Domain controllers → Edit-request workflow: manages
- Domain controllers → Notifications: triggers
- Domain controllers → Audit logging: records actions
- Edit-request workflow → Model registry: stored as model
- Notifications → Model registry: creates notification records
- Audit logging → Model registry: writes audit records
- Database initialization → Database: initializes
