01 · The challenge
What needed solving
A growing private school was running on a stitched-together stack: paper attendance registers, a WhatsApp broadcast list for notices, printed timetables on the noticeboard, and a separate Excel sheet for exam results. Parents couldn't check anything on their own and teachers spent an hour a day re-keying the same data into different systems.
02 · Our approach
How we framed the work
We started with a discovery sprint to map the user journey, business goals and real constraints. From there we wrote a fixed-scope plan: clear milestones, weekly review gates on a staging URL, and a written exit criterion for every phase. The web development space rewards teams that ship — not teams that plan — so we biased the engagement towards working software from week two onward.
03 · The solution
What we built
We built a vanilla PHP 8.1 + MySQL platform — deliberately not Laravel — to keep the deployment lightweight enough for the school's shared cPanel host. Four role-aware panels (admin, teacher, student, owner) gate access to the right surfaces: student/teacher record management, leave and attendance tracking, exam result upload, notice distribution, syllabus and notes uploads, bus service coordination, and timetable management. New accounts use the date of birth as the default password for easy first login. Dark mode ships on day one. UI is Bootstrap 5 + jQuery — works on whatever phone the parent already has.
04 · The results
What changed for the client.
Parents check attendance, results and notices from their phone — WhatsApp broadcasts retired
Teachers enter data once — admin, parents and students see it instantly in their own panel
Runs on entry-level shared hosting — no Laravel, no Node, no DevOps overhead for the school
Tech stack
Want a similar outcome for your business? We'd love to hear about it.