DEV Community

Cover image for Spoke & Story : a bike route planner with a storyteller in your ear
DanialMo
DanialMo

Posted on AI-assisted

Spoke & Story : a bike route planner with a storyteller in your ear

Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission 🌿

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass

What I Built

One of the reasons I don't go out on my bike is that I don't know where to go. I want somewhere beautiful, without high hills. I'd also take the bike to the gym or anywhere else if I knew the best way there. And riding is more fun when you can listen to something: stories about the places you pass, a bit of news, like old-school radio :))

So I built Spoke & Story. You tell it where you want to go, or just "something flat, my legs are dead". It finds a nice bike route, and while you ride, Santa tells you one silly, connected story about the places you pass. The story is built from real Wikipedia facts, and each chapter is written live as you get close to the place.

It's for anyone who has a bike in the garage and no good reason to take it out.

  • Where to? Type a place, pick Scenic, Flattest, Fastest or Bike lanes. You get up to 3 routes, and Gemma picks one and tells you why.
  • Ride buddy: prefer to chat? An agent asks at most two questions, then plans the ride.
  • Ride mode: follows your GPS and gives you the real turns only. Santa tells a chapter when you get near a place, talks about the town when it's quiet, and finds a new route when you go off course.
  • Remember me: ride the same route again and the story continues as the next episode. Everything personal stays on your phone.

Demo

Try it: https://spoke-and-story.tech (best on a phone. At home? Press Simulate.)

Code

GitHub logo Danialmoa / spoke-and-story

Bike route planner with a funny storytelling ride guide (Gemma 4, Kokoro, OpenStreetMap)

Spoke & Story

A bike route planner with a funny ride guide. Tell it where you want to go, it finds a nice route, and on the way Santa tells you one silly, connected story about the places you pass.

Built for the DEV Hacktoberfest 2026 "Touch Grass" challenge: open-source AI that gets you outside.

Try it: https://spoke-and-story.tech (best on a phone: ride mode uses your GPS)

10-second demo on a phone: typing Como, three routes on the map, Gemma's pick, then a simulated ride where Santa starts the story

What you can do

  • Where to? Type a destination (typos are fine), pick Scenic, Flattest or Fastest and your bike. You get up to 3 routes in a few seconds, then Gemma picks one and tells you why.
  • Ride buddy: prefer to chat? Say what you feel like ("50 km gravel loop", "something flat, my legs are dead") It asks at most two questions, then plans the ride.
  • Saved places and Home: tap ☆ next to the destination to save it, and set…

How I Built It

Gemma 4 (26B-A4B, open weights) is the brain. It picks the route and explains why. It runs the ride buddy, a small agent that can search places and plan routes. It writes the story outline and then each chapter live, from the Wikipedia facts about the place you're riding past. Kokoro-82M, an open-source voice model, can run right inside your phone's browser. The map side is all open too: OpenStreetMap data through Photon (place search), OpenRouteService (routing) and Overpass (water, forest, viewpoints, cafés).

It took me three tries.

First try: a route planner. Type a place, get three routes, Gemma picks one, and Santa reads a story written before the ride, in Kokoro's voice. It worked well at my desk.

Second try: I put it on Render and took it outside, and that's where it broke. First, my iPhone made no sound at all. Then on my first real ride, the app said "44 lines ready"... and Santa said nothing. Every story was tied to a kilometre on the planned route, and each time I took another road, the reroute threw them away. So I changed the idea: every place gets a circle around it, and when you ride into the circle, Gemma writes that chapter right then. When it's quiet for a while, Santa tells you something about the town you're in.

Third try: Kokoro was too slow on my phone, so ElevenLabs became the default voice, with Kokoro as the open-source option (it now speaks sentence by sentence). Stories are made little by little, a few km ahead, instead of all at the start. Gemma also suggests topics about your town (like the history of the train in Bergamo), and each one is checked against Wikipedia before Santa says it, so he doesn't make up history. Ride the same route twice and you get the next episode, starting from the last ride's cliffhanger.

And it actually works: it got me out a couple of times to test it for real. I encourage you to go outside to try it, but I added a simulation too, so you can see how it works from home :))

I shared the build as it happened:

The backend is a small FastAPI app, the page is plain HTML and JavaScript with no build step, and it all runs on Render.

Why Does Open Innovation Matter?

It matters because open models can run without limits, and locally, without sharing a lot of your data. After the first try, I switched the voice to ElevenLabs, but I believe this part can run on open weights too. I just need more time to improve it.

  • Gemma's weights are open, so I'm not locked to one provider. It already runs through two hosts (Backboard, with Google AI Studio as the fallback), and I could move it to my own machine.
  • Kokoro runs inside your phone's browser, so with that voice nothing you hear leaves your phone.
  • Routes, places and facts all come from open data (OpenStreetMap, Wikipedia), which I can query and score freely, like counting the water and forest along a route.

My Agent Session

Prize Categories

  • Best Use of Gemma: Gemma 4 is the agent at the core: the route pick, the ride buddy, the live stories and the topics.
  • Best Use of Render: the whole app (the agent's backend and the front end) runs on Render at spoke-and-story.tech.
  • Best Use of ElevenLabs: ElevenLabs gives the open-source Gemma agent its voice, with the costs capped on the server.
  • Best Use of Backboard: one Backboard API key serves Gemma 4, in about 2 s a call instead of 20-40 s.

Top comments (0)