This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
I'm a tired, busy, sometimes anxious college student, and going outside is what really heals me. When I'm out, I notice the little things around me and write them down in my journal. I'm the girl who always stops to take pictures of the sky.
To me, being in nature and really looking around is the break people actually need. Step counters never gave me that. A number goes up and nothing changes. So I wondered: what if that break could feel like a game?
So I built Walk Journal: an app that gives you a small outdoor quest, tells you to put your phone away, and then checks your proof. Every walk becomes a page in a little diary.

The goal of the whole app is for you to use it as little as possible.
It even measures its own screen time, so it knows if you're cheating with your eyes on the phone instead of the sky.
What I Built
Walk Journal turns a walk into a short quest with 3 to 7 photo tasks. It's for anyone who spends too much time at a screen and wants a gentle reason to go outside and notice things.
- You pick how far and how hard. "Walk from here" starts from wherever you are, with no destination. "Find me a walk" uses SerpApi to find real parks and trails near you, and Gemma picks the best three for right now.
- Gemma writes a quest for this place, this season, and this time of day. In Missouri in October that means a red leaf, an acorn, the sky before sunset. On an evening walk it skips sky tasks after dark. If the place has a lake in its search data, a task can mention the lake. If it doesn't, the quest is not allowed to invent one.
-
Then the app tells you to put your phone away. ๐ต This is the most important step. Your tasks sit in a notification on your lock screen, so you don't have to keep opening the app. You only take the phone out to snap a photo.
-
You take a photo when you find something. Three checks decide if it counts:
- Right place: the phone's GPS at the moment of the photo, compared to the walk.
- Right time: taken during the quest, not last week.
- Right thing: Gemma looks at the photo and decides if it's really a red leaf.
- When you finish, you write a short note on how it felt, and the walk is saved as a diary page with your photos taped in, plus a pin on your map.
At the end of every walk, it shows one number I care about more than steps:
382 seconds on screen. 26 minutes outside.
That's from a real tester's walk: her phone was away for about three quarters of it. The less you look at Walk Journal, the better it's working.

Some choices I made on purpose:
- No daily streaks: a weekly goal instead, and the app never says "streak broken."
- 75% is a finished walk: can't find a ladybug? Most tasks still count, and partial walks are saved too.
- Swaps: if a task doesn't fit where you are, Gemma writes a new one.
- Safety first: no climbing, water, animals, or photos near traffic.
- A calm look: a cozy farmland style with softly swaying grass.
Demo
Code
nikithakls17-sys
/
Walk-Journal-
A quest-giving outdoor journal: local Gemma finds real walks, writes seasonal photo quests, reads them aloud, and verifies your photo proof. The screen is the shortest part. DEV Hacktoberfest 2026 Touch Grass.
Walk Journal ๐พ
A quest-giving outdoor journal. The screen is the shortest part.
Walk Journal finds real walks near you, writes a seasonal, place-specific photo quest, and reads it aloud so your phone can go in your pocket. When you snap proof, it checks the place, the time, and what's in the photo, all on your own laptop with Gemma. Every walk you finish becomes a pin on your map and a page in your journal.
Built for the DEV Hacktoberfest 2026 Open-Source AI Challenge, Week 1: Touch Grass: "Build something with open-weight models or open-source AI that gets people off the screen and into the world."
How it gets you outside
- Tap Find me a walk. Pick a distance (Nearby / Walk-Run / Adventure) and a difficulty (Easy / Medium / Hard).
- SerpApi finds real parks, trails and lakes nearby. Gemma picks the best 3 for rightโฆ
How I Built It
The main rule: Gemma does the creative work and the seeing. Plain code owns every fact.

| Job | Done by |
|---|---|
| Write the quest, rank nearby walks, write swap tasks | Gemma 4 (gemma4:e4b), running locally through Ollama |
| Check what's in a photo, read fitness-tracker screenshots | Gemma 4 vision, locally |
| Season, sunset time, deadlines, distance, photo time and GPS checks, points | Python code |
| Find real parks and trails | SerpApi (cached for 7 days) |
| Map | Leaflet + OpenStreetMap |
I didn't want to trust a model with anything a person shouldn't have to double-check. So every quest goes through a rule checker before anyone sees it: tasks that mention features the place doesn't have are dropped, unsafe tasks are dropped, repeats of recent task types are dropped, and the deadline is cut so the quest ends before sunset. If Gemma's draft breaks the rules, it gets another try.
Architecture:
- Base Camp is a FastAPI server on my laptop with Ollama, SQLite, and the rule checker.
- The phone app is a plain HTML/JS PWA you can add to your home screen. Phone browsers only allow the camera and GPS over HTTPS, so Base Camp is reached through a Cloudflare tunnel.
- It works without signal on the trail. The quest is saved on the phone before you leave, and photos are stored on the phone with their time and GPS, then sync and get checked when you're back online.
There are 106 automated tests, and none of them touch real data or real API keys.
I built it with Claude Code as my coding assistant. I kept a BUILD_LOG.md the whole time, which is where the "What went wrong" section below comes from.
Taking it outside: real testers
I sent the link to two people: my friend Veda, who lives in Hyderabad, India, and my dad. I asked both the same four questions.
Veda walked for 26 minutes and spent 382 seconds on screen, so for about three quarters of her walk the phone was away.
"Instead of simply monitoring my steps, I think this is a fun way to relax and get some steps in for the day."
She'd use it again ("yep definitely") and rated it 8/10. She wanted more swaps and faster replies.
My dad said it got him out of the house that day too, and rated it 6/10. His honest feedback: quests take too long to appear, he'd use it more if there were rewards like points or coins, and it doesn't know anything about him, so every walker gets the same kind of quest.

