# navnirmitieduquality/projectvigyan architecture

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

- Interactive diagram: https://gitdiagram.com/navnirmitieduquality/projectvigyan
- Repository: https://github.com/navnirmitieduquality/projectvigyan

## Overview

Project Vigyan is a multi-platform school and para-teacher application; this graph covers the FastAPI backend represented in the supplied tree. The principal workflow is authenticated API use to manage schools, classes, learners and teaching sessions, then record lesson activity and evidence; planning, calendars and assessments are adjacent capabilities. Photo handling is shown as a reusable internal layer. Edges are limited to relationships evidenced by excerpts, the source index or README; unsampled router behavior is not inferred.

Main entry points: [`backend/app/main.py`](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/main.py) (FastAPI application), [`backend/app/services/photo/service.py`](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/photo/service.py) (Photo coordination), [`backend/app/dependencies.py`](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/dependencies.py) (Authentication and permissions), [`backend/app/models`](https://github.com/navnirmitieduquality/projectvigyan/tree/main/backend/app/models) (Session and school data)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["API and access"]
  node_api["FastAPI application<br/>[main.py]"]
  node_auth_routes["Authentication routes<br/>[auth.py]"]
  node_access["Authentication and permissions<br/>[dependencies.py]"]
  node_auth_service["Credential and token helpers<br/>[auth_service.py]"]
  node_database[("PostgreSQL access<br/>[database.py]")]
end

subgraph group_school["School operations"]
  node_schools["School administration<br/>[schools.py]"]
  node_classes["Class divisions<br/>[class_divisions.py]"]
  node_students["Student records<br/>[students.py]"]
end

subgraph group_lesson["Teaching workflow"]
  node_sessions["Teaching sessions"]
  node_attendance["Session attendance<br/>[attendance.py]"]
  node_engagement["Learner engagement<br/>[engagement.py]"]
  node_session_models[("Session and school data")]
end

subgraph group_planning["Planning and assessment"]
  node_plans["Session planning<br/>[session_plan.py]"]
  node_plan_service["Plan operations<br/>[service.py]"]
  node_calendar["Academic calendar"]
  node_calendar_service["Calendar operations<br/>[service.py]"]
  node_assessment["Assessment management<br/>[assessment.py]"]
  node_assessment_service["Assessment operations<br/>[service.py]"]
end

subgraph group_media["Evidence and media"]
  node_evidence["Session evidence"]
  node_evidence_service["Evidence operations<br/>[service.py]"]
  node_tlm["Teaching materials usage<br/>[session_tlm.py]"]
  node_tlm_service["Materials operations<br/>[service.py]"]
  node_photo_service["Photo coordination<br/>[service.py]"]
  node_photo_processing["Photo processing<br/>[processing.py]"]
  node_photo_storage["Photo storage<br/>[local.py]"]
end

node_teacher(("Para-teacher"))
node_manager(("Management user"))

node_teacher -->|"uses"| node_api
node_manager -->|"uses"| node_api
node_api -->|"registers"| node_auth_routes
node_api -->|"registers"| node_schools
node_api -->|"registers"| node_classes
node_api -->|"registers"| node_students
node_api -->|"registers"| node_sessions
node_api -->|"registers"| node_attendance
node_api -->|"registers"| node_engagement
node_api -->|"registers"| node_plans
node_api -->|"registers"| node_calendar
node_api -->|"registers"| node_assessment
node_api -->|"registers"| node_evidence
node_api -->|"registers"| node_tlm
node_auth_routes -->|"uses"| node_auth_service
node_auth_routes -->|"checks access"| node_access
node_classes -->|"checks access"| node_access
node_students -->|"checks access"| node_access
node_sessions -->|"queries"| node_session_models
node_attendance -->|"queries"| node_session_models
node_engagement -->|"queries"| node_session_models
node_plans -->|"uses"| node_plan_service
node_calendar -->|"uses"| node_calendar_service
node_calendar -->|"uses"| node_plan_service
node_assessment -->|"uses"| node_assessment_service
node_evidence -->|"uses"| node_evidence_service
node_tlm -->|"uses"| node_tlm_service
node_evidence_service -->|"uses"| node_photo_service
node_tlm_service -->|"uses"| node_photo_service
node_photo_service -->|"processes"| node_photo_processing
node_photo_service -->|"stores"| node_photo_storage
node_access -->|"reads"| node_database
node_photo_service -->|"persists photo"| node_database
node_session_models -->|"maps tables"| node_database

click node_api "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/main.py"
click node_auth_routes "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/auth.py"
click node_access "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/dependencies.py"
click node_auth_service "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/auth_service.py"
click node_schools "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/schools.py"
click node_classes "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/class_divisions.py"
click node_students "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/students.py"
click node_sessions "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/teaching_sessions.py"
click node_attendance "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/attendance.py"
click node_engagement "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/engagement.py"
click node_session_models "https://github.com/navnirmitieduquality/projectvigyan/tree/main/backend/app/models"
click node_plans "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/session_plan.py"
click node_plan_service "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/session_plan/service.py"
click node_calendar "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/academic_calendar.py"
click node_calendar_service "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/academic_calendar/service.py"
click node_assessment "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/assessment.py"
click node_assessment_service "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/assessment/service.py"
click node_evidence "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/session_evidence.py"
click node_evidence_service "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/session_evidence/service.py"
click node_tlm "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/session_tlm.py"
click node_tlm_service "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/session_tlm/service.py"
click node_photo_service "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/photo/service.py"
click node_photo_processing "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/photo/processing.py"
click node_photo_storage "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/photo/storage/local.py"
click node_database "https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/database.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_api,node_auth_routes,node_access,node_auth_service,node_database,node_manager toneBlue
class node_schools,node_classes,node_students toneAmber
class node_sessions,node_attendance,node_engagement,node_session_models toneMint
class node_plans,node_plan_service,node_calendar,node_calendar_service,node_assessment,node_assessment_service toneRose
class node_evidence,node_evidence_service,node_tlm,node_tlm_service,node_photo_service,node_photo_processing,node_photo_storage,node_teacher toneIndigo
```

## Components

### API and access

- [FastAPI application](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/main.py): `backend/app/main.py`
- [Authentication routes](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/auth.py): `backend/app/routers/auth.py`
- [Authentication and permissions](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/dependencies.py): `backend/app/dependencies.py`
- [Credential and token helpers](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/auth_service.py): `backend/app/services/auth_service.py`
- [PostgreSQL access](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/database.py): `backend/app/database.py`

### School operations

- [School administration](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/schools.py): `backend/app/routers/schools.py`
- [Class divisions](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/class_divisions.py): `backend/app/routers/class_divisions.py`
- [Student records](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/students.py): `backend/app/routers/students.py`

### Teaching workflow

- [Teaching sessions](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/teaching_sessions.py): `backend/app/routers/teaching_sessions.py`
- [Session attendance](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/attendance.py): `backend/app/routers/attendance.py`
- [Learner engagement](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/engagement.py): `backend/app/routers/engagement.py`
- [Session and school data](https://github.com/navnirmitieduquality/projectvigyan/tree/main/backend/app/models): `backend/app/models`

### Planning and assessment

- [Session planning](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/session_plan.py): `backend/app/routers/session_plan.py`
- [Plan operations](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/session_plan/service.py): `backend/app/services/session_plan/service.py`
- [Academic calendar](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/academic_calendar.py): `backend/app/routers/academic_calendar.py`
- [Calendar operations](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/academic_calendar/service.py): `backend/app/services/academic_calendar/service.py`
- [Assessment management](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/assessment.py): `backend/app/routers/assessment.py`
- [Assessment operations](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/assessment/service.py): `backend/app/services/assessment/service.py`

### Evidence and media

- [Session evidence](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/session_evidence.py): `backend/app/routers/session_evidence.py`
- [Evidence operations](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/session_evidence/service.py): `backend/app/services/session_evidence/service.py`
- [Teaching materials usage](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/routers/session_tlm.py): `backend/app/routers/session_tlm.py`
- [Materials operations](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/session_tlm/service.py): `backend/app/services/session_tlm/service.py`
- [Photo coordination](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/photo/service.py): `backend/app/services/photo/service.py`
- [Photo processing](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/photo/processing.py): `backend/app/services/photo/processing.py`
- [Photo storage](https://github.com/navnirmitieduquality/projectvigyan/blob/main/backend/app/services/photo/storage/local.py): `backend/app/services/photo/storage/local.py`

### Other components

- **Para-teacher**
- **Management user**

## Connections

- Para-teacher → FastAPI application: uses
- Management user → FastAPI application: uses
- FastAPI application → Authentication routes: registers (evidence: `backend/app/main.py`)
- FastAPI application → School administration: registers (evidence: `backend/app/main.py`)
- FastAPI application → Class divisions: registers (evidence: `backend/app/main.py`)
- FastAPI application → Student records: registers (evidence: `backend/app/main.py`)
- FastAPI application → Teaching sessions: registers (evidence: `backend/app/main.py`)
- FastAPI application → Session attendance: registers (evidence: `backend/app/main.py`)
- FastAPI application → Learner engagement: registers (evidence: `backend/app/main.py`)
- FastAPI application → Session planning: registers (evidence: `backend/app/main.py`)
- FastAPI application → Academic calendar: registers (evidence: `backend/app/main.py`)
- FastAPI application → Assessment management: registers (evidence: `backend/app/main.py`)
- FastAPI application → Session evidence: registers (evidence: `backend/app/main.py`)
- FastAPI application → Teaching materials usage: registers (evidence: `backend/app/main.py`)
- Authentication routes → Credential and token helpers: uses (evidence: `backend/app/routers/auth.py`)
- Authentication routes → Authentication and permissions: checks access (evidence: `backend/app/routers/auth.py`)
- Class divisions → Authentication and permissions: checks access (evidence: `backend/app/routers/class_divisions.py`)
- Student records → Authentication and permissions: checks access (evidence: `backend/app/routers/students.py`)
- Teaching sessions → Session and school data: queries (evidence: `backend/app/routers/teaching_sessions.py`)
- Session attendance → Session and school data: queries (evidence: `backend/app/routers/attendance.py`)
- Learner engagement → Session and school data: queries (evidence: `backend/app/routers/engagement.py`)
- Session planning → Plan operations: uses (evidence: `backend/app/routers/session_plan.py`)
- Academic calendar → Calendar operations: uses (evidence: `backend/app/routers/academic_calendar.py`)
- Academic calendar → Plan operations: uses (evidence: `backend/app/routers/academic_calendar.py`)
- Assessment management → Assessment operations: uses (evidence: `backend/app/routers/assessment.py`)
- Session evidence → Evidence operations: uses (evidence: `backend/app/routers/session_evidence.py`)
- Teaching materials usage → Materials operations: uses (evidence: `backend/app/routers/session_tlm.py`)
- Evidence operations → Photo coordination: uses (evidence: `backend/app/services/session_evidence/service.py`)
- Materials operations → Photo coordination: uses (evidence: `backend/app/services/session_tlm/service.py`)
- Photo coordination → Photo processing: processes (evidence: `backend/app/services/photo/service.py`)
- Photo coordination → Photo storage: stores (evidence: `backend/app/services/photo/service.py`)
- Authentication and permissions → PostgreSQL access: reads (evidence: `backend/app/dependencies.py`)
- Photo coordination → PostgreSQL access: persists photo (evidence: `backend/app/services/photo/service.py`)
- Session and school data → PostgreSQL access: maps tables (evidence: `backend/app/models/teaching_session.py`)
