Inspiration

A little free time should not disappear into twenty open tabs. Great places are often nearby, but finding an outing that fits your schedule, budget, group, mood, and travel method can take longer than the outing itself. We built SideQuest to remove that planning friction and help people rediscover the cities around them.

What it does

SideQuest turns a few preferences into a complete local adventure. A user chooses a starting city, available time, total budget, group size, vibe, and travel mode. The app then creates an ordered quest with real local stops that fit those constraints.

The current prototype supports Moncton, Fredericton, and Halifax. It presents the route on a map, estimates travel time between stops, opens turn-by-turn directions, and tracks progress through the adventure. For a reliable hackathon demo, check-ins are simulated using each stop's saved coordinates. Users can attach photo memories, complete every stop, and earn a digital quest stamp. Passport-inspired screens turn completed outings into something worth collecting instead of another forgotten recommendation list.

How we built it

The mobile experience is built with React Native, Expo, and Expo Router. A Spring Boot backend exposes the adventure, place, check-in, and passport APIs.

For generation, the backend gives GPT-4o mini a bounded catalog of real places plus the user's constraints and requests structured JSON containing an ordered set of place IDs. A deterministic vibe-based fallback keeps the core flow working if the AI service is unavailable. OpenRouteService supplies distance and travel-time estimates, while Supabase and PostgreSQL store adventures, ordered stops, check-ins, and earned stamps. React Native Maps visualizes the route, and Google Maps links provide directions from the user's phone.

We also used a shared API contract and mock data so the mobile and backend work could move in parallel. During development, Cloudflare tunnels made both the Expo bundle and local Spring Boot API reachable from physical phones.

Challenges we ran into

The hardest part was coordinating several constraints at once: the route had to match a user's vibe, stay within time and budget, respect group size, and still make geographic sense. We also had to make an AI-backed experience dependable enough for a live demo. Structured outputs, validation, and deterministic fallbacks helped us avoid brittle behavior.

Running a mobile client and local backend across different devices and networks created another challenge. Tunnel URLs changed, mobile caches held stale builds, and external services could fail independently. We added clear setup guides, graceful routing fallbacks, duplicate-request protection, and read-back checks after saving data.

Accomplishments that we're proud of

We completed the core journey end to end: preferences → AI-planned adventure → real stops → route → check-ins → earned stamp. The app works with real persisted adventure IDs, verifies saved progress, and degrades gracefully when optional services are unavailable. We are also proud that four contributors could build separate parts against one contract and integrate them into a cohesive, polished mobile experience.

What we learned

We learned that AI is most useful here when it is bounded by trusted data and explicit rules, not asked to invent an itinerary from scratch. We also learned how important idempotency, state verification, and fallbacks are in a workflow that crosses an LLM, a routing service, a database, a mobile client, and a backend.

Most of all, we learned to prioritize the full experience. A smaller loop that reliably gets someone from “I have 90 minutes” to “I earned this stamp” is more compelling than a long list of disconnected features.

What's next for SideQuest

Next, we want to replace the demo check-in with live GPS verification, source places dynamically from a places provider, connect the passport gallery entirely to each user's saved history, and deploy the backend behind a stable production URL. We would also add authentication, shareable passports, collaborative group quests, smarter accessibility preferences, and support for more cities.

Built With

Share this project:

Updates

Submission history