DocsChapter 9 — Academic Management
Chapter 9 — Academic Management Basic Tier
The academic backbone of NexusOne: Curriculum, Subject Groups, Learning Outcomes, Syllabus tracking, Timetables, Room allocation, Academic Calendar, and Academic Analytics. All features in this chapter are Basic Tier.
Academic Hierarchy
SchoolAcademic YearTermClassSectionSubjectTopicLearning Outcome
Curriculum Management (§9.6–9.7)
- Curriculum model with board types: CBSE, ICSE, State Board, IB, IGCSE, Custom
- Status lifecycle: draft → active → archived
- Linked to AcademicYear for year-wise curriculum planning
- POST /api/curriculums, PUT /api/curriculums/:id (admin/super_admin)
- Admin UI: Curriculum page at /dashboard/admin/curriculum
- Mobile admin: Curriculum screen with board chip selector
Subject Groups (§9.11)
- SubjectGroup model groups subjects into logical categories
- Category name is a free-text field, not a schema-enforced enum — Languages, Sciences, Mathematics, Humanities, Technology, Arts, Sports are conventional examples, not fixed options
- Many-to-many: one group can contain multiple subjects
- POST /api/subject-groups, PUT /api/subject-groups/:id
- Admin UI: Subject Groups page at /dashboard/admin/subject-groups
Learning Outcomes (§9.13–9.14)
- LearningOutcome model with outcome code, name, and Bloom's Taxonomy level
- Bloom's levels: remember, understand, apply, analyze, evaluate, create
- Linked to subject, class, and curriculum for precise mapping
- Teachers can create/update outcomes; admins can delete
- Filter by subject or class on the outcomes list
- Admin UI: /dashboard/admin/learning-outcomes
- Mobile admin: Learning Outcomes screen with Bloom's level color coding
Syllabus Management (§9.15–9.22)
- Syllabus model: nested Unit → Chapter → Topic → Subtopic structure
- Status tracking (pending / in_progress / completed) exists at both topic and subtopic level
- PATCH /api/syllabus/:id/topic-status for real-time teacher updates
- GET /api/syllabus/analytics — completion % per subject/class/teacher
- Unique constraint per school/subject/class/academicYear combination
- Admin UI: /dashboard/admin/syllabus (list + progress bars) and /dashboard/admin/syllabus/[id] (detail with topic management)
- Teacher mobile: Syllabus Tracking screen with tap-to-cycle status
Academic Year & Terms (§9.4–9.5) — Already Built
- AcademicYear with Terms subdocument (name, startDate, endDate, weightage)
- Status: planning → active → closed → archived
- Activate endpoint: PUT /api/academic-years/:id/activate
- Admin UI: /dashboard/admin/academic-year
Timetable Management (§9.23–9.35) — Already Built
- Timetable model linked to school/class/section/academicYear
- TimetableSlot model: dayOfWeek, periodNumber, startTime, endTime
- Slot types: subject, break, assembly, free, lab, sports
- Teacher assignment per slot with conflict detection (POST /:id/slots/check-conflicts); room is stored as a plain string on the slot, not a reference to the Room model — the two are not linked today
- Rich slot sub-API: bulk add, activate/deactivate timetable, GET /my, GET /student/:studentId
- Admin UI: /dashboard/admin/timetable, /timetable/create, /timetable/[id] (create + manage slots)
- Teacher UI: /dashboard/teacher/timetable (read-only, web only) · Mobile: only a parent-facing (parent)/timetable.tsx screen exists today — there is no teacher or admin timetable screen on mobile
Room & Lab Allocation (§9.29–9.31) — Already Built
- Room model: roomNumber, type, floor, capacity, building, campus, facilities (projector/smartBoard/ac/computers)
- Room type enum (9 values): classroom, laboratory, library, computer_lab, auditorium, sports_room, conference_room, staff_room, other
- Availability tracking via timetable slot assignments (informal — no direct FK from TimetableSlot to Room)
- Admin UI: Buildings & Rooms page in School Setup (Chapter 5)
Academic Calendar
- AcademicCalendar model: title, eventType (11 values incl. holiday, exam, meeting, event, vacation, sports, cultural, academic, parent_meeting, teacher_training, other), startDate/endDate, targetAudience array
- GET /api/academic-calendar, GET /api/academic-calendar/upcoming (all authenticated roles)
- POST/PUT/DELETE /api/academic-calendar/:id — admin, teacher
- Admin UI: /dashboard/admin/academic-calendar
Academic Analytics (§9.47)
- GET /api/syllabus/analytics — average completion %, at-risk syllabus detection
- Filters: by academicYear; shows per-subject/class/teacher completion table
- Subject coverage stats and room inventory summary
- Admin UI: /dashboard/admin/academic-analytics
Frontend Pages
/dashboard/admin/curriculum
/dashboard/admin/subject-groups
/dashboard/admin/learning-outcomes
/dashboard/admin/syllabus + /syllabus/[id]
/dashboard/admin/academic-year
/dashboard/admin/academic-calendar
/dashboard/admin/timetable + /timetable/create + /timetable/[id]
/dashboard/admin/academic-analytics
/dashboard/teacher/timetable (read-only)
Mobile Screens
(admin)/curriculum
(admin)/learning-outcomes
(admin)/syllabus
(teacher)/syllabus-tracking
(parent)/timetable — the only mobile timetable screen today
No teacher or admin timetable screen exists on mobile yet; no mobile Subject Groups or Academic Calendar screen exists yet either.
Future Features (§9.50)
AI Timetable Generator, AI Workload Optimization, AI Resource Planning, and Curriculum Marketplace are planned as Elite Tier enhancements in a future release.