Nexs — School Operating System
Designing a modern school operating system.
Context & Concrete Constraints
Key Engineering & Design Decisions
Attendance had to survive someone gaming their GPS
Staff and students check in through geofencing tied to the school gate radius. Mock location apps are one tap away on any Android phone, so the check-in flow also screens for spoofed coordinates instead of trusting whatever the device reports.
Every action checks permission before it runs, not after
Admins, teachers, and students share the same platform, which means one unguarded server action is a data leak waiting to happen. Every server action and API route runs through a permission check first, and the login layer sits behind a rate limiter to block brute force attempts.
The yearly data import stopped being a manual re-typing job
Dapodik exports arrive as raw Excel files with formatting that varies by year and by whoever prepared it. The import pipeline validates the schema before anything touches the database, and batches the writes so a few thousand student records don't turn into a few thousand individual queries.
Deployment stayed boring, on purpose
This runs behind a Cloudflare tunnel instead of a manually configured reverse proxy. No certbot renewals, no SSL configuration to babysit. For a system one person maintains alongside actually running the school, boring infrastructure isn't a compromise. It's what makes the maintenance possible at all.
Architecture & Portal Highlights
Operational Impact
Six weeks after starting, Nexs was live for its first pilot: 62 students, 62 parents, and 15 teachers running attendance, discipline tracking, payroll, and scheduling through one system instead of several separate processes. Sixty-two families is a small number next to a SaaS metrics slide, and that's fine. It's every student in the pilot cohort, and every one of them switched over in six weeks.
Honest Retrospective & Next Bottleneck
The hosting spec is deliberately tight, one vCPU and 1 GB of RAM at minimum, because this was built for one school, not as multi-tenant software. That was the right call for this project. It also means if a second school wants this system, it needs its own deployment rather than a shared account, and that's a real limitation I'd need to solve before this becomes something other schools use directly.