Inspiration
Campus life is scattered: bus info in one app, peer help in group chats, updates on flyers and Instagram. When your phone hits 5% in Davis Library, there's no good way to ask the people around you. We wanted one place where transit, community help, and campus news live together on a real map of Chapel Hill, with the glossy, optimistic feel of the Frutiger Aero internet.
What it does
Aqua Static is a live 3D map of UNC-Chapel Hill where students say what they need or can offer in plain English.
- Post like you'd text a friend. Type "Need a USB-C laptop charger at Davis Library for the next hour." Gemini turns it into a structured post (item, place, time, urgency) and puts it on the map after the student confirms.
- Aqua Static Radio. An AI station voiced with ElevenLabs narrates campus updates from real UNC feeds and community posts.
- Transit on the same map. Real Chapel Hill Transit data (22 routes, about 520 stops) and a live bus tracker.
- Ask Aqua Static. An assistant answers questions like "What help requests are there around Davis?" using only stored posts, with sources.
How we built it
- Frontend: Next.js 15, React 19, TypeScript, Tailwind CSS, Radix UI, Framer Motion, with custom Frutiger Aero glass and gloss styling.
- Map: MapLibre GL with OpenFreeMap tiles. 3D buildings come from OpenStreetMap heights, and Three.js layers add buses and walking pedestrians.
- Backend: Next.js API routes, Tiger Data.
- AI: Google Gemini parses posts, powers the assistant, and writes radio scripts. Every output is validated, and locations are checked against a campus registry before saving. A local parser takes over without a key.
- Voice: ElevenLabs, with browser speech as a fallback.
- Transit: Chapel Hill Transit's public GTFS feed.
Challenges we ran into
- Trusting AI output. We validate every field so a bad parse can't put a pin in the wrong place.
- Real data without clutter. Posts, feeds, and transit share one map, so we filtered carefully.
- 3D on a vector map. Buildings, buses, and walking people needed custom layers and tuning.
Accomplishments that we're proud of
- An end-to-end platform that connects practical utility (transit, campus news) with real community help (requests, matches, chat).
- A matching engine that explains its decisions.
- A map that looks like a real place, with a distinct Frutiger Aero design.
What we learned
- AI features are only as trustworthy as the validation around them.
- Shared real-time state across two browsers is hard to get right, and worth it.
What's next for Aqua Static
- Voice-to-text posting and automated audio for community notes on the radio.
- iMessage notifications and a beta with UNC student groups.
- Expanding to different campuses.
Built with
Next.js, React, TypeScript, Tailwind CSS, MapLibre GL, OpenFreeMap, Three.js, SQLite, Drizzle ORM, Zod, Google Gemini API, ElevenLabs, GTFS
Built With
- elevenlabs
- google-cloud
- java
- javascript
- mjs
- tigerdatabase
Log in or sign up for Devpost to join the conversation.