Exam Management
Overview
Full lifecycle of exams: create exam, define schedule, enter results, generate report cards.
Exam Types
| Type | Description |
|---|---|
UNIT_TEST | Weekly/monthly test |
PERIODIC_TEST | Term exam |
SEMESTER | Half-yearly / Annual |
MOCK | Practice exam |
Create Exam
POST /school-admin/exam/create
{
"data": {
"name": "Periodic Test 1",
"type": "PERIODIC_TEST",
"academicYearId": "uuid",
"startDate": "2024-04-10",
"endDate": "2024-04-20",
"classes": ["uuid1", "uuid2"]
}
}
Exam Schedule
Assigns date, time, subject, and room per class:
POST /school-admin/exam/schedule
{
"data": {
"examId": "uuid",
"schedule": [
{ "classId": "uuid", "subjectId": "uuid", "date": "2024-04-10", "startTime": "09:00", "durationMinutes": 180, "room": "101" },
{ "classId": "uuid", "subjectId": "uuid2", "date": "2024-04-11", "startTime": "09:00", "durationMinutes": 180, "room": "102" }
]
}
}
Result Entry
Per Student Per Subject
POST /school-admin/exam/result
{
"data": {
"examId": "uuid",
"studentId": "uuid",
"subjectId": "uuid",
"marksObtained": 78,
"maxMarks": 100,
"grade": "B1"
}
}
Bulk Upload
POST /school-admin/exam/result/upload
Content-Type: multipart/form-data
// CSV format:
// studentId,subjectId,marksObtained,maxMarks,grade
// uuid1,uuidA,78,100,B1
// uuid1,uuidB,85,100,A2
Grade Calculation
Configured per school:
const gradeMap = [
{ min: 90, max: 100, grade: 'A1', points: 10 },
{ min: 80, max: 89, grade: 'A2', points: 9 },
{ min: 70, max: 79, grade: 'B1', points: 8 },
{ min: 60, max: 69, grade: 'B2', points: 7 },
{ min: 50, max: 59, grade: 'C1', points: 6 },
{ min: 40, max: 49, grade: 'C2', points: 5 },
{ min: 33, max: 39, grade: 'D', points: 4 },
{ min: 0, max: 32, grade: 'E', points: 0 },
];
// CGPA calculation
const cgpa = sum(subjectPoints) / numberOfSubjects;
Report Card Generation
GET /school-admin/exam/report-card/:studentId?examId=uuid
Returns structured report card data including:
- Marks per subject with grade
- Total marks, percentage, CGPA
- Class rank
- Attendance during exam period
Teacher Result Entry (Teachers App)
Teachers with write permission for the exam module can enter results:
POST /teacher/exams/result
{
"data": {
"examId": "uuid",
"studentId": "uuid",
"subjectId": "currentTeacherSubjectId",
"marksObtained": 65,
"maxMarks": 80,
"grade": "B2"
}
}