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

Share this project:

Updates

Submission history