And me. I tapped "Find me a walk," and it sent me to Lions Lake near my apartment for a sunset stroll. The sunset was beautiful. I found exactly what the quest asked for, took my photos along the way, and snuck in a few selfies too.
The part that surprised me: I didn't check my phone once in between. I knew the app was counting my screen time, and that was enough to keep it in my pocket. For once a walk wasn't about steps or a number. It was a reason to go outside, look around a little more carefully, and just notice nature for a while. That's exactly what I wanted it to feel like.
What went wrong (and what I changed)
Real testing broke things that 100 tests didn't.
1. Gemma asked my friend in Hyderabad to find a red leaf.
My season logic was "October + northern hemisphere = fall." That's true in Missouri. In Hyderabad, October is just after the monsoon: green, warm, and full of flowers. She swapped the red leaf and got... an acorn. Now, anywhere between the tropics gets local seasons (summer, monsoon, post-monsoon, winter), with examples like hibiscus, bougainvillea, neem leaves, crows, and mynas.
2. One photo was checked by Gemma nine times at once, and it crashed my laptop.
The phone retries "pending" photos every time it syncs. A photo that was still being checked counted as pending, so every sync started another parallel check. On a laptop with 16 GB of RAM and a 4.4 GB model loaded, free memory dropped to 0.4 GB and the server was killed. Now a photo that's already being checked is never checked again.
3. Gallery photos arrived with no time or location at all.
My dad checked his settings and location was on. It wasn't his phone: phones strip location from photos picked for a website, for privacy. The app labeled these honestly as "time/place not confirmed," but never said why, so one tester re-picked the same task five times. That's most of her 382 seconds on screen. Now the app explains it and points you to "Take photo."

4. Repeated taps stacked up quests.
Writing a quest takes about a minute on my laptop. Testers tapped again while waiting, and each tap queued another quest behind the first, so replies grew from 30 seconds to almost 2 minutes. Now extra taps are ignored and the loading screen says "about 1 minute."
5. The free tunnel link changed in the middle of a walk.
The quick Cloudflare tunnel gives a random link that only lives as long as the tunnel does. When it restarted, the link changed, and photos taken offline were stranded on testers' phones, tied to a link that no longer existed. They aren't lost, but they can't sync. The fix is a permanent tunnel, and it's the first thing on my list.
Why Does Open Innovation Matter?
Look at what this app collects: photos of where you walk, the exact time and GPS of each one, the route near your home, and a note about how you felt. That's a map of someone's daily life.
1. Your photos and location never leave the laptop. Gemma checks every photo on my own machine. There's no "we don't train on your data" promise to trust, because the data physically never goes to an AI company. With a closed vision API, checking a photo means uploading it.
2. It costs nothing per photo. A walk can take ten photo checks and two swaps. Nobody has to wonder whether a retake is "worth" an API call.
3. I could see inside it and fix it. When Gemma's thinking mode broke my JSON, I turned it off. When replies were slow after idle time, I could see it was the model reloading into memory and keep it loaded. A hosted API would just have been slow or broken with no explanation.
4. I can swap models. Today it's gemma4:e4b because that's what fits on my laptop. With a better GPU it's one setting to use a bigger model.
What goes off the laptop, honestly: place searches to SerpApi (like "parks near Warrensburg") and nothing else. Quest photos, GPS, journal notes, and moods stay on my machine.
The trade-off is speed. Running a vision model on a normal student laptop is slow: about a minute to write a quest and 10 to 30 seconds per photo check. Both testers noticed. I think it's the right trade for an app whose whole job is to be on your screen as little as possible.
Honest limits: Gemma can tell "this is a lake," not "this is that lake" (the GPS check covers that), and it only measures time spent in Walk Journal, not your whole phone.
What's next
A permanent link so offline photos always sync, faster quests, rewards like coins (my dad is right that points aren't enough), personalization by fitness level, and more swaps, as Veda asked.
Prize Categories
-
Best Use of Gemma: Gemma 4 (
gemma4:e4b) runs locally through Ollama and does all the AI work: writing seasonal, place-aware quests, ranking nearby walks, writing swap tasks, checking every photo with vision, and reading fitness-tracker screenshots. - Best Use of SerpApi: SerpApi's Google Maps search finds real parks and trails near the walker, so Gemma only ever builds quests around places that actually exist.
Thanks for reading. Go outside for ten minutes. Find a leaf.

Top comments (0)