Inspiration
Across Pakistan, countless government schools quietly fail their students, missing toilets, absent teachers, crumbling buildings, ghost staff who collect salaries without ever showing up. These problems rarely reach anyone who can fix them, because there's no simple way for parents, students, or communities to raise their voice and be heard. We built Sabaq because we believe every child deserves a fair lesson, and accountability starts with visibility. If people can see what's broken, and see what gets fixed, real change becomes possible.
What it does
Sabaq is a public reporting platform for school accountability in Pakistan. Anyone, a parent, student, teacher, or community member, can report a problem at any school: a ghost teacher who never shows up, a missing boundary wall, no clean drinking water, corporal punishment, illegal fees, or dozens of other issues we've categorized. Reports go into a public dashboard, so anyone can browse real-time stats on what's being reported and where. Because everything is visible, schools and education authorities can't quietly ignore problems, and communities can track whether reported issues actually get fixed over time.
How we built it
We built Sabaq's backend with Node.js and Express 5, using EJS to render server-side views for a fast, lightweight frontend without a heavy JavaScript framework. For data, we used Prisma as our ORM on top of a MariaDB database, which let us design a clean, structured schema with 40-plus predefined school-issue categories, keeping every report consistent and easy to aggregate into public statistics.
For authentication, we implemented JWT-based sessions with bcrypt for password hashing, keeping user accounts secure. Report submissions support photo evidence through Multer for file uploads, and we integrated Google APIs to extend functionality around location and verification. The entire application, including our database, is hosted on Railway, which let us deploy continuously and focus our limited hackathon hours on building features rather than managing infrastructure.
We kept the stack deliberately simple and proven, so a small team could move fast, iterate quickly, and ship a fully working, end-to-end product within the hackathon timeframe.
Challenges we ran into
One of our biggest challenges was deployment on Railway, specifically getting our environment variables configured correctly. Our database connection strings, JWT secrets, and API keys worked fine locally, but getting them properly set up in Railway's hosted environment took several rounds of debugging before the app connected to the database reliably in production. It was a good reminder of how different local development and live deployment environments can be, and pushed us to understand our configuration setup much more deeply.
Accomplishments that we're proud of
We're proud that we built a fully working, end-to-end platform where anyone can report a school problem directly, without any complicated process. We designed over 40 issue categories covering the real problems schools in Pakistan actually face, from ghost teachers to broken facilities to corruption, giving the data real structure from day one. We're also proud that transparency sits at the core of the system, with every report staying public so real accountability becomes possible. Most of all, as a small team, successfully deploying a complete, working product with authentication, file uploads, and a live database within the hackathon timeframe feels like a real win.
What we learned
We learned that deployment is often harder than development itself, and that environment configuration deserves attention early, not as an afterthought. Working with Prisma and MariaDB together taught us a lot about structuring a database schema that stays clean even as the number of categories and relationships grows. We also learned how much a simple, focused idea can resonate; sometimes the most impactful tools aren't the most complex ones, just the ones that solve a real, overlooked problem clearly. Finally, building under time pressure as a small team taught us to prioritize ruthlessly and ship a working product over a perfect one.
What's next for Sabaq
"Next, we want to add a verification layer, where reports can be confirmed by multiple community members or local volunteers before appearing as validated, to strengthen trust in the data. We'd also like to build a public map view so people can see exactly which schools in their area have unresolved issues. On the accountability side, we plan to add status tracking, letting authorities mark a report as in progress or resolved, with photo proof, so the loop actually closes. Longer term, we hope to partner with education departments or NGOs to turn Sabaq's data into real policy and funding decisions, not just visibility.
Built With
- backend
- bcrypt
- css
- ejs
- express.js
- html
- javascript
- jwt
- multer
- mysql
- node.js
- prisma
- railway

Log in or sign up for Devpost to join the conversation.