Built in two days for Prhacktical, the EdPlus hackathon, for the 500+ people at the SkySong 3 office. Shown to EdPlus leadership, including the CEO, chairman, vice chairman and department head, and now going live for the whole office, with a wider rollout planned.
- 500+
- 2 days
- 320
- 240
A day in it5





Features9
| Area | What you can do |
|---|---|
| Floor map | See every room and desk, search anyone by name, see where each team sits |
| Directions | Walk to any room or desk, find the nearest exit, see the walk time |
| Rooms | Find a free room now, book in three taps, pick by size or screen |
| Meetings | Invite people by name, see who is away that day, no-shows free the room |
| Room care | Report a broken screen, see it on the map, say if a room is too cold |
| Desks | Claim your own desk, book a hot desk, sit near your team |
| 3D desk | Decorate in 3D, pin notes and photos, leave teammates a note |
| People | See who is in today, plan your office days, share your status |
| Facilities | Edit the floor plan, add rooms, desks and signs, track broken equipment |
How it's built8
- No framework: Vite and plain JavaScript, Leaflet (a web map library) drawing the floor as vector shapes traced from the real plan, and three.js for the 3D desks.
- Zero runtime dependencies in the API: Node's built-in HTTP server and SQLite, one database file, two commands to run it.
- Walking routes: a grid pathfinder over the walkable floor only, so a route never cuts through a room, a desk pod or a gap narrower than a person.
- Rooms free themselves: check-in opens 5 minutes before a booking and closes 10 after. No-shows are cleared whenever bookings are read, so there are no timers to run.
- Safe photo uploads: the browser re-encodes every photo to strip its location data, and the server checks the file's real type, caps it at 2 MB and never accepts SVG.
- Made for everyone: Atkinson Hyperlegible (a typeface designed for low vision) for body text, WCAG AA contrast, and safety signs coloured like the building's own.
- The film is the app: the 3D floor, captions and soundtrack are rendered by the app itself, then exported frame by frame to video.
- Tested: 240 tests across the API, the web app and the shared floor model.
Tools
- JavaScript
- Vite
- Leaflet
- three.js
- Node.js
- SQLite
- Web Awesome
- Radix Colors