This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
The problem I wanted to solve
My screen time is embarrassing, and I know I'm not alone. Every outdoor app I tried made it worse: you go outside to escape the screen, and then the app keeps you on the screen — scrolling maps, liking photos, reading reviews of the park you're already standing in.
Week 1's theme asks for builds where the screen is the shortest part of the experience. So I built the opposite of a nature app: an app whose entire job is to make you close the tab.
Live demo: https://nikankh.iceiy.com/touchgrass/
What I built
TouchGrass is a tiny web app that turns your free time into a real outdoor micro-adventure. You pick your city, how much time you have (15 minutes to 2 hours), a vibe (walk / run / chill / play / explore), and your crew (solo / friends / family / dog). Then an AI designs a structured mission for you: a title, concrete steps, things to spot on the way, a short packing list, and one surprise twist.
The flow is deliberately short:
- Generate my mission — or Surprise me for a fully random one.
- A mission card appears. Check off steps as you go.
- Tap "I did it — touched grass" → confetti, a streak counter, and the mission lands in your field log.
That's the whole session. The best mission is the one you never finish reading because you're already outside.
Why open-source AI is the heart of it
Every mission is generated live by GPT-OSS 20B — a fully open-weight model — reached straight from the browser through Pollinations' free anonymous tier. There is no backend, no API key, no account, no billing. The app is four static files (HTML + CSS + vanilla JS) that I host on plain shared hosting.
Why that matters for this project, concretely:
- It costs nothing to run. A closed AI API would turn every "Generate my mission" click into a line item on someone's bill. Open weights through a free tier mean the app can stay free forever — which is the whole point of a thing meant to get everyone outside.
- No one has to hand over data to use it. There's no signup, so there's no location history sitting on a stranger's server. You pick a city, the model replies, the browser forgets.
- The AI is swappable. Because the mission contract is just a strict JSON schema (title, steps, things to spot, packing list, twist), I can point the same app at any other open-weight model tomorrow — run it locally, self-host it, fine-tune it — without changing a line of UI.
Open innovation isn't a slogan here; it's what makes a no-budget, no-login, no-backend app possible at all. A closed model would have killed this project on day one.
How it works under the hood
The prompt engineers the model into a strict JSON mission shape — if the model ever returns anything sloppy, a parser validates it and a local fallback bank of hand-written missions keeps the app alive so the button never lies to you. Streaks and field logs live in localStorage, so your outdoor history is yours and only yours. One fetch call, no frameworks, no build step, 36 KB total.
Taking it outside
I built TouchGrass to get myself outside more — the mission cards and field log above are from testing the generator, and my first real field entry is next. The app is ready when I am.
Try it
- Live: https://nikankh.iceiy.com/touchgrass/
- Stack: HTML, CSS, vanilla JS, GPT-OSS 20B via Pollinations (open weights), localStorage
- Philosophy: the screen is the loading screen; the world is the app
Built for Hacktoberfest 2026, Week 1: Touch Grass.



Top comments (0)