Skip to content

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

DomainDescription
Teacher ManagementTeacher profiles, school assignments, and employment records
Student ManagementStudent profiles, enrollment, academic history, and progression
Class & Subject ManagementSchool classes, subjects, study meetings, and grade levels
Academic CalendarAcademic years, terms/semesters, and active periods
Leave ManagementTeacher leave requests, approvals, balances, and holiday calendars
Teacher SubstitutionSubstitute 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:

  1. Enrollment → Student registered in a school and class
  2. Academic History → Tracks grades, class assignments per term/year
  3. Progression → Promotion from one grade level to the next
  4. 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