JoyWalk: Walking Routes for Small Happiness

Best Use of API (Vultr) · HackCMU 2026 · Team OdyssAI

Navigation apps optimize for speed, so they skip the small, unexpected joys along the way. JoyWalk is a walking-route app built around the Korean idea of so-hwak-haeng, “small but certain happiness.” Instead of the fastest path, it routes you past nearby Joy Spots: a friendly dog someone photographed, cherry blossoms in bloom, a cozy café, small moments other people have left behind. Built in 24 hours at HackCMU 2026 (Sept 11–12), it won Best Use of API (Vultr).

Live Demo Video Slides Code

The Joy Map

JoyWalk's main map of Pittsburgh with glowing joy bubbles, category filters, a search bar and a camera button.
Small joys shared by other people appear as glowing bubbles on the map, filterable by category.

Anyone can leave a joy right where they stand: take a photo or pick one from the album, write a line, and the app suggests a matching emoji from the keywords (“the coffee smell here is amazing” becomes ☕). The pin appears on the map immediately and can be recommended into other people’s routes. The interface uses spring animations and glassmorphism inspired by Apple’s Fluid Interface language, with a dark “dopamine palette” of purple, pink and lime.

Joy routes

Route recommendation panel showing a map with a detour route and three route styles: flavor-first, distance-first and balanced.
Given a start and a destination, JoyWalk proposes several route styles: flavor-first, distance-first, or balanced.

Nearby Joy Spots are first personalized with hybrid collaborative filtering. The visiting order is then optimized as a small Hamiltonian-path problem, and walking directions, distance and duration come from the Google Maps Directions API.

Four-step routing pipeline: a padded corridor around the direct route, a distance matrix, a brute-force search over the order of joy bubbles, and the optimized result.
Joy spots near the direct route are gathered into a corridor and turned into a distance matrix. The start and end stay fixed, and only the order of the joy spots is optimized.

Real-time discovery with Grok

A joy spot detail card for a skyline view at PNC Park, tagged as discovered by Grok on X.
A spot discovered automatically from a public X post, with its story, photo and tags.

On the server, xAI’s Grok (grok-4.6) with the x_search tool scans recent public X posts from Pittsburgh. Only results with a publicly visitable location and a verifiable post link become map bubbles. Results are cached for 6 hours and community spots are always shown first, so API latency or rate limits never break the demo, and the API key stays server-side.

System

Architecture diagram: a Next.js client and API layer connected to Firebase, MongoDB, Google Maps, X/Grok, Gemini and Google Translate.
The Next.js API layer sits between the client and every external service: Firebase for auth and photos, MongoDB for joy data, Google Maps for routing, and Grok, Gemini and Translate for discovery and enrichment.

Recommendation differences are currently demonstrated with 15 mock users and 3 demo personas. The next step is to replace them with real like and visit events streamed into Firestore.

Tech: Next.js, React, TailwindCSS, Google Maps Platform, xAI Grok, Firebase, MongoDB

Team OdyssAI: Doyoung Heo, Yucheon Park, Minki Kim, Seungyeon Back