# masigasignationaluniversity-cpu/enter-mnuais architecture

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

- Interactive diagram: https://gitdiagram.com/masigasignationaluniversity-cpu/enter-mnuais
- Repository: https://github.com/masigasignationaluniversity-cpu/enter-mnuais

## Overview

This is a university Academic Information System with separate student, faculty, department-head, OCS, and administrator portals. Users enter through the routed login and protected-page experience; role-specific pages support enlistment, course and section administration, consent and grade workflows, and institutional settings. Shared application state coordinates academic data, local persistence, and Supabase operations, while academic rules are implemented separately. The README describes the project tooling, not these product capabilities; unsampled portal areas are represented by their existing directories, and their internal links are omitted where source evidence is unavailable.

Main entry points: [`src/router.tsx`](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/router.tsx) (Role routes), [`src/contexts/AppContext.tsx`](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/contexts/AppContext.tsx) (Academic state), [`src/App.tsx`](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/App.tsx) (Application shell), [`src/integrations/supabase/client.ts`](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/integrations/supabase/client.ts) (Supabase client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entry"]
  node_app["Application shell<br/>[App.tsx]"]
  node_router["Role routes<br/>[router.tsx]"]
end

subgraph group_shared["Shared services"]
  node_portallayout["Portal layout<br/>[PortalLayout.tsx]"]
  node_state["Academic state<br/>[AppContext.tsx]"]
  node_store["Local persistence<br/>[store.ts]"]
  node_academic["Academic rules<br/>[academic.ts]"]
  node_supabase["Supabase client<br/>[client.ts]"]
end

subgraph group_student["Student services"]
  node_enlistment["Student enlistment"]
  node_studyplan["Plan of study"]
  node_studentportal["Other student workflows"]
end

subgraph group_staff["Academic operations"]
  node_courses["Course offerings<br/>[OCSCourses.tsx]"]
  node_grades["Grade management"]
  node_facultygrades["Faculty grade workflows"]
  node_depthead["Department workflows"]
  node_ocs["Other OCS workflows"]
end

subgraph group_admin["Administration"]
  node_term["Term control"]
  node_users["User management<br/>[AdminUsers.tsx]"]
  node_adminportal["Other administration"]
end

node_user(("Portal user"))
node_database[("Supabase data")]

node_user -->|"opens portal"| node_app
node_app -->|"renders routes"| node_router
node_app -->|"reads session"| node_state
node_router -->|"routes to"| node_enlistment
node_router -.->|"routes to"| node_studyplan
node_router -->|"routes to"| node_courses
node_router -->|"routes to"| node_grades
node_router -->|"routes to"| node_facultygrades
node_router -.->|"routes to"| node_depthead
node_router -.->|"routes to"| node_ocs
node_router -->|"routes to"| node_term
node_router -->|"routes to"| node_users
node_router -.->|"routes to"| node_adminportal
node_portallayout -->|"reads portal state"| node_state
node_enlistment -->|"uses shared state"| node_state
node_courses -->|"uses shared state"| node_state
node_grades -->|"uses shared state"| node_state
node_term -->|"uses shared state"| node_state
node_users -->|"uses shared state"| node_state
node_state -->|"loads and saves"| node_store
node_state -->|"uses calculations"| node_academic
node_state -->|"queries through"| node_supabase
node_supabase -.->|"accesses data"| node_database

click node_app "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/App.tsx"
click node_router "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/router.tsx"
click node_portallayout "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/components/shared/PortalLayout.tsx"
click node_state "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/contexts/AppContext.tsx"
click node_store "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/lib/store.ts"
click node_academic "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/lib/academic.ts"
click node_supabase "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/integrations/supabase/client.ts"
click node_enlistment "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/pages/student/StudentEnlistment.tsx"
click node_studyplan "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/pages/student/StudentPlanOfStudy.tsx"
click node_studentportal "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/tree/enter-main/src/pages/student"
click node_courses "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/pages/ocs/OCSCourses.tsx"
click node_grades "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/pages/ocs/OCSGradeManagement.tsx"
click node_facultygrades "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/tree/enter-main/src/pages/faculty"
click node_depthead "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/tree/enter-main/src/pages/depthead"
click node_ocs "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/tree/enter-main/src/pages/ocs"
click node_term "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/pages/admin/AdminTermControl.tsx"
click node_users "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/pages/admin/AdminUsers.tsx"
click node_adminportal "https://github.com/masigasignationaluniversity-cpu/enter-mnuais/tree/enter-main/src/pages/admin"

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_router,node_user toneBlue
class node_portallayout,node_state,node_store,node_academic,node_supabase,node_database toneAmber
class node_enlistment,node_studyplan,node_studentportal toneMint
class node_courses,node_grades,node_facultygrades,node_depthead,node_ocs toneRose
class node_term,node_users,node_adminportal toneIndigo
```

## Components

### Application entry

- [Application shell](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/App.tsx): `src/App.tsx`
- [Role routes](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/router.tsx): `src/router.tsx`

### Shared services

- [Portal layout](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/components/shared/PortalLayout.tsx): `src/components/shared/PortalLayout.tsx`
- [Academic state](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/contexts/AppContext.tsx): `src/contexts/AppContext.tsx`
- [Local persistence](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/lib/store.ts): `src/lib/store.ts`
- [Academic rules](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/lib/academic.ts): `src/lib/academic.ts`
- [Supabase client](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/integrations/supabase/client.ts): `src/integrations/supabase/client.ts`

### Student services

- [Student enlistment](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/pages/student/StudentEnlistment.tsx): `src/pages/student/StudentEnlistment.tsx`
- [Plan of study](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/pages/student/StudentPlanOfStudy.tsx): `src/pages/student/StudentPlanOfStudy.tsx`
- [Other student workflows](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/tree/enter-main/src/pages/student): `src/pages/student`

### Academic operations

- [Course offerings](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/pages/ocs/OCSCourses.tsx): `src/pages/ocs/OCSCourses.tsx`
- [Grade management](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/pages/ocs/OCSGradeManagement.tsx): `src/pages/ocs/OCSGradeManagement.tsx`
- [Faculty grade workflows](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/tree/enter-main/src/pages/faculty): `src/pages/faculty`
- [Department workflows](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/tree/enter-main/src/pages/depthead): `src/pages/depthead`
- [Other OCS workflows](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/tree/enter-main/src/pages/ocs): `src/pages/ocs`

### Administration

- [Term control](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/pages/admin/AdminTermControl.tsx): `src/pages/admin/AdminTermControl.tsx`
- [User management](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/blob/enter-main/src/pages/admin/AdminUsers.tsx): `src/pages/admin/AdminUsers.tsx`
- [Other administration](https://github.com/masigasignationaluniversity-cpu/enter-mnuais/tree/enter-main/src/pages/admin): `src/pages/admin`

### Other components

- **Portal user**
- **Supabase data**

## Connections

- Portal user → Application shell: opens portal
- Application shell → Role routes: renders routes (evidence: `src/App.tsx`)
- Application shell → Academic state: reads session (evidence: `src/App.tsx`)
- Role routes → Student enlistment: routes to (evidence: `src/router.tsx`)
- Role routes → Plan of study: routes to
- Role routes → Course offerings: routes to (evidence: `src/router.tsx`)
- Role routes → Grade management: routes to (evidence: `src/router.tsx`)
- Role routes → Faculty grade workflows: routes to (evidence: `src/router.tsx`)
- Role routes → Department workflows: routes to
- Role routes → Other OCS workflows: routes to (evidence: `src/router.tsx`)
- Role routes → Term control: routes to (evidence: `src/router.tsx`)
- Role routes → User management: routes to (evidence: `src/router.tsx`)
- Role routes → Other administration: routes to (evidence: `src/router.tsx`)
- Portal layout → Academic state: reads portal state (evidence: `src/components/shared/PortalLayout.tsx`)
- Student enlistment → Academic state: uses shared state (evidence: `src/pages/student/StudentEnlistment.tsx`)
- Course offerings → Academic state: uses shared state (evidence: `src/pages/ocs/OCSCourses.tsx`)
- Grade management → Academic state: uses shared state (evidence: `src/pages/ocs/OCSGradeManagement.tsx`)
- Term control → Academic state: uses shared state (evidence: `src/pages/admin/AdminTermControl.tsx`)
- User management → Academic state: uses shared state (evidence: `src/pages/admin/AdminUsers.tsx`)
- Academic state → Local persistence: loads and saves (evidence: `src/contexts/AppContext.tsx`)
- Academic state → Academic rules: uses calculations (evidence: `src/contexts/AppContext.tsx`)
- Academic state → Supabase client: queries through (evidence: `src/contexts/AppContext.tsx`)
- Supabase client → Supabase data: accesses data
