Academic Module
Overview
The Academic module manages all teaching and learning activities within the Sutomo platform. It covers teacher management, student records, class scheduling, subject definition, academic calendars, leave management, and teacher substitution.
The Academic module is divided into several domains that work together to support the full academic lifecycle — from teacher assignment and student enrollment to daily class operations and substitution management.
Key Domains
| Domain | Description |
|---|---|
| Teacher Management | Teacher profiles, school assignments, and employment records |
| Student Management | Student profiles, enrollment, academic history, and progression |
| Class & Subject Management | School classes, subjects, study meetings, and grade levels |
| Academic Calendar | Academic years, terms/semesters, and active periods |
| Leave Management | Teacher leave requests, approvals, balances, and holiday calendars |
| Teacher Substitution | Substitute assignment when teachers are absent |
Concept
The Academic module operates across several interconnected domains:
1. Teacher-Centric Architecture
Teachers are the central actors. A Teacher model links a User to a School and has an associated Employee record. Teachers create leave requests, receive substitute assignments, and are assigned to classes.
2. Academic Year Structure
The academic calendar is organized hierarchically:
- Academic Year → Defines a school year with start/end dates
- Term → Sub-divisions within an academic year (e.g., Semester 1, Semester 2)
- Active status → Only one academic year or term can be current at a time
3. Student Lifecycle
Students move through a structured lifecycle:
- Enrollment → Student registered in a school and class
- Academic History → Tracks grades, class assignments per term/year
- Progression → Promotion from one grade level to the next
- Status Changes → Active, transferred, graduated, dropped out
4. Leave & Substitution Integration
When a teacher takes leave, the system can automatically track substitute assignments. The LeaveSubstitute model connects leave requests to substitute employees, while SubstituteAssignment handles daily class-level substitutions for specific subjects and time slots.
Database
Entity Relationship Diagram
Key Files
app/Models/
├── Educator/
│ ├── Teacher/Teacher.php # Teacher management
│ └── SubstituteManagement/
│ └── SubstituteAssignment/
│ └── SubstituteAssignment.php # Class-level substitution
│
├── Learner/
│ ├── Student/Student.php # Student records
│ ├── StudentEnrollment/StudentEnrollment.php # Enrollment management
│ ├── StudentProfile/StudentProfile.php # Extended student data
│ ├── StudentStatusHistory/StudentStatusHistory.php # Status tracking
│ └── AcademicYear/AcademicYear.php # Academic year/term
│
├── LeaveManagement/
│ ├── LeaveRequest/LeaveRequest.php # Leave requests
│ ├── LeaveSubstitute/LeaveSubstitute.php # Leave-based substitution
│ ├── LeaveBalance/LeaveBalance.php # Leave quotas
│ └── Holiday/Holiday.php # Holiday calendar
│
└── Institution/
└── School/School.php # School/unit assignment
database/migrations/
├── v1_0_0/003_migrate_academic.php # Core academic tables
├── v1_2_0/ # Leave management tables
└── v1_3_0/000_migrate_student_master_record.php # Student master data