</unispace>
</the problem>
University of Melbourne students waste hours searching for study spaces. Libraries fill up silently, building occupancy is invisible, and there's no way to know which spaces have the amenities you need or how busy they'll be in an hour.
</my approach>
Built a privacy-first PWA with real-time occupancy heatmaps across 18 campus buildings. Client-side geofencing ensures GPS never leaves the device, while a crowd reporting system and multi-source data fallback chain keep the map useful even with zero active users.
</key features>
Live occupancy heatmap
Full-viewport Mapbox map with building polygons color-coded by occupancy. Tap for floor-by-floor breakdowns.
Smart spot finder
Recommendations filtered by amenities (WiFi, power, quiet, accessibility, group tables) and walking distance.
24-hour predictions
Forecasting charts based on historical patterns and live crowd data so you can plan ahead.
Crowd reporting
1-5 scale occupancy ratings with noise level tracking. The system gets smarter with every report.
Push notifications
Get alerted when your favorite spaces free up. No manual checking needed.
Zero-knowledge privacy
GPS stays on device. Client-side geofencing via Turf.js. Session IDs rotate every 30 minutes.
</what i learned>
Privacy constraints force better architecture. Client-side geofencing is more complex to build but creates genuine user trust.
The cold start problem is the biggest risk for crowdsourced apps. Multi-source fallback chains are essential on day one.
Scaling from 5 to 18 buildings exposed every shortcut in the original schema. Normalize early.