# ceasar789/dpnhsportal01 architecture

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

- Interactive diagram: https://gitdiagram.com/ceasar789/dpnhsportal01
- Repository: https://github.com/ceasar789/dpnhsportal01

## Overview

EduScribe is a school portal for Dela Paz National High School, combining role-based academic workflows with AI-assisted lesson planning and learning-resource generation. Users enter through public pages or sign-in; protected routes direct students, teachers, faculty, registrars, and administrators to role-specific dashboards. Those screens read and manage school records directly through Supabase, where authentication and row-level security apply. Teachers can also generate lesson plans through the Node API and Gemini. The graph follows README capabilities and sampled entry points; many individual dashboard operations and backend AI details were not sampled, so uncertain wiring is omitted.

Main entry points: [`frontend/src/routes/AppRoutes.jsx`](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/routes/AppRoutes.jsx) (Routes and guards), [`frontend/src/config/supabase.js`](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/config/supabase.js) (Supabase client), [`frontend/src/pages/dashboards/teacher/TeacherDashboard.jsx`](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/teacher/TeacherDashboard.jsx) (Teacher dashboard), [`frontend/src/pages/dashboards/admin/AdminDashboard.jsx`](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/admin/AdminDashboard.jsx) (Admin dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Portal and access"]
  node_routes["Routes and guards<br/>[AppRoutes.jsx]"]
  node_auth["Authentication context<br/>[AuthContext.jsx]"]
  node_public["Public pages<br/>[Home.jsx]"]
end

subgraph group_learning["Teaching and learning"]
  node_student["Student dashboard"]
  node_teacher["Teacher dashboard"]
  node_worksheets["Worksheet assessment"]
  node_studenttasks["Student tasks<br/>[TasksTab.jsx]"]
  node_lessonplans["Lesson plan tools"]
  node_aigeneration["AI generation<br/>[useAIGeneration.js]"]
end

subgraph group_operations["School operations"]
  node_registrar["Registrar dashboard"]
  node_enrollment["Pre-enrollment"]
  node_faculty["Faculty dashboard"]
  node_admin["Admin dashboard<br/>[AdminDashboard.jsx]"]
  node_academiclogic["Academic configuration"]
  node_adminlogic["Admin operations<br/>[useAdminLogic.jsx]"]
end

subgraph group_services["Application services"]
  node_supabaseclient["Supabase client<br/>[supabase.js]"]
  node_retry["Query retry<br/>[supabaseRetry.js]"]
  node_database[("Supabase platform")]
  node_api["Express API<br/>[app.js]"]
  node_airoute["AI endpoint<br/>[ai.js]"]
  node_geminilib["Gemini client<br/>[gemini.js]"]
end

node_visitor(("School user"))
node_gemini{{"Google Gemini"}}

node_visitor -->|"opens"| node_routes
node_routes -->|"routes public"| node_public
node_routes -->|"provides auth"| node_auth
node_routes -->|"guards student"| node_student
node_routes -->|"guards teacher"| node_teacher
node_routes -->|"guards faculty"| node_faculty
node_routes -->|"guards registrar"| node_registrar
node_routes -->|"guards admin"| node_admin
node_auth -->|"uses"| node_supabaseclient
node_student -->|"shows tasks"| node_studenttasks
node_studenttasks -->|"reads and writes"| node_supabaseclient
node_teacher -->|"uses assessment"| node_worksheets
node_worksheets -->|"reads and writes"| node_supabaseclient
node_teacher -->|"opens tools"| node_lessonplans
node_lessonplans -->|"requests generation"| node_aigeneration
node_aigeneration -->|"requests AI"| node_api
node_api -->|"dispatches"| node_airoute
node_airoute -->|"calls"| node_geminilib
node_geminilib -->|"generates content"| node_gemini
node_registrar -->|"manages"| node_enrollment
node_enrollment -->|"reads and writes"| node_supabaseclient
node_faculty -->|"accesses records"| node_supabaseclient
node_admin -->|"configures academics"| node_academiclogic
node_admin -->|"manages school"| node_adminlogic
node_academiclogic -->|"reads and writes"| node_supabaseclient
node_adminlogic -->|"reads and writes"| node_supabaseclient
node_supabaseclient -->|"queries records"| node_database
node_retry -->|"retries queries"| node_supabaseclient

click node_routes "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/routes/AppRoutes.jsx"
click node_auth "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/context/AuthContext.jsx"
click node_public "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/public/Home.jsx"
click node_student "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/student/StudentDashboard.jsx"
click node_teacher "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/teacher/TeacherDashboard.jsx"
click node_worksheets "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/teacher/worksheets/useWorksheetAssessment.jsx"
click node_studenttasks "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/student/tabs/TasksTab.jsx"
click node_lessonplans "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/components/ilaw/ILAWLessonPlanGenerator.jsx"
click node_aigeneration "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/components/ilaw/hooks/useAIGeneration.js"
click node_registrar "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/registrar/RegistrarDashboard.jsx"
click node_enrollment "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/registrar/tabs/PreEnrollmentTab.jsx"
click node_faculty "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/faculty/FacultyDashboard.jsx"
click node_admin "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/admin/AdminDashboard.jsx"
click node_academiclogic "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/admin/useAcademicLogic.jsx"
click node_adminlogic "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/admin/useAdminLogic.jsx"
click node_supabaseclient "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/config/supabase.js"
click node_retry "https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/lib/supabaseRetry.js"
click node_api "https://github.com/ceasar789/dpnhsportal01/blob/master/backend/src/app.js"
click node_airoute "https://github.com/ceasar789/dpnhsportal01/blob/master/backend/src/routes/ai.js"
click node_geminilib "https://github.com/ceasar789/dpnhsportal01/blob/master/backend/src/lib/gemini.js"

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_routes,node_auth,node_public,node_visitor toneBlue
class node_student,node_teacher,node_worksheets,node_studenttasks,node_lessonplans,node_aigeneration toneAmber
class node_registrar,node_enrollment,node_faculty,node_admin,node_academiclogic,node_adminlogic toneMint
class node_supabaseclient,node_retry,node_database,node_api,node_airoute,node_geminilib toneRose
class node_gemini toneIndigo
```

## Components

### Portal and access

- [Routes and guards](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/routes/AppRoutes.jsx): `frontend/src/routes/AppRoutes.jsx`
- [Authentication context](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Public pages](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/public/Home.jsx): `frontend/src/pages/public/Home.jsx`

### Teaching and learning

- [Student dashboard](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/student/StudentDashboard.jsx): `frontend/src/pages/dashboards/student/StudentDashboard.jsx`
- [Teacher dashboard](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/teacher/TeacherDashboard.jsx): `frontend/src/pages/dashboards/teacher/TeacherDashboard.jsx`
- [Worksheet assessment](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/teacher/worksheets/useWorksheetAssessment.jsx): `frontend/src/pages/dashboards/teacher/worksheets/useWorksheetAssessment.jsx`
- [Student tasks](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/student/tabs/TasksTab.jsx): `frontend/src/pages/dashboards/student/tabs/TasksTab.jsx`
- [Lesson plan tools](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/components/ilaw/ILAWLessonPlanGenerator.jsx): `frontend/src/components/ilaw/ILAWLessonPlanGenerator.jsx`
- [AI generation](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/components/ilaw/hooks/useAIGeneration.js): `frontend/src/components/ilaw/hooks/useAIGeneration.js`

### School operations

- [Registrar dashboard](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/registrar/RegistrarDashboard.jsx): `frontend/src/pages/dashboards/registrar/RegistrarDashboard.jsx`
- [Pre-enrollment](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/registrar/tabs/PreEnrollmentTab.jsx): `frontend/src/pages/dashboards/registrar/tabs/PreEnrollmentTab.jsx`
- [Faculty dashboard](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/faculty/FacultyDashboard.jsx): `frontend/src/pages/dashboards/faculty/FacultyDashboard.jsx`
- [Admin dashboard](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/admin/AdminDashboard.jsx): `frontend/src/pages/dashboards/admin/AdminDashboard.jsx`
- [Academic configuration](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/admin/useAcademicLogic.jsx): `frontend/src/pages/dashboards/admin/useAcademicLogic.jsx`
- [Admin operations](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/pages/dashboards/admin/useAdminLogic.jsx): `frontend/src/pages/dashboards/admin/useAdminLogic.jsx`

### Application services

- [Supabase client](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/config/supabase.js): `frontend/src/config/supabase.js`
- [Query retry](https://github.com/ceasar789/dpnhsportal01/blob/master/frontend/src/lib/supabaseRetry.js): `frontend/src/lib/supabaseRetry.js`
- **Supabase platform**
- [Express API](https://github.com/ceasar789/dpnhsportal01/blob/master/backend/src/app.js): `backend/src/app.js`
- [AI endpoint](https://github.com/ceasar789/dpnhsportal01/blob/master/backend/src/routes/ai.js): `backend/src/routes/ai.js`
- [Gemini client](https://github.com/ceasar789/dpnhsportal01/blob/master/backend/src/lib/gemini.js): `backend/src/lib/gemini.js`

### Other components

- **School user**
- **Google Gemini**

## Connections

- School user → Routes and guards: opens
- Routes and guards → Public pages: routes public
- Routes and guards → Authentication context: provides auth
- Routes and guards → Student dashboard: guards student
- Routes and guards → Teacher dashboard: guards teacher
- Routes and guards → Faculty dashboard: guards faculty
- Routes and guards → Registrar dashboard: guards registrar
- Routes and guards → Admin dashboard: guards admin
- Authentication context → Supabase client: uses
- Student dashboard → Student tasks: shows tasks
- Student tasks → Supabase client: reads and writes
- Teacher dashboard → Worksheet assessment: uses assessment
- Worksheet assessment → Supabase client: reads and writes
- Teacher dashboard → Lesson plan tools: opens tools
- Lesson plan tools → AI generation: requests generation
- AI generation → Express API: requests AI
- Express API → AI endpoint: dispatches
- AI endpoint → Gemini client: calls
- Gemini client → Google Gemini: generates content
- Registrar dashboard → Pre-enrollment: manages
- Pre-enrollment → Supabase client: reads and writes
- Faculty dashboard → Supabase client: accesses records
- Admin dashboard → Academic configuration: configures academics
- Admin dashboard → Admin operations: manages school
- Academic configuration → Supabase client: reads and writes
- Admin operations → Supabase client: reads and writes
- Supabase client → Supabase platform: queries records
- Query retry → Supabase client: retries queries
