# herbertekin/educore-ai architecture

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

- Interactive diagram: https://gitdiagram.com/herbertekin/educore-ai
- Repository: https://github.com/herbertekin/educore-ai

## Overview

EduCore AI is a school-management web application. Users enter through the React app, authenticate and select a school context, then use role-specific dashboards and management screens for academic, attendance, assessment, staffing, and finance tasks. The screens use a shared Supabase client for backend access. The README is still the default Vite template, so capabilities are inferred from the source tree and sampled modules; relationships involving unsampled pages are limited to references in the source index.

Main entry points: [`src/lib/supabase.ts`](https://github.com/herbertekin/educore-ai/blob/main/src/lib/supabase.ts) (Supabase client), [`src/App.tsx`](https://github.com/herbertekin/educore-ai/blob/main/src/App.tsx) (Session and routing), [`src/pages/Dashboard.tsx`](https://github.com/herbertekin/educore-ai/blob/main/src/pages/Dashboard.tsx) (School dashboard), [`src/pages/ExaminationManagement.tsx`](https://github.com/herbertekin/educore-ai/blob/main/src/pages/ExaminationManagement.tsx) (Examination management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App Entry"]
  node_app["Session and routing<br/>[App.tsx]"]
  node_landing["Landing page<br/>[LandingPage.tsx]"]
  node_dashboard["School dashboard<br/>[Dashboard.tsx]"]
  node_teacher_dashboard["Teacher dashboard"]
end

subgraph group_academics["Academic Operations"]
  node_calendar["Academic calendar"]
  node_timetable["Timetable management"]
  node_assessment["Assessment management"]
  node_exams["Examination management"]
  node_papers["Examination papers"]
  node_results["Examination results"]
  node_grading["Grading settings"]
  node_cbe["CBE management<br/>[CBEManagement.tsx]"]
end

subgraph group_people["School Operations"]
  node_attendance["Attendance management"]
  node_attendance_reports["Attendance reports"]
  node_students["Student management"]
  node_classes["Class management"]
  node_teachers["Teacher management"]
  node_teacher_directory["Teacher directory"]
  node_teacher_assignments["Teacher assignments"]
end

subgraph group_finance["Finance Operations"]
  node_fees["Parent fees<br/>[ParentFees.tsx]"]
  node_invoices["Invoice management"]
  node_payments["Payment management"]
  node_receipts["Payment receipt<br/>[PaymentReceipt.tsx]"]
  node_finance_overview["Finance overview"]
end

subgraph group_backend["Backend Access"]
  node_supabase_client["Supabase client<br/>[supabase.ts]"]
  node_supabase_service[("Supabase platform")]
end

node_user(("School user"))

node_user -->|"opens"| node_app
node_app -->|"authenticates"| node_supabase_client
node_app -->|"renders"| node_landing
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_teacher_dashboard
node_app -->|"routes to"| node_attendance
node_app -->|"routes to"| node_attendance_reports
node_app -->|"routes to"| node_timetable
node_app -->|"routes to"| node_assessment
node_app -->|"routes to"| node_exams
node_app -->|"routes to"| node_results
node_app -->|"routes to"| node_cbe
node_dashboard -->|"loads page"| node_students
node_dashboard -->|"loads page"| node_classes
node_dashboard -->|"loads page"| node_calendar
node_dashboard -->|"loads page"| node_invoices
node_dashboard -->|"loads page"| node_payments
node_dashboard -->|"loads page"| node_finance_overview
node_dashboard -->|"loads page"| node_teacher_assignments
node_exams -->|"loads component"| node_papers
node_payments -->|"uses receipt"| node_receipts
node_teachers -->|"loads component"| node_teacher_directory
node_teachers -->|"loads component"| node_teacher_assignments
node_calendar -->|"queries data"| node_supabase_client
node_timetable -->|"queries data"| node_supabase_client
node_assessment -->|"queries data"| node_supabase_client
node_exams -->|"queries data"| node_supabase_client
node_papers -->|"queries data"| node_supabase_client
node_results -->|"queries data"| node_supabase_client
node_grading -->|"queries data"| node_supabase_client
node_cbe -->|"queries data"| node_supabase_client
node_attendance -->|"queries data"| node_supabase_client
node_attendance_reports -->|"queries data"| node_supabase_client
node_students -->|"queries data"| node_supabase_client
node_classes -->|"queries data"| node_supabase_client
node_teacher_assignments -->|"queries data"| node_supabase_client
node_teacher_directory -->|"queries data"| node_supabase_client
node_fees -->|"queries data"| node_supabase_client
node_invoices -->|"queries data"| node_supabase_client
node_payments -->|"queries data"| node_supabase_client
node_receipts -->|"queries data"| node_supabase_client
node_finance_overview -->|"queries data"| node_supabase_client
node_supabase_client -->|"connects to"| node_supabase_service

click node_app "https://github.com/herbertekin/educore-ai/blob/main/src/App.tsx"
click node_landing "https://github.com/herbertekin/educore-ai/blob/main/src/LandingPage.tsx"
click node_dashboard "https://github.com/herbertekin/educore-ai/blob/main/src/pages/Dashboard.tsx"
click node_teacher_dashboard "https://github.com/herbertekin/educore-ai/blob/main/src/pages/TeacherDashboard.tsx"
click node_calendar "https://github.com/herbertekin/educore-ai/blob/main/src/pages/AcademicCalendar.tsx"
click node_timetable "https://github.com/herbertekin/educore-ai/blob/main/src/pages/TimetableManagement.tsx"
click node_assessment "https://github.com/herbertekin/educore-ai/blob/main/src/pages/AssessmentManagement.tsx"
click node_exams "https://github.com/herbertekin/educore-ai/blob/main/src/pages/ExaminationManagement.tsx"
click node_papers "https://github.com/herbertekin/educore-ai/blob/main/src/pages/ExaminationPapersManagement.tsx"
click node_results "https://github.com/herbertekin/educore-ai/blob/main/src/pages/ExaminationResultsManagement.tsx"
click node_grading "https://github.com/herbertekin/educore-ai/blob/main/src/GradingSettings.tsx"
click node_cbe "https://github.com/herbertekin/educore-ai/blob/main/src/pages/CBEManagement.tsx"
click node_attendance "https://github.com/herbertekin/educore-ai/blob/main/src/pages/AttendanceManagement.tsx"
click node_attendance_reports "https://github.com/herbertekin/educore-ai/blob/main/src/pages/AttendanceReports.tsx"
click node_students "https://github.com/herbertekin/educore-ai/blob/main/src/pages/StudentManagement.tsx"
click node_classes "https://github.com/herbertekin/educore-ai/blob/main/src/pages/ClassManagement.tsx"
click node_teachers "https://github.com/herbertekin/educore-ai/blob/main/src/pages/TeacherManagement.tsx"
click node_teacher_directory "https://github.com/herbertekin/educore-ai/blob/main/src/pages/TeacherDirectory.tsx"
click node_teacher_assignments "https://github.com/herbertekin/educore-ai/blob/main/src/pages/TeacherAssignmentManagement.tsx"
click node_fees "https://github.com/herbertekin/educore-ai/blob/main/src/pages/ParentFees.tsx"
click node_invoices "https://github.com/herbertekin/educore-ai/blob/main/src/pages/InvoiceManagement.tsx"
click node_payments "https://github.com/herbertekin/educore-ai/blob/main/src/pages/PaymentManagement.tsx"
click node_receipts "https://github.com/herbertekin/educore-ai/blob/main/src/pages/PaymentReceipt.tsx"
click node_finance_overview "https://github.com/herbertekin/educore-ai/blob/main/src/pages/FinanceOverview.tsx"
click node_supabase_client "https://github.com/herbertekin/educore-ai/blob/main/src/lib/supabase.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_app,node_landing,node_dashboard,node_teacher_dashboard,node_user toneBlue
class node_calendar,node_timetable,node_assessment,node_exams,node_papers,node_results,node_grading,node_cbe toneAmber
class node_attendance,node_attendance_reports,node_students,node_classes,node_teachers,node_teacher_directory,node_teacher_assignments toneMint
class node_fees,node_invoices,node_payments,node_receipts,node_finance_overview toneRose
class node_supabase_client,node_supabase_service toneIndigo
```

## Components

### App Entry

- [Session and routing](https://github.com/herbertekin/educore-ai/blob/main/src/App.tsx): `src/App.tsx`
- [Landing page](https://github.com/herbertekin/educore-ai/blob/main/src/LandingPage.tsx): `src/LandingPage.tsx`
- [School dashboard](https://github.com/herbertekin/educore-ai/blob/main/src/pages/Dashboard.tsx): `src/pages/Dashboard.tsx`
- [Teacher dashboard](https://github.com/herbertekin/educore-ai/blob/main/src/pages/TeacherDashboard.tsx): `src/pages/TeacherDashboard.tsx`

### Academic Operations

- [Academic calendar](https://github.com/herbertekin/educore-ai/blob/main/src/pages/AcademicCalendar.tsx): `src/pages/AcademicCalendar.tsx`
- [Timetable management](https://github.com/herbertekin/educore-ai/blob/main/src/pages/TimetableManagement.tsx): `src/pages/TimetableManagement.tsx`
- [Assessment management](https://github.com/herbertekin/educore-ai/blob/main/src/pages/AssessmentManagement.tsx): `src/pages/AssessmentManagement.tsx`
- [Examination management](https://github.com/herbertekin/educore-ai/blob/main/src/pages/ExaminationManagement.tsx): `src/pages/ExaminationManagement.tsx`
- [Examination papers](https://github.com/herbertekin/educore-ai/blob/main/src/pages/ExaminationPapersManagement.tsx): `src/pages/ExaminationPapersManagement.tsx`
- [Examination results](https://github.com/herbertekin/educore-ai/blob/main/src/pages/ExaminationResultsManagement.tsx): `src/pages/ExaminationResultsManagement.tsx`
- [Grading settings](https://github.com/herbertekin/educore-ai/blob/main/src/GradingSettings.tsx): `src/GradingSettings.tsx`
- [CBE management](https://github.com/herbertekin/educore-ai/blob/main/src/pages/CBEManagement.tsx): `src/pages/CBEManagement.tsx`

### School Operations

- [Attendance management](https://github.com/herbertekin/educore-ai/blob/main/src/pages/AttendanceManagement.tsx): `src/pages/AttendanceManagement.tsx`
- [Attendance reports](https://github.com/herbertekin/educore-ai/blob/main/src/pages/AttendanceReports.tsx): `src/pages/AttendanceReports.tsx`
- [Student management](https://github.com/herbertekin/educore-ai/blob/main/src/pages/StudentManagement.tsx): `src/pages/StudentManagement.tsx`
- [Class management](https://github.com/herbertekin/educore-ai/blob/main/src/pages/ClassManagement.tsx): `src/pages/ClassManagement.tsx`
- [Teacher management](https://github.com/herbertekin/educore-ai/blob/main/src/pages/TeacherManagement.tsx): `src/pages/TeacherManagement.tsx`
- [Teacher directory](https://github.com/herbertekin/educore-ai/blob/main/src/pages/TeacherDirectory.tsx): `src/pages/TeacherDirectory.tsx`
- [Teacher assignments](https://github.com/herbertekin/educore-ai/blob/main/src/pages/TeacherAssignmentManagement.tsx): `src/pages/TeacherAssignmentManagement.tsx`

### Finance Operations

- [Parent fees](https://github.com/herbertekin/educore-ai/blob/main/src/pages/ParentFees.tsx): `src/pages/ParentFees.tsx`
- [Invoice management](https://github.com/herbertekin/educore-ai/blob/main/src/pages/InvoiceManagement.tsx): `src/pages/InvoiceManagement.tsx`
- [Payment management](https://github.com/herbertekin/educore-ai/blob/main/src/pages/PaymentManagement.tsx): `src/pages/PaymentManagement.tsx`
- [Payment receipt](https://github.com/herbertekin/educore-ai/blob/main/src/pages/PaymentReceipt.tsx): `src/pages/PaymentReceipt.tsx`
- [Finance overview](https://github.com/herbertekin/educore-ai/blob/main/src/pages/FinanceOverview.tsx): `src/pages/FinanceOverview.tsx`

### Backend Access

- [Supabase client](https://github.com/herbertekin/educore-ai/blob/main/src/lib/supabase.ts): `src/lib/supabase.ts`
- **Supabase platform**

### Other components

- **School user**

## Connections

- School user → Session and routing: opens
- Session and routing → Supabase client: authenticates (evidence: `src/App.tsx`)
- Session and routing → Landing page: renders (evidence: `src/App.tsx`)
- Session and routing → School dashboard: routes to (evidence: `src/App.tsx`)
- Session and routing → Teacher dashboard: routes to (evidence: `src/App.tsx`)
- Session and routing → Attendance management: routes to (evidence: `src/App.tsx`)
- Session and routing → Attendance reports: routes to (evidence: `src/App.tsx`)
- Session and routing → Timetable management: routes to (evidence: `src/App.tsx`)
- Session and routing → Assessment management: routes to (evidence: `src/App.tsx`)
- Session and routing → Examination management: routes to (evidence: `src/App.tsx`)
- Session and routing → Examination results: routes to (evidence: `src/App.tsx`)
- Session and routing → CBE management: routes to (evidence: `src/App.tsx`)
- School dashboard → Student management: loads page (evidence: `src/pages/Dashboard.tsx`)
- School dashboard → Class management: loads page (evidence: `src/pages/Dashboard.tsx`)
- School dashboard → Academic calendar: loads page (evidence: `src/pages/Dashboard.tsx`)
- School dashboard → Invoice management: loads page (evidence: `src/pages/Dashboard.tsx`)
- School dashboard → Payment management: loads page (evidence: `src/pages/Dashboard.tsx`)
- School dashboard → Finance overview: loads page (evidence: `src/pages/Dashboard.tsx`)
- School dashboard → Teacher assignments: loads page (evidence: `src/pages/Dashboard.tsx`)
- Examination management → Examination papers: loads component (evidence: `src/pages/ExaminationManagement.tsx`)
- Payment management → Payment receipt: uses receipt (evidence: `src/pages/PaymentManagement.tsx`)
- Teacher management → Teacher directory: loads component (evidence: `src/pages/TeacherManagement.tsx`)
- Teacher management → Teacher assignments: loads component (evidence: `src/pages/TeacherManagement.tsx`)
- Academic calendar → Supabase client: queries data (evidence: `src/pages/AcademicCalendar.tsx`)
- Timetable management → Supabase client: queries data (evidence: `src/pages/TimetableManagement.tsx`)
- Assessment management → Supabase client: queries data (evidence: `src/pages/AssessmentManagement.tsx`)
- Examination management → Supabase client: queries data (evidence: `src/pages/ExaminationManagement.tsx`)
- Examination papers → Supabase client: queries data (evidence: `src/pages/ExaminationPapersManagement.tsx`)
- Examination results → Supabase client: queries data (evidence: `src/pages/ExaminationResultsManagement.tsx`)
- Grading settings → Supabase client: queries data (evidence: `src/GradingSettings.tsx`)
- CBE management → Supabase client: queries data (evidence: `src/pages/CBEManagement.tsx`)
- Attendance management → Supabase client: queries data (evidence: `src/pages/AttendanceManagement.tsx`)
- Attendance reports → Supabase client: queries data (evidence: `src/pages/AttendanceReports.tsx`)
- Student management → Supabase client: queries data (evidence: `src/pages/StudentManagement.tsx`)
- Class management → Supabase client: queries data (evidence: `src/pages/ClassManagement.tsx`)
- Teacher assignments → Supabase client: queries data (evidence: `src/pages/TeacherAssignmentManagement.tsx`)
- Teacher directory → Supabase client: queries data (evidence: `src/pages/TeacherDirectory.tsx`)
- Parent fees → Supabase client: queries data (evidence: `src/pages/ParentFees.tsx`)
- Invoice management → Supabase client: queries data (evidence: `src/pages/InvoiceManagement.tsx`)
- Payment management → Supabase client: queries data (evidence: `src/pages/PaymentManagement.tsx`)
- Payment receipt → Supabase client: queries data (evidence: `src/pages/PaymentReceipt.tsx`)
- Finance overview → Supabase client: queries data (evidence: `src/pages/FinanceOverview.tsx`)
- Supabase client → Supabase platform: connects to (evidence: `src/lib/supabase.ts`)
