Case study
SchoolMS — school management system
Phased build for an institution: distinct experiences for admin, teacher, student, parent, and transport with permissions and reporting built in Laravel.
What it is
The codebase separates HTTP concerns by actor namespaces (admin, teacher, parent, …) and tracks delivery through phase documents. Spatie roles/gates centralize authorization; Maatwebsite and DomPDF cover operational exports families expect from school software.
Architecture
Vertical slices per role plus shared services/models. Livewire components own much of the interactive UI, so state stays close to Laravel validation and policies.
┌────────────┐ ┌────────────┐ ┌─────────────┐
│ Admin UI │ │ Teacher UI │ │ Parent UI │ …
└─────┬──────┘ └─────┬──────┘ └──────┬──────┘
│ Livewire components + policies
▼
┌─────────────────────────────────────┐
│ Services · Models · Shared queries │
└─────────────────┬───────────────────┘
▼
MySQL
Highlights
- Spatie Permission is a battle-tested RBAC baseline.
- Livewire reduces JS sprawl for CRUD-heavy school workflows.
- Excel + PDF match real admin habits (imports, printable lists).
- Phase docs give auditability for long implementations.