UoS Parking — smart campus parking coordination
A bilingual, anonymous, real-time signal board for 20,000 commuters.
- role
- Full Stack Developer
- duration
- 1 week
- team
- solo
- stack
- Next.js 15 · PostgreSQL · Neon · TypeScript · Tailwind · PWA

“a week of code replaced a dozen WhatsApp groups.”
The problem
Twenty thousand students. Three campuses. One overflowing parking problem. The existing solution was a dozen WhatsApp groups and a lot of hope.
The approach
A mobile-first PWA where anyone on campus can post a one-tap LEAVING, FREE, or NEED signal against a zone and building side (front or back, because it matters when you’re circling). Optional phone number for direct coordination. Everything expires automatically within minutes so the board never lies.
No accounts. Only a hashed device ID. Rate limiting enforced at the database level via a Postgres create_signal() function — 45-second cooldown, 25 per device per day — so there’s nothing for a client to bypass.
The stack
Next.js 15 App Router + TypeScript + Tailwind on the front, Neon serverless Postgres on the back, deployed to Vercel. State in Zustand. Arabic-first typography with Almarai, proper RTL, and per-locale spacing. 30-second polling instead of WebSockets — real-time feel, zero operational complexity.
Reflection
Shipping in a week forced the ruthless call: the database-as-API pattern, the polling choice, the decision to expire signals by time rather than track “still valid?” flags. Each was the lazier option on paper, and each was the right one in practice.