The Academics module is the academic backbone of the Gobarau Academy platform. It covers the complete lifecycle of learning — from creating class instances and assigning teachers to subjects, through scheduling timetables and recording daily attendance, all the way to scoring assessments, generating termly report cards, and managing exam registrations. Uniquely, the module also includes a dedicated Tahfeez sub-system for tracking each student’s Qur’an memorization progress juz by juz, with recitation session records supervised by a teacher. All endpoints are prefixed withDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/muhammadbugaje/gobarau_backend/llms.txt
Use this file to discover all available pages before exploring further.
/api/academics/ and follow standard DRF router conventions, exposing GET (list), POST (create), GET /{id}/ (retrieve), PUT/PATCH (update), and DELETE (destroy) on every resource.
Class Structure
Classes
List all class instances.
Create a new class instance (e.g., JSS 1A — 2024/2025 Session).
ClassLevel, an optional Wing (Regular, Islamiyyah, or Tahfeez), an optional Campus, and an AcademicSession.
Request Fields
Human-readable class name, e.g.
"JSS 1A".Foreign key — ID of the
ClassLevel record (from the Administration module).Foreign key — ID of the
Wing. Nullable. Values correspond to regular, islamiyyah, or tahfeez.Foreign key — ID of the
Campus. Nullable.Foreign key — ID of the
AcademicSession.Maximum number of students. Defaults to
40.Whether the class is currently active. Defaults to
true.Subjects
List all subjects offered at the school.
Create a new subject.
Request Fields
Full subject name, e.g.
"Mathematics".Short unique code, e.g.
"MTH101". Must be unique.Foreign key — ID of the
Department. Nullable.Classification of the subject. One of:
| Value | Label |
|---|---|
core | Core (default) |
elective | Elective |
vocational | Vocational |
Optional long-form description of the subject. Defaults to empty string.
Teacher Class Subjects
List all teacher-to-class-subject assignments.
Assign a teacher to teach a subject in a class for an academic year.
TeacherProfile to a Class and Subject combination. The combination of (teacher, class_assigned, subject, academic_year) is unique, preventing duplicate assignments.
Request Fields
Foreign key — ID of the
TeacherProfile.Foreign key — ID of the
Class the teacher is assigned to.Foreign key — ID of the
Subject being taught.Whether this teacher is the form teacher for the class. Defaults to
false.The academic year string, e.g.
"2024/2025".CA Configurations
List all Continuous Assessment configurations.
Create a CA configuration for a subject, class level, and term combination.
Subject + ClassLevel + Term combination. The combination of these three fields is unique.
Request Fields
Foreign key — ID of the
Subject.Foreign key — ID of the
ClassLevel.Foreign key — ID of the
Term.Weight (percentage) allocated to continuous assessment scores, e.g.
40.00.Weight (percentage) allocated to the exam score, e.g.
60.00.Total combined weight. Defaults to
100.00.Timetables
Timetables
List all weekly timetable entries.
Create a new weekly timetable slot for a class.
Request Fields
Foreign key — ID of the
Class.Foreign key — ID of the
Subject.Foreign key — ID of the
TeacherProfile. Nullable.Day of the week. One of:
monday, tuesday, wednesday, thursday, friday, saturday, sunday.Lesson start time in
HH:MM:SS format, e.g. "08:00:00".Lesson end time in
HH:MM:SS format, e.g. "09:00:00".Optional room or venue label, e.g.
"Room 12".Whether this slot is currently active. Defaults to
true.Exam Timetables
List all exam timetable entries.
Schedule an exam for a class and subject.
Class, Subject, and Term to a specific date, time range, and venue.
Request Fields
Foreign key — ID of the
Class.Foreign key — ID of the
Subject.Foreign key — ID of the
Term.Date of the exam in
YYYY-MM-DD format.Exam start time in
HH:MM:SS format.Exam end time in
HH:MM:SS format.Optional exam venue label, e.g.
"Main Hall".Assessment
Scores
List all student subject scores.
Record a student’s CA and exam scores for a subject in a term.
(student, subject, term) ensures one record per student per subject per term.
Request Fields
Foreign key — ID of the
StudentProfile.Foreign key — ID of the
Subject.Foreign key — ID of the
Term.Foreign key — ID of the
Class.Continuous assessment score. Defaults to
0.Examination score. Defaults to
0.Computed total score. Defaults to
0.Grade string, e.g.
"A". Populated automatically or manually.Grade point value on a GPA scale. Nullable.
When
true, the score record is locked and cannot be edited. Defaults to false.Example — Record a Score
Unique identifier for the created score record.
ID of the
StudentProfile.ID of the
Subject.Computed total score as a decimal string.
Grade awarded based on total score.
Lock state of the score record.
Report Cards
List all report cards.
Generate or create a report card for a student in a term.
(student, term, class_assigned) ensures one report card per student per term.
Request Fields
Foreign key — ID of the
StudentProfile.Foreign key — ID of the
Term.Foreign key — ID of the
Class.Aggregate total score across all subjects. Defaults to
0.Term average score. Defaults to
0.Class position ranking. Nullable.
Whether the report card is published and visible to students/parents. Defaults to
false.Assignments
List all assignments.
Create a new assignment for a class and subject.
Request Fields
Foreign key — ID of the
Subject.Foreign key — ID of the
Class.Assignment title, e.g.
"Chapter 4 Review Questions".Detailed assignment instructions. Optional.
Submission deadline in
YYYY-MM-DD format.Maximum achievable score. Defaults to
100.Whether the assignment is visible to students. Defaults to
false.Assignment Submissions
List all assignment submissions.
Record a student’s submission for an assignment.
(assignment, student) is unique.
Request Fields
Foreign key — ID of the
Assignment.Foreign key — ID of the
StudentProfile.Date submitted in
YYYY-MM-DD format.Score awarded for the submission. Nullable until graded.
Teacher feedback on the submission. Optional.
Whether the submission was past the due date. Defaults to
false.Whether the submission has been graded. Defaults to
false.Attendance
Attendance Records
List all daily attendance records.
Mark attendance for a student on a given date.
(student, date, class_assigned) prevents duplicate entries for the same student on the same date.
Attendance Status Values
| Value | Description |
|---|---|
present | Student was present (default) |
absent | Student was absent |
late | Student arrived late |
excused | Student was absent with an approved excuse |
Request Fields
Foreign key — ID of the
StudentProfile.Foreign key — ID of the
Class the student belongs to.Attendance date in
YYYY-MM-DD format.One of
present, absent, late, or excused. Defaults to present.Optional notes about the attendance, e.g. reason for absence.
Foreign key — ID of the
TeacherProfile who marked attendance. Nullable.Example — Mark Attendance
Example — List Attendance for a Student
Attendance Summaries
List all termly attendance summaries.
Create or update a termly attendance summary for a student.
(student, term, class_assigned) ensures one summary per student per term.
Request Fields
Foreign key — ID of the
StudentProfile.Foreign key — ID of the
Term.Foreign key — ID of the
Class.Total days the student was present. Defaults to
0.Total days the student was absent. Defaults to
0.Total days the student arrived late. Defaults to
0.Total excused absences. Defaults to
0.Computed attendance percentage as a decimal, e.g.
"92.50". Defaults to 0.Exams
Exam Registrations
List all exam registrations.
Register a student to sit an exam for a subject in a term.
(student, subject, term) prevents duplicate registrations.
Request Fields
Foreign key — ID of the
StudentProfile.Foreign key — ID of the
Subject.Foreign key — ID of the
Term.Foreign key — ID of the
Class.Whether the student is actively registered. Defaults to
true.Exam Results
List all exam results.
Record an exam result for a student in a subject.
(student, subject, term) ensures one result per student per subject per term.
Request Fields
Foreign key — ID of the
StudentProfile.Foreign key — ID of the
Subject.Foreign key — ID of the
Term.Foreign key — ID of the
Class.Exam score as a decimal, e.g.
"72.50".Grade letter derived from the score, e.g.
"B".Short remark on performance, e.g.
"Good".Tahfeez (Qur’an Memorization)
The Tahfeez wing is a specialist academic division of Gobarau Academy dedicated to Qur’an memorization. Students in this wing have a dedicated tracking system comprising JuzProgress — one record per student per Juz — and RecitationSession records that log live sessions between a student and their Tahfeez teacher. These two endpoints are exclusive to the Tahfeez workflow and have no equivalent in the regular or Islamiyyah wings.
Juz Progresses
List all Juz memorization progress records.
Create a Juz progress record for a student.
(student, juz_number) ensures only one progress record per Juz per student.
Juz Status Values
| Value | Description |
|---|---|
not_started | Memorization has not begun (default) |
in_progress | Student is actively memorizing this Juz |
memorized | Student has completed memorizing this Juz |
reviewed | Student has revised and consolidated this Juz |
Request Fields
Foreign key — ID of the
StudentProfile.The Juz number (1–30).
Name of the starting Surah in this Juz, e.g.
"Al-Baqarah".Name of the ending Surah in this Juz, e.g.
"Al-Baqarah".Ayat number where this Juz begins.
Ayat number where this Juz ends.
Current memorization status. One of
not_started, in_progress, memorized, reviewed. Defaults to not_started.Date the student began memorizing this Juz, in
YYYY-MM-DD format. Nullable.Date the student completed memorization of this Juz, in
YYYY-MM-DD format. Nullable.Example — Create a Juz Progress Record
Example — Mark a Juz as Memorized
Recitation Sessions
List all recitation session records.
Log a recitation session between a student and a Tahfeez teacher.
Request Fields
Foreign key — ID of the
StudentProfile.Foreign key — ID of the
TeacherProfile supervising the session. Nullable.Date of the recitation session in
YYYY-MM-DD format.Description of the Juz covered in this session, e.g.
"Juz 2".Surah(s) recited in this session, e.g.
"Al-Baqarah 142–252".Teacher’s rating of recitation quality on a scale of 1 (poor) to 5 (excellent). Defaults to
5.Optional teacher notes on pronunciation, fluency, or areas needing improvement.