Case 07Operations · Scheduling
Every classroom on campus, live.نظام إدارة ومراقبة القاعات
- Year
- 2026
- Status
- Complete
- Discipline
- Operations · Scheduling

- 16
- reports
- 7
- roles
- ~45
- permissions
01 — The problem
Nobody could answer “which halls are free right now?” without phone calls. Schedules clashed, maintenance was invisible, and every faculty kept its own spreadsheet.
A classroom and hall management system for Syrian Private University: live occupancy per room, conflict-safe scheduling, a bulk room-naming engine, smart search and sixteen exportable reports.
02 — What I built
- 01
An availability engine that always derives state — available, occupied, maintenance, disabled — from schedules, maintenance periods and operational status.
- 02
Race-safe session creation with room and instructor conflict detection, explained in Arabic.
- 03
A naming engine that generates AI-01 … AI-20 (any prefix, padding, step or exclusions) in one atomic transaction.
- 04
16 reports with Arabic-embedded PDF, Excel, CSV and print exports; validated CSV/XLSX imports with preview before commit.
03 — Architecture
How the pieces fit.
- L1Interface
- Blade + Tailwind 4
- Alpine.js
- Arabic-first RTL
- L2Domain
- Availability engine
- Conflict detection
- Recurrence rules
- L3Platform
- Laravel 12 · PHP 8.2+
- MySQL 8
- Audit log
Requests flow top to bottom · each layer depends only on the one beneath
04 — Decisions that matter
Decisions
Derived, never stored
Room status is computed from facts, so it can never drift out of sync with the schedule.
Faculty isolation in the backend
Seven roles and ~45 permissions, with faculty scoping enforced server-side rather than hidden in the UI.
05 — Security & trust
- RBAC: 7 roles, ~45 granular permissions.
- Backend-enforced faculty data isolation.
- Audit log with user, old/new values and IP.
06 — Stack
- Laravel 12
- PHP
- MySQL 8
- Blade
- Tailwind CSS 4
- Alpine.js
07 — In the product



Next case · 08
Qbanker
Exams grounded in the faculty’s own rules.