LaravelPHPMySQLBootstrap

School Management System

Integrated academic and extracurricular school management platform

School Management System

Project Overview

The School Management System is an academic data processing application designed to make it easier for admins, teachers, and students to interact with the school database. Main features include layered CRUD operations with grouped authentication authorization (Admin, Teacher, Student). Through a robust ORM implementation, this application can map complex relationships like Many to Many between students and extracurricular activities. In addition, the system is equipped with Soft Deleting to accommodate accidentally deleted student data that can be restored, as well as dynamic search paired with pagination to maintain browser performance.

Key Features

Role Based Access Control

Menu access is managed based on roles. Admins have full operation access (Add/Edit/Delete), Teachers can only Update, and Students have View only access for data privacy and security.

Advanced Database Relationship

Student data is connected to Class (One to Many), Teacher (One to One with class), and Extracurricular activities (Many to Many via pivot tables).

Soft Delete & Data Recovery

A secure feature where every deleted data goes to the Trash (Deleted Data list), allowing Admins to either restore the data or permanently delete it.

Eager Loading & Pagination

Equipped with smart search features based on name, student ID, or class. Query optimization using Eager Loading has proven effective in preventing the N+1 performance issue.

Impact & Outcomes

  • Produced an academic system architecture that avoids potential query redundancy
  • Developed a securely protected web application with Role Based Access
  • Ensured daily school data integrity thanks to the Soft Deletes safety net system

Technical Challenges

N+1 Query Problem Management

Initially, fetching Student with Extracurriculars relationship resulted in a sudden spike of queries. I resolved this by implementing Eloquent's Eager Loading feature, converting it to a maximum of 2 lightweight queries.

Access Rights Implementation

Ensuring that views (delete/edit buttons) only appear according to the user's role. This was resolved by combining Blade conditionings on the frontend.