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.