# aj-academy/aj_internal_os architecture

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

- Interactive diagram: https://gitdiagram.com/aj-academy/aj_internal_os
- Repository: https://github.com/aj-academy/aj_internal_os

## Overview

AJ Academy is a multi-role academy operations portal: admins, employees, freelancers, mentors, and students use role-specific workspaces for academic delivery, CRM, workforce administration, and self-service. The tree shows those product areas and their API routes; sampled sources confirm direct Supabase access for reminders and college visits, plus payslip generation through a service. Many page-to-API connections and unsampled capabilities are represented as unverified rather than asserted. Supabase is the principal persistence layer; the supplied files do not expose its schema.

Main entry points: [`AJ_Academy_OS/app/admin/dashboard/page.tsx`](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/admin/dashboard/page.tsx) (Admin Workspace), [`AJ_Academy_OS/app/employee/dashboard/page.tsx`](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/employee/dashboard/page.tsx) (Employee Workspace), [`AJ_Academy_OS/app/api/hr/payslips/route.ts`](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/hr/payslips/route.ts) (Payslip API), [`AJ_Academy_OS/app/mentor/dashboard/page.tsx`](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/mentor/dashboard/page.tsx) (Mentor Workspace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portals["Role Portals"]
  node_admin["Admin Workspace<br/>[page.tsx]"]
  node_employee["Employee Workspace<br/>[page.tsx]"]
  node_mentor["Mentor Workspace<br/>[page.tsx]"]
  node_student["Student Workspace<br/>[page.tsx]"]
end

subgraph group_academics["Academic Delivery"]
  node_lms["Learning Management<br/>[route.ts]"]
  node_mentor_scope["Mentor Department Scope"]
  node_student_admin["Student Management"]
end

subgraph group_operations["People Operations"]
  node_attendance["Attendance<br/>[route.ts]"]
  node_leave["Leave Management<br/>[route.ts]"]
  node_payroll["Payroll Calculation<br/>[payrollEngine.ts]"]
  node_payslips["Payslip Service<br/>[payslipService.ts]"]
  node_payslip_api["Payslip API<br/>[route.ts]"]
end

subgraph group_engagement["CRM And Tasks"]
  node_college_visits["College Visits<br/>[route.ts]"]
  node_leads["Student Lead CRM"]
  node_tasks["Task Management"]
  node_reminders["Reminders<br/>[route.ts]"]
end

subgraph group_platform["Platform Services"]
  node_auth["Authentication<br/>[route.ts]"]
  node_supabase[("Supabase Data")]
  node_push["Push Notifications<br/>[clientPush.ts]"]
  node_service_worker["Push Worker<br/>[sw.js]"]
end

node_users(("Portal Users"))

node_users -.->|"uses"| node_admin
node_users -.->|"uses"| node_employee
node_users -.->|"uses"| node_mentor
node_users -.->|"uses"| node_student
node_admin -.->|"manages students"| node_student_admin
node_admin -.->|"configures learning"| node_lms
node_mentor -.->|"resolves scope"| node_mentor_scope
node_mentor_scope -.->|"reads assignments"| node_supabase
node_student -.->|"accesses learning"| node_lms
node_admin -.->|"reviews attendance"| node_attendance
node_employee -.->|"requests leave"| node_leave
node_admin -.->|"manages leave"| node_leave
node_admin -.->|"calculates payroll"| node_payroll
node_payslip_api -->|"generates slips"| node_payslips
node_payslip_api -.->|"reads and writes"| node_supabase
node_admin -.->|"manages payslips"| node_payslip_api
node_employee -.->|"views payslips"| node_payslip_api
node_admin -.->|"manages visits"| node_college_visits
node_college_visits -->|"reads and writes"| node_supabase
node_admin -.->|"manages leads"| node_leads
node_employee -.->|"works on tasks"| node_tasks
node_mentor -.->|"works on tasks"| node_tasks
node_tasks -.->|"records outreach"| node_supabase
node_admin -.->|"manages reminders"| node_reminders
node_reminders -->|"reads and writes"| node_supabase
node_users -.->|"signs in"| node_auth
node_auth -.->|"checks profiles"| node_supabase
node_push -.->|"registers worker"| node_service_worker
node_users -.->|"receives alerts"| node_push

click node_admin "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/admin/dashboard/page.tsx"
click node_employee "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/employee/dashboard/page.tsx"
click node_mentor "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/mentor/dashboard/page.tsx"
click node_student "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/student/dashboard/page.tsx"
click node_lms "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/lms/academic/route.ts"
click node_mentor_scope "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/components/lms/useMentorDepartmentScope.tsx"
click node_student_admin "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/components/students/StudentDirectoryWorkbench.tsx"
click node_attendance "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/hr/attendance/review/route.ts"
click node_leave "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/hr/leave/applications/route.ts"
click node_payroll "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/lib/hr/payrollEngine.ts"
click node_payslips "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/lib/hr/payslipService.ts"
click node_payslip_api "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/hr/payslips/route.ts"
click node_college_visits "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/college-visits/route.ts"
click node_leads "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/components/student-lead-master/StudentMasterWorkbench.tsx"
click node_tasks "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/components/task/TaskSubsectionEntityTables.tsx"
click node_reminders "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/reminders/route.ts"
click node_auth "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/auth/sign-in/route.ts"
click node_push "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/lib/push/clientPush.ts"
click node_service_worker "https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/public/sw.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_admin,node_employee,node_mentor,node_student,node_users toneBlue
class node_lms,node_mentor_scope,node_student_admin toneAmber
class node_attendance,node_leave,node_payroll,node_payslips,node_payslip_api toneMint
class node_college_visits,node_leads,node_tasks,node_reminders toneRose
class node_auth,node_supabase,node_push,node_service_worker toneIndigo
```

## Components

### Role Portals

- [Admin Workspace](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/admin/dashboard/page.tsx): `AJ_Academy_OS/app/admin/dashboard/page.tsx`
- [Employee Workspace](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/employee/dashboard/page.tsx): `AJ_Academy_OS/app/employee/dashboard/page.tsx`
- [Mentor Workspace](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/mentor/dashboard/page.tsx): `AJ_Academy_OS/app/mentor/dashboard/page.tsx`
- [Student Workspace](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/student/dashboard/page.tsx): `AJ_Academy_OS/app/student/dashboard/page.tsx`

### Academic Delivery

- [Learning Management](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/lms/academic/route.ts): `AJ_Academy_OS/app/api/lms/academic/route.ts`
- [Mentor Department Scope](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/components/lms/useMentorDepartmentScope.tsx): `AJ_Academy_OS/components/lms/useMentorDepartmentScope.tsx`
- [Student Management](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/components/students/StudentDirectoryWorkbench.tsx): `AJ_Academy_OS/components/students/StudentDirectoryWorkbench.tsx`

### People Operations

- [Attendance](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/hr/attendance/review/route.ts): `AJ_Academy_OS/app/api/hr/attendance/review/route.ts`
- [Leave Management](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/hr/leave/applications/route.ts): `AJ_Academy_OS/app/api/hr/leave/applications/route.ts`
- [Payroll Calculation](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/lib/hr/payrollEngine.ts): `AJ_Academy_OS/lib/hr/payrollEngine.ts`
- [Payslip Service](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/lib/hr/payslipService.ts): `AJ_Academy_OS/lib/hr/payslipService.ts`
- [Payslip API](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/hr/payslips/route.ts): `AJ_Academy_OS/app/api/hr/payslips/route.ts`

### CRM And Tasks

- [College Visits](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/college-visits/route.ts): `AJ_Academy_OS/app/api/college-visits/route.ts`
- [Student Lead CRM](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/components/student-lead-master/StudentMasterWorkbench.tsx): `AJ_Academy_OS/components/student-lead-master/StudentMasterWorkbench.tsx`
- [Task Management](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/components/task/TaskSubsectionEntityTables.tsx): `AJ_Academy_OS/components/task/TaskSubsectionEntityTables.tsx`
- [Reminders](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/reminders/route.ts): `AJ_Academy_OS/app/api/reminders/route.ts`

### Platform Services

- [Authentication](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/app/api/auth/sign-in/route.ts): `AJ_Academy_OS/app/api/auth/sign-in/route.ts`
- **Supabase Data**
- [Push Notifications](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/lib/push/clientPush.ts): `AJ_Academy_OS/lib/push/clientPush.ts`
- [Push Worker](https://github.com/aj-academy/aj_internal_os/blob/main/AJ_Academy_OS/public/sw.js): `AJ_Academy_OS/public/sw.js`

### Other components

- **Portal Users**

## Connections

- Portal Users → Admin Workspace: uses
- Portal Users → Employee Workspace: uses
- Portal Users → Mentor Workspace: uses
- Portal Users → Student Workspace: uses
- Admin Workspace → Student Management: manages students
- Admin Workspace → Learning Management: configures learning
- Mentor Workspace → Mentor Department Scope: resolves scope
- Mentor Department Scope → Supabase Data: reads assignments
- Student Workspace → Learning Management: accesses learning
- Admin Workspace → Attendance: reviews attendance
- Employee Workspace → Leave Management: requests leave
- Admin Workspace → Leave Management: manages leave
- Admin Workspace → Payroll Calculation: calculates payroll
- Payslip API → Payslip Service: generates slips (evidence: `AJ_Academy_OS/app/api/hr/payslips/route.ts`)
- Payslip API → Supabase Data: reads and writes
- Admin Workspace → Payslip API: manages payslips
- Employee Workspace → Payslip API: views payslips
- Admin Workspace → College Visits: manages visits
- College Visits → Supabase Data: reads and writes (evidence: `AJ_Academy_OS/app/api/college-visits/route.ts`)
- Admin Workspace → Student Lead CRM: manages leads
- Employee Workspace → Task Management: works on tasks
- Mentor Workspace → Task Management: works on tasks
- Task Management → Supabase Data: records outreach
- Admin Workspace → Reminders: manages reminders
- Reminders → Supabase Data: reads and writes (evidence: `AJ_Academy_OS/app/api/reminders/route.ts`)
- Portal Users → Authentication: signs in
- Authentication → Supabase Data: checks profiles
- Push Notifications → Push Worker: registers worker
- Portal Users → Push Notifications: receives alerts
