# rachitjain13/school-main architecture

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

- Interactive diagram: https://gitdiagram.com/rachitjain13/school-main
- Repository: https://github.com/rachitjain13/school-main

## Overview

This repository combines an Express backend for super-admin authentication and multi-tenant school administration with an Expo mobile app whose sampled screens appear starter-oriented. The main backend workflow is super-admin login, school-draft creation and confirmation, then tenant-database provisioning; school requests also pass through authentication and tenant resolution. The graph includes these domain stages and the session/tenant-connection layers. The README gives no product detail, and many modules were not sampled, so uncertain connections are omitted.

Main entry points: [`backend/src/modules/auth/controllers/login.controller.ts`](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/controllers/login.controller.ts) (Login controller), [`backend/src/modules/auth/controllers/session.controller.ts`](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/controllers/session.controller.ts) (Session controller), [`backend/src/modules/super-admin/routes/super-admin.routes.ts`](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/routes/super-admin.routes.ts) (Admin routes), [`backend/src/modules/auth/services/session.service.ts`](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/services/session.service.ts) (Session service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API runtime"]
  node_app["Express app<br/>[app.ts]"]
end

subgraph group_auth["Authentication"]
  node_auth_routes["Auth routes<br/>[auth.routes.ts]"]
  node_login["Login controller"]
  node_login_service["Login service<br/>[login.service.ts]"]
  node_session_controller["Session controller"]
  node_session_service["Session service<br/>[session.service.ts]"]
  node_token_service["Token service<br/>[token.service.ts]"]
  node_session_models[("Session records")]
  node_auth_middleware["Auth middleware<br/>[auth.middleware.ts]"]
end

subgraph group_schools["School administration"]
  node_admin_routes["Admin routes"]
  node_draft_controller["Draft controller"]
  node_draft_service["Draft service"]
  node_confirm_controller["Confirmation controller"]
  node_confirm_service["Confirmation service"]
  node_school_models[("School records<br/>[school.model.ts]")]
  node_draft_model[("Draft records")]
  node_provision_controller["Provision controller"]
end

subgraph group_tenancy["Tenant infrastructure"]
  node_provision_service["Provisioning service"]
  node_tenant_registry[("Tenant registry")]
  node_tenant_connections["Tenant connections"]
  node_school_routes["School routes<br/>[school.routes.ts]"]
  node_tenant_middleware["Tenant resolver"]
end

subgraph group_mobile["Mobile app"]
  node_mobile_home["Home screen<br/>[index.tsx]"]
  node_mobile_explore["Explore screen<br/>[explore.tsx]"]
end

node_admin(("Super admin"))
node_school_user(("School user"))
node_mongodb[("MongoDB")]

node_admin -->|"requests login"| node_auth_routes
node_auth_routes -->|"routes login"| node_login
node_login -->|"authenticates"| node_login_service
node_login -->|"creates token"| node_token_service
node_login -->|"creates session"| node_session_service
node_auth_routes -->|"routes refresh/logout"| node_session_controller
node_session_controller -->|"rotates or revokes"| node_session_service
node_session_controller -->|"creates access token"| node_token_service
node_session_controller -->|"looks up user"| node_mongodb
node_session_service -->|"reads/writes sessions"| node_session_models
node_session_service -->|"stores token history"| node_mongodb
node_admin -->|"manages schools"| node_admin_routes
node_admin_routes -->|"routes draft creation"| node_draft_controller
node_draft_controller -->|"creates draft"| node_draft_service
node_admin_routes -->|"routes confirmation"| node_confirm_controller
node_confirm_controller -->|"confirms draft"| node_confirm_service
node_confirm_service -->|"reads/updates draft"| node_draft_model
node_confirm_service -->|"checks and creates school"| node_school_models
node_admin_routes -->|"routes provisioning"| node_provision_controller
node_provision_controller -->|"provisions database"| node_provision_service
node_provision_service -->|"opens tenant connection"| node_tenant_connections
node_provision_service -->|"updates registry"| node_tenant_registry
node_tenant_connections -->|"connects database"| node_mongodb
node_school_user -->|"requests dashboard"| node_school_routes
node_school_routes -->|"authenticates request"| node_auth_middleware
node_school_routes -->|"resolves tenant"| node_tenant_middleware
node_app -.->|"uses database config"| node_mongodb

click node_app "https://github.com/rachitjain13/school-main/blob/main/backend/src/app.ts"
click node_auth_routes "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/routes/auth.routes.ts"
click node_login "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/controllers/login.controller.ts"
click node_login_service "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/services/login.service.ts"
click node_session_controller "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/controllers/session.controller.ts"
click node_session_service "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/services/session.service.ts"
click node_token_service "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/services/token.service.ts"
click node_session_models "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/models/platform-session.model.ts"
click node_admin_routes "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/routes/super-admin.routes.ts"
click node_draft_controller "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/controllers/school-draft.controller.ts"
click node_draft_service "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/services/school-draft.service.ts"
click node_confirm_controller "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/controllers/school-confirmation.controller.ts"
click node_confirm_service "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/services/school-confirmation.service.ts"
click node_school_models "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/models/school.model.ts"
click node_draft_model "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/models/school-draft.model.ts"
click node_provision_controller "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/controllers/school-provisioning.controller.ts"
click node_provision_service "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/services/school-provisioning.service.ts"
click node_tenant_registry "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/models/tenant-registry.model.ts"
click node_tenant_connections "https://github.com/rachitjain13/school-main/blob/main/backend/src/infrastructure/tenant-connection.manager.ts"
click node_school_routes "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/school/routes/school.routes.ts"
click node_auth_middleware "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/middleware/auth.middleware.ts"
click node_tenant_middleware "https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/middleware/tenant-resolver.middleware.ts"
click node_mobile_home "https://github.com/rachitjain13/school-main/blob/main/frontend/school-management-mobile/src/app/index.tsx"
click node_mobile_explore "https://github.com/rachitjain13/school-main/blob/main/frontend/school-management-mobile/src/app/explore.tsx"

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_school_user toneBlue
class node_auth_routes,node_login,node_login_service,node_session_controller,node_session_service,node_token_service,node_session_models,node_auth_middleware,node_mongodb toneAmber
class node_admin_routes,node_draft_controller,node_draft_service,node_confirm_controller,node_confirm_service,node_school_models,node_draft_model,node_provision_controller toneMint
class node_provision_service,node_tenant_registry,node_tenant_connections,node_school_routes,node_tenant_middleware toneRose
class node_mobile_home,node_mobile_explore,node_admin toneIndigo
```

## Components

### API runtime

- [Express app](https://github.com/rachitjain13/school-main/blob/main/backend/src/app.ts): `backend/src/app.ts`

### Authentication

- [Auth routes](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/routes/auth.routes.ts): `backend/src/modules/auth/routes/auth.routes.ts`
- [Login controller](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/controllers/login.controller.ts): `backend/src/modules/auth/controllers/login.controller.ts`
- [Login service](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/services/login.service.ts): `backend/src/modules/auth/services/login.service.ts`
- [Session controller](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/controllers/session.controller.ts): `backend/src/modules/auth/controllers/session.controller.ts`
- [Session service](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/services/session.service.ts): `backend/src/modules/auth/services/session.service.ts`
- [Token service](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/services/token.service.ts): `backend/src/modules/auth/services/token.service.ts`
- [Session records](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/models/platform-session.model.ts): `backend/src/modules/auth/models/platform-session.model.ts`
- [Auth middleware](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/middleware/auth.middleware.ts): `backend/src/modules/auth/middleware/auth.middleware.ts`

### School administration

- [Admin routes](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/routes/super-admin.routes.ts): `backend/src/modules/super-admin/routes/super-admin.routes.ts`
- [Draft controller](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/controllers/school-draft.controller.ts): `backend/src/modules/super-admin/controllers/school-draft.controller.ts`
- [Draft service](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/services/school-draft.service.ts): `backend/src/modules/super-admin/services/school-draft.service.ts`
- [Confirmation controller](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/controllers/school-confirmation.controller.ts): `backend/src/modules/super-admin/controllers/school-confirmation.controller.ts`
- [Confirmation service](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/services/school-confirmation.service.ts): `backend/src/modules/super-admin/services/school-confirmation.service.ts`
- [School records](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/models/school.model.ts): `backend/src/modules/super-admin/models/school.model.ts`
- [Draft records](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/models/school-draft.model.ts): `backend/src/modules/super-admin/models/school-draft.model.ts`
- [Provision controller](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/controllers/school-provisioning.controller.ts): `backend/src/modules/super-admin/controllers/school-provisioning.controller.ts`

### Tenant infrastructure

- [Provisioning service](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/services/school-provisioning.service.ts): `backend/src/modules/super-admin/services/school-provisioning.service.ts`
- [Tenant registry](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/super-admin/models/tenant-registry.model.ts): `backend/src/modules/super-admin/models/tenant-registry.model.ts`
- [Tenant connections](https://github.com/rachitjain13/school-main/blob/main/backend/src/infrastructure/tenant-connection.manager.ts): `backend/src/infrastructure/tenant-connection.manager.ts`
- [School routes](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/school/routes/school.routes.ts): `backend/src/modules/school/routes/school.routes.ts`
- [Tenant resolver](https://github.com/rachitjain13/school-main/blob/main/backend/src/modules/auth/middleware/tenant-resolver.middleware.ts): `backend/src/modules/auth/middleware/tenant-resolver.middleware.ts`

### Mobile app

- [Home screen](https://github.com/rachitjain13/school-main/blob/main/frontend/school-management-mobile/src/app/index.tsx): `frontend/school-management-mobile/src/app/index.tsx`
- [Explore screen](https://github.com/rachitjain13/school-main/blob/main/frontend/school-management-mobile/src/app/explore.tsx): `frontend/school-management-mobile/src/app/explore.tsx`

### Other components

- **Super admin**
- **School user**
- **MongoDB**

## Connections

- Super admin → Auth routes: requests login (evidence: `backend/src/modules/auth/routes/auth.routes.ts`)
- Auth routes → Login controller: routes login (evidence: `backend/src/modules/auth/routes/auth.routes.ts`)
- Login controller → Login service: authenticates (evidence: `backend/src/modules/auth/controllers/login.controller.ts`)
- Login controller → Token service: creates token (evidence: `backend/src/modules/auth/controllers/login.controller.ts`)
- Login controller → Session service: creates session (evidence: `backend/src/modules/auth/controllers/login.controller.ts`)
- Auth routes → Session controller: routes refresh/logout (evidence: `backend/src/modules/auth/routes/auth.routes.ts`)
- Session controller → Session service: rotates or revokes (evidence: `backend/src/modules/auth/controllers/session.controller.ts`)
- Session controller → Token service: creates access token (evidence: `backend/src/modules/auth/controllers/session.controller.ts`)
- Session controller → MongoDB: looks up user (evidence: `backend/src/modules/auth/controllers/session.controller.ts`)
- Session service → Session records: reads/writes sessions (evidence: `backend/src/modules/auth/services/session.service.ts`)
- Session service → MongoDB: stores token history (evidence: `backend/src/modules/auth/services/session.service.ts`)
- Super admin → Admin routes: manages schools (evidence: `backend/src/modules/super-admin/routes/super-admin.routes.ts`)
- Admin routes → Draft controller: routes draft creation (evidence: `backend/src/modules/super-admin/routes/super-admin.routes.ts`)
- Draft controller → Draft service: creates draft (evidence: `backend/src/modules/super-admin/controllers/school-draft.controller.ts`)
- Admin routes → Confirmation controller: routes confirmation (evidence: `backend/src/modules/super-admin/routes/super-admin.routes.ts`)
- Confirmation controller → Confirmation service: confirms draft (evidence: `backend/src/modules/super-admin/controllers/school-confirmation.controller.ts`)
- Confirmation service → Draft records: reads/updates draft (evidence: `backend/src/modules/super-admin/services/school-confirmation.service.ts`)
- Confirmation service → School records: checks and creates school (evidence: `backend/src/modules/super-admin/services/school-confirmation.service.ts`)
- Admin routes → Provision controller: routes provisioning (evidence: `backend/src/modules/super-admin/routes/super-admin.routes.ts`)
- Provision controller → Provisioning service: provisions database (evidence: `backend/src/modules/super-admin/controllers/school-provisioning.controller.ts`)
- Provisioning service → Tenant connections: opens tenant connection (evidence: `backend/src/modules/super-admin/services/school-provisioning.service.ts`)
- Provisioning service → Tenant registry: updates registry (evidence: `backend/src/modules/super-admin/services/school-provisioning.service.ts`)
- Tenant connections → MongoDB: connects database (evidence: `backend/src/infrastructure/tenant-connection.manager.ts`)
- School user → School routes: requests dashboard (evidence: `backend/src/modules/school/routes/school.routes.ts`)
- School routes → Auth middleware: authenticates request (evidence: `backend/src/modules/school/routes/school.routes.ts`)
- School routes → Tenant resolver: resolves tenant (evidence: `backend/src/modules/school/routes/school.routes.ts`)
- Express app → MongoDB: uses database config
