# azizahadovv/new-star-school architecture

> Architecture diagram of the GitHub repository azizahadovv/new-star-school, 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/azizahadovv/new-star-school
- Repository: https://github.com/azizahadovv/new-star-school

## Overview

New Star School is a multi-role school-management product: one React application serves administrators, directors, deputy directors, teachers, and students, backed by a Spring REST API and PostgreSQL. The central workflow is role-aware navigation to school records and academic work—classes and timetables, then grades and attendance—with results returned through the API. The backend also documents finance, admissions, communication, and operational modules. Relationships follow the documented layered backend architecture; sampled service excerpts substantiate class, timetable, grade, and Telegram behavior, but most module-specific wiring was not inspected.

Main entry points: [`backend/src/main/java/com/nss/api`](https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/api) (Academic API), [`backend/src/main/java/com/nss/repository`](https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/repository) (Academic records), [`backend/src/main/java/com/nss/entity`](https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/entity) (Domain entities), [`frontend/src/app/routes.js`](https://github.com/azizahadovv/new-star-school/blob/main/frontend/src/app/routes.js) (Role routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_app["React app<br/>[App.jsx]"]
  node_routes["Role routes<br/>[routes.js]"]
  node_query["Server-state cache<br/>[queryClient.js]"]
end

subgraph group_access["Identity and tenancy"]
  node_auth_api["Authentication API"]
  node_authenticate["Login and refresh"]
  node_jwt["JWT services<br/>[JwtService.java]"]
  node_security["Role security"]
  node_tenant["Tenant context<br/>[TenantFilter.java]"]
end

subgraph group_academic["Academic management"]
  node_academic_api["Academic API"]
  node_classes["Class and student records"]
  node_timetable["Timetable planning"]
  node_grades["Grades and attendance<br/>[GradeService.java]"]
  node_exams["Exams and homework"]
  node_academic_store[("Academic records")]
end

subgraph group_operations["School operations"]
  node_operations_api["Operations API"]
  node_finance["Finance and payroll"]
  node_admissions["Admissions and reception"]
  node_school_ops["School operations"]
  node_analytics["Analytics and BI"]
  node_telegram["Telegram user records"]
end

subgraph group_platform["Backend platform"]
  node_records["Domain entities"]
  node_postgres[("PostgreSQL")]
end

node_users(("School roles"))

node_users -->|"use"| node_app
node_app -->|"build routes"| node_routes
node_routes -->|"role-gated requests"| node_academic_api
node_routes -->|"role-gated requests"| node_operations_api
node_academic_api -->|"authenticate"| node_auth_api
node_auth_api -->|"delegate login"| node_authenticate
node_authenticate -->|"issue tokens"| node_jwt
node_authenticate -->|"load user"| node_records
node_security -->|"validate tokens"| node_jwt
node_security -->|"apply tenant context"| node_tenant
node_academic_api -->|"delegate class work"| node_classes
node_academic_api -->|"delegate scheduling"| node_timetable
node_academic_api -->|"delegate grading"| node_grades
node_academic_api -->|"serve exam work"| node_exams
node_classes -->|"read and write"| node_academic_store
node_timetable -->|"read and write"| node_academic_store
node_grades -->|"read and write"| node_academic_store
node_exams -->|"read and write"| node_academic_store
node_operations_api -->|"delegate finance"| node_finance
node_operations_api -->|"delegate admissions"| node_admissions
node_operations_api -->|"delegate operations"| node_school_ops
node_operations_api -->|"delegate analytics"| node_analytics
node_operations_api -->|"delegate user records"| node_telegram
node_telegram -->|"persist records"| node_records
node_academic_store -->|"map entities"| node_records
node_records -->|"persist"| node_postgres
node_academic_api -->|"return data"| node_query

click node_app "https://github.com/azizahadovv/new-star-school/blob/main/frontend/src/App.jsx"
click node_routes "https://github.com/azizahadovv/new-star-school/blob/main/frontend/src/app/routes.js"
click node_query "https://github.com/azizahadovv/new-star-school/blob/main/frontend/src/app/queryClient.js"
click node_auth_api "https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/auth/AuthenticationController.java"
click node_authenticate "https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/auth/AuthenticateService.java"
click node_jwt "https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/auth/JwtService.java"
click node_security "https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/auth/SecurityConfiguration.java"
click node_tenant "https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/tenant/TenantFilter.java"
click node_academic_api "https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/api"
click node_classes "https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/service/SchoolClassService.java"
click node_timetable "https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/service/TimetableService.java"
click node_grades "https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/service/GradeService.java"
click node_exams "https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/service"
click node_academic_store "https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/repository"
click node_operations_api "https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/api"
click node_finance "https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/service"
click node_admissions "https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/service"
click node_school_ops "https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/service"
click node_analytics "https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/service"
click node_telegram "https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/service/telegram/TelegramUserService.java"
click node_records "https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/entity"

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_routes,node_query toneBlue
class node_auth_api,node_authenticate,node_jwt,node_security,node_tenant toneAmber
class node_academic_api,node_classes,node_timetable,node_grades,node_exams,node_academic_store toneMint
class node_operations_api,node_finance,node_admissions,node_school_ops,node_analytics,node_telegram toneRose
class node_records,node_postgres,node_users toneIndigo
```

## Components

### Web application

- [React app](https://github.com/azizahadovv/new-star-school/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Role routes](https://github.com/azizahadovv/new-star-school/blob/main/frontend/src/app/routes.js): `frontend/src/app/routes.js`
- [Server-state cache](https://github.com/azizahadovv/new-star-school/blob/main/frontend/src/app/queryClient.js): `frontend/src/app/queryClient.js`

### Identity and tenancy

- [Authentication API](https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/auth/AuthenticationController.java): `backend/src/main/java/com/nss/auth/AuthenticationController.java`
- [Login and refresh](https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/auth/AuthenticateService.java): `backend/src/main/java/com/nss/auth/AuthenticateService.java`
- [JWT services](https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/auth/JwtService.java): `backend/src/main/java/com/nss/auth/JwtService.java`
- [Role security](https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/auth/SecurityConfiguration.java): `backend/src/main/java/com/nss/auth/SecurityConfiguration.java`
- [Tenant context](https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/tenant/TenantFilter.java): `backend/src/main/java/com/nss/tenant/TenantFilter.java`

### Academic management

- [Academic API](https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/api): `backend/src/main/java/com/nss/api`
- [Class and student records](https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/service/SchoolClassService.java): `backend/src/main/java/com/nss/service/SchoolClassService.java`
- [Timetable planning](https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/service/TimetableService.java): `backend/src/main/java/com/nss/service/TimetableService.java`
- [Grades and attendance](https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/service/GradeService.java): `backend/src/main/java/com/nss/service/GradeService.java`
- [Exams and homework](https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/service): `backend/src/main/java/com/nss/service`
- [Academic records](https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/repository): `backend/src/main/java/com/nss/repository`

### School operations

- [Operations API](https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/api): `backend/src/main/java/com/nss/api`
- [Finance and payroll](https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/service): `backend/src/main/java/com/nss/service`
- [Admissions and reception](https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/service): `backend/src/main/java/com/nss/service`
- [School operations](https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/service): `backend/src/main/java/com/nss/service`
- [Analytics and BI](https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/service): `backend/src/main/java/com/nss/service`
- [Telegram user records](https://github.com/azizahadovv/new-star-school/blob/main/backend/src/main/java/com/nss/service/telegram/TelegramUserService.java): `backend/src/main/java/com/nss/service/telegram/TelegramUserService.java`

### Backend platform

- [Domain entities](https://github.com/azizahadovv/new-star-school/tree/main/backend/src/main/java/com/nss/entity): `backend/src/main/java/com/nss/entity`
- **PostgreSQL**

### Other components

- **School roles**

## Connections

- School roles → React app: use
- React app → Role routes: build routes
- Role routes → Academic API: role-gated requests
- Role routes → Operations API: role-gated requests
- Academic API → Authentication API: authenticate
- Authentication API → Login and refresh: delegate login
- Login and refresh → JWT services: issue tokens
- Login and refresh → Domain entities: load user
- Role security → JWT services: validate tokens
- Role security → Tenant context: apply tenant context
- Academic API → Class and student records: delegate class work
- Academic API → Timetable planning: delegate scheduling
- Academic API → Grades and attendance: delegate grading
- Academic API → Exams and homework: serve exam work
- Class and student records → Academic records: read and write
- Timetable planning → Academic records: read and write
- Grades and attendance → Academic records: read and write
- Exams and homework → Academic records: read and write
- Operations API → Finance and payroll: delegate finance
- Operations API → Admissions and reception: delegate admissions
- Operations API → School operations: delegate operations
- Operations API → Analytics and BI: delegate analytics
- Operations API → Telegram user records: delegate user records
- Telegram user records → Domain entities: persist records
- Academic records → Domain entities: map entities
- Domain entities → PostgreSQL: persist
- Academic API → Server-state cache: return data
