Skip to main content

Phase 1: Academic System, Academic Year & Subject

Phase 1 establishes the foundational academic configuration models. All subsequent phases depend on these entities.

Purpose

Configure the school's grading rules, academic calendar, and subject catalogue. A school running multiple curricula (e.g. GES JHS and Cambridge IGCSE) creates separate Academic Systems with their own assessment types, weights, and grade boundaries.

Key Models

ModelPurpose
AcademicSystemNamed set of grading rules (assessment types, weights, grade boundaries)
SchoolSectionSubdivision under an academic system (Primary, JHS, SHS)
YearGroupCohort level within a section (e.g. "JHS 2")
AcademicYearNamed school year with start/end dates
AcademicPeriodTerm or semester within an academic year
GradeScaleGrade scale type (numerical, letter, descriptive, points)
GradeBoundaryScore range to grade mapping (e.g. 80--100 = Grade 1)
AssessmentTypeCategory of assessment (class test, exam) with weight
WeightingRuleLinks assessment type to academic system with percentage weight
SubjectAcademic subject with code, section, optional department
SubjectDocumentS3-backed document attached to a subject

API Endpoints

MethodPathPurpose
GET/POST/api/admin/academic-systemsList / create academic systems
GET/PATCH/DELETE/api/admin/academic-systems/[id]Detail / update / delete
GET/POST/api/admin/academic-systems/[id]/sectionsList / create sections
GET/PATCH/DELETE/api/admin/academic-systems/[id]/sections/[sectionId]Section CRUD
GET/POST/api/admin/academic-systems/[id]/sections/[sectionId]/year-groupsYear group CRUD
GET/POST/api/admin/academic-systems/[id]/grade-scalesGrade scale CRUD
GET/api/admin/academic-systems/[id]/grade-scales/[scaleId]/boundariesGrade boundaries
GET/POST/api/admin/academic-systems/[id]/assessment-typesAssessment type CRUD
GET/PUT/api/admin/academic-systems/[id]/weighting-rulesWeighting rule config
GET/POST/api/admin/academic-yearsList / create academic years
GET/PATCH/DELETE/api/admin/academic-years/[id]Detail / update / delete
GET/POST/api/admin/academic-years/[id]/periodsPeriod CRUD
GET/POST/api/admin/subjectsList / create subjects
GET/PATCH/DELETE/api/admin/subjects/[id]Subject CRUD
GET/POST/api/admin/subjects/[id]/documentsSubject document CRUD

Key Files

  • prisma/schema.prisma -- Phase 1 models
  • src/app/admin/academic-systems/ -- Admin UI pages
  • src/app/admin/academic-years/ -- Academic year management
  • src/app/admin/subjects/ -- Subject management