# mhkr038-create/schoolmanagement architecture

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

- Interactive diagram: https://gitdiagram.com/mhkr038-create/schoolmanagement
- Repository: https://github.com/mhkr038-create/schoolmanagement

## Overview

This is a multi-tenant school ERP with a React web client and a NestJS REST API backed by PostgreSQL through Prisma. The principal workflow is school staff sign in, select a school context, and manage academic records and operational processes—students, attendance, examinations, fees, timetables, assignments, and communications—through feature pages and API modules. The graph reflects documented product capabilities and sampled controller-to-service calls; unsampled module wiring and service-to-database operations are represented only where the repository structure or README supports them.

Main entry points: [`apps/web/src/services/api/apiClient.ts`](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/web/src/services/api/apiClient.ts) (API client), [`apps/api/src/common/guards`](https://github.com/mhkr038-create/schoolmanagement/tree/main/apps/api/src/common/guards) (JWT and permissions), [`apps/web/src/App.tsx`](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/web/src/App.tsx) (Web application), [`apps/api/src/modules/auth/auth.controller.ts`](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/auth/auth.controller.ts) (Authentication API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_web_app["Web application<br/>[App.tsx]"]
  node_auth_ui["Login and auth state<br/>[LoginPage.tsx]"]
  node_school_ui["Branch selection"]
  node_feature_pages["ERP feature pages"]
  node_api_client["API client<br/>[apiClient.ts]"]
end

subgraph group_identity["Identity and tenancy"]
  node_auth_api["Authentication API<br/>[auth.controller.ts]"]
  node_auth_service["Authentication service<br/>[auth.service.ts]"]
  node_access_controls["JWT and permissions"]
  node_school_api["School management"]
  node_rbac_api["Roles and permissions<br/>[rbac.controller.ts]"]
end

subgraph group_school_records["School records"]
  node_student_api["Student records"]
  node_admissions_api["Admissions"]
  node_academics_api["Academic setup"]
end

subgraph group_school_operations["School operations"]
  node_attendance_api["Attendance"]
  node_exams_api["Examinations and marks"]
  node_fees_api["Fees and invoices<br/>[fees.controller.ts]"]
  node_timetable_api["Timetable"]
  node_assignments_api["Assignments"]
  node_announcements_api["Announcements"]
end

subgraph group_platform["API and persistence"]
  node_prisma["Prisma service<br/>[prisma.service.ts]"]
  node_database[("School data store")]
  node_shared_types["Shared API types<br/>[index.ts]"]
end

node_staff(("School staff"))

node_staff -->|"uses"| node_web_app
node_web_app -->|"routes to"| node_auth_ui
node_web_app -->|"routes to"| node_school_ui
node_web_app -->|"routes to"| node_feature_pages
node_auth_ui -->|"requests login"| node_api_client
node_school_ui -->|"requests school data"| node_api_client
node_feature_pages -->|"requests ERP data"| node_api_client
node_api_client -->|"calls REST"| node_auth_api
node_api_client -->|"calls REST"| node_student_api
node_api_client -->|"calls REST"| node_admissions_api
node_api_client -->|"calls REST"| node_academics_api
node_api_client -->|"calls REST"| node_attendance_api
node_api_client -->|"calls REST"| node_exams_api
node_api_client -->|"calls REST"| node_fees_api
node_api_client -->|"calls REST"| node_timetable_api
node_api_client -->|"calls REST"| node_assignments_api
node_api_client -->|"calls REST"| node_announcements_api
node_api_client -->|"calls REST"| node_school_api
node_api_client -->|"calls REST"| node_rbac_api
node_auth_api -->|"delegates"| node_auth_service
node_auth_service -->|"reads and writes"| node_prisma
node_auth_api -->|"uses guards"| node_access_controls
node_student_api -->|"uses guards"| node_access_controls
node_attendance_api -->|"uses guards"| node_access_controls
node_exams_api -->|"uses guards"| node_access_controls
node_fees_api -->|"uses guards"| node_access_controls
node_timetable_api -->|"uses guards"| node_access_controls
node_assignments_api -->|"uses guards"| node_access_controls
node_announcements_api -->|"uses guards"| node_access_controls
node_academics_api -->|"uses guards"| node_access_controls
node_school_api -->|"uses guards"| node_access_controls
node_rbac_api -->|"uses guards"| node_access_controls
node_prisma -->|"queries"| node_database
node_api_client -.->|"uses contracts"| node_shared_types

click node_web_app "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/web/src/App.tsx"
click node_auth_ui "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/web/src/features/auth/LoginPage.tsx"
click node_school_ui "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/web/src/features/schools/BranchSelectionPage.tsx"
click node_feature_pages "https://github.com/mhkr038-create/schoolmanagement/tree/main/apps/web/src/features"
click node_api_client "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/web/src/services/api/apiClient.ts"
click node_auth_api "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/auth/auth.controller.ts"
click node_auth_service "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/auth/auth.service.ts"
click node_access_controls "https://github.com/mhkr038-create/schoolmanagement/tree/main/apps/api/src/common/guards"
click node_school_api "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/schools/schools.controller.ts"
click node_student_api "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/students/students.controller.ts"
click node_admissions_api "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/admissions/admissions.controller.ts"
click node_academics_api "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/academics/academics.controller.ts"
click node_attendance_api "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/attendance/attendance.controller.ts"
click node_exams_api "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/examinations/examinations.controller.ts"
click node_fees_api "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/fees/fees.controller.ts"
click node_timetable_api "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/timetable/timetable.controller.ts"
click node_assignments_api "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/assignments/assignments.controller.ts"
click node_announcements_api "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/announcements/announcements.controller.ts"
click node_rbac_api "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/rbac/rbac.controller.ts"
click node_prisma "https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/database/prisma.service.ts"
click node_database "https://github.com/mhkr038-create/schoolmanagement/tree/main/apps/api/src/database"
click node_shared_types "https://github.com/mhkr038-create/schoolmanagement/blob/main/packages/types/src/index.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_web_app,node_auth_ui,node_school_ui,node_feature_pages,node_api_client toneBlue
class node_auth_api,node_auth_service,node_access_controls,node_school_api,node_rbac_api toneAmber
class node_student_api,node_admissions_api,node_academics_api toneMint
class node_attendance_api,node_exams_api,node_fees_api,node_timetable_api,node_assignments_api,node_announcements_api toneRose
class node_prisma,node_database,node_shared_types,node_staff toneIndigo
```

## Components

### Web experience

- [Web application](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/web/src/App.tsx): `apps/web/src/App.tsx`
- [Login and auth state](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/web/src/features/auth/LoginPage.tsx): `apps/web/src/features/auth/LoginPage.tsx`
- [Branch selection](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/web/src/features/schools/BranchSelectionPage.tsx): `apps/web/src/features/schools/BranchSelectionPage.tsx`
- [ERP feature pages](https://github.com/mhkr038-create/schoolmanagement/tree/main/apps/web/src/features): `apps/web/src/features`
- [API client](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/web/src/services/api/apiClient.ts): `apps/web/src/services/api/apiClient.ts`

### Identity and tenancy

- [Authentication API](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/auth/auth.controller.ts): `apps/api/src/modules/auth/auth.controller.ts`
- [Authentication service](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/auth/auth.service.ts): `apps/api/src/modules/auth/auth.service.ts`
- [JWT and permissions](https://github.com/mhkr038-create/schoolmanagement/tree/main/apps/api/src/common/guards): `apps/api/src/common/guards`
- [School management](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/schools/schools.controller.ts): `apps/api/src/modules/schools/schools.controller.ts`
- [Roles and permissions](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/rbac/rbac.controller.ts): `apps/api/src/modules/rbac/rbac.controller.ts`

### School records

- [Student records](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/students/students.controller.ts): `apps/api/src/modules/students/students.controller.ts`
- [Admissions](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/admissions/admissions.controller.ts): `apps/api/src/modules/admissions/admissions.controller.ts`
- [Academic setup](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/academics/academics.controller.ts): `apps/api/src/modules/academics/academics.controller.ts`

### School operations

- [Attendance](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/attendance/attendance.controller.ts): `apps/api/src/modules/attendance/attendance.controller.ts`
- [Examinations and marks](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/examinations/examinations.controller.ts): `apps/api/src/modules/examinations/examinations.controller.ts`
- [Fees and invoices](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/fees/fees.controller.ts): `apps/api/src/modules/fees/fees.controller.ts`
- [Timetable](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/timetable/timetable.controller.ts): `apps/api/src/modules/timetable/timetable.controller.ts`
- [Assignments](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/assignments/assignments.controller.ts): `apps/api/src/modules/assignments/assignments.controller.ts`
- [Announcements](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/modules/announcements/announcements.controller.ts): `apps/api/src/modules/announcements/announcements.controller.ts`

### API and persistence

- [Prisma service](https://github.com/mhkr038-create/schoolmanagement/blob/main/apps/api/src/database/prisma.service.ts): `apps/api/src/database/prisma.service.ts`
- [School data store](https://github.com/mhkr038-create/schoolmanagement/tree/main/apps/api/src/database): `apps/api/src/database`
- [Shared API types](https://github.com/mhkr038-create/schoolmanagement/blob/main/packages/types/src/index.ts): `packages/types/src/index.ts`

### Other components

- **School staff**

## Connections

- School staff → Web application: uses
- Web application → Login and auth state: routes to
- Web application → Branch selection: routes to
- Web application → ERP feature pages: routes to
- Login and auth state → API client: requests login
- Branch selection → API client: requests school data
- ERP feature pages → API client: requests ERP data
- API client → Authentication API: calls REST
- API client → Student records: calls REST
- API client → Admissions: calls REST
- API client → Academic setup: calls REST
- API client → Attendance: calls REST
- API client → Examinations and marks: calls REST
- API client → Fees and invoices: calls REST
- API client → Timetable: calls REST
- API client → Assignments: calls REST
- API client → Announcements: calls REST
- API client → School management: calls REST
- API client → Roles and permissions: calls REST
- Authentication API → Authentication service: delegates
- Authentication service → Prisma service: reads and writes
- Authentication API → JWT and permissions: uses guards
- Student records → JWT and permissions: uses guards
- Attendance → JWT and permissions: uses guards
- Examinations and marks → JWT and permissions: uses guards
- Fees and invoices → JWT and permissions: uses guards
- Timetable → JWT and permissions: uses guards
- Assignments → JWT and permissions: uses guards
- Announcements → JWT and permissions: uses guards
- Academic setup → JWT and permissions: uses guards
- School management → JWT and permissions: uses guards
- Roles and permissions → JWT and permissions: uses guards
- Prisma service → School data store: queries
- API client → Shared API types: uses contracts
