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

What I Built

When this week's theme said get people off the screen, I knew who it was for: my Nana, my maternal grandfather.

Nana's doctor has advised him to walk at least 30 minutes a day. He is not frail. He cycles a few kilometres and walks to the market. But these days his evenings go to reels and serials on his phone. Nothing is wrong with his legs. What's missing is a reason to get up at five o'clock.

Chalo Nana (चलो नाना, "Let's go, Nana") gives him that reason, once a day, in a voice he likes:

  1. Someone in the family spends 30 seconds tapping how he is today: घुटने में दर्द है (knee pain), धूप तेज़ है (strong sun), आज बाज़ार हो आए हैं (already went to the market), and where he wants to go.
  2. A local Gemma model reads that Hindi, plain code decides how much walking is safe today and picks a loop through the places he likes, and Gemma writes it the way a granddaughter would say it.
  3. ElevenLabs turns it into a short Hindi voice note. Nana presses one big button on his phone, listens once, puts the phone in his pocket and goes.

The screen is the shortest part. Nana's whole interface is this:

Nana's page: one big button that says

Demo

90 seconds: the family page, the Hindi plan in the voice Nana hears (real place names removed), and the first walk.

The first real walk

On 11 October, the first evening of Navratri, the plan said: walk to the stadium, sit on its stairs for five minutes, go see the Durga Puja pandal next to it, come back past the stadium, home. My brother went with him.

  • Out at 6:01 PM, back at 7:10 PM. About 2 km by the map.
  • He heard the plan once and remembered it. My brother didn't have to lead.
  • The phone stayed in his pocket the whole walk.
  • He sat twice, both times at the stadium: five minutes as planned, and on the way back fifteen more, chatting with the children who are home from the city for the holidays.
  • He came back tired, because he had already walked to the haat that afternoon.

What he said afterwards, in my words: he loved this year's pandal, "it looks like a real temple". He was happy because he met so many people and greeted them. And he was surprised that at the stadium, and even on the road, everyone was staring at their phones instead of looking at the evening and at each other.

That last line is the whole theme of this challenge, from a man whose evenings usually go to reels.

The Durga Puja pandal beside the stadium, lit up at dusk, shaped like a temple
The pandal he loved: "it looks like a real temple".

Nana in the middle of a group selfie with five young people at the stadium, the pandal glowing behind them
The fifteen extra minutes: a selfie the children took with Nana at the stadium, the pandal behind them.

Both pictures are our own photos from the walk, cartoonized with AI so that nobody's real face or exact place ends up online.

The family page

Step 1 is grouped pills, plus a box for anything else. The places come from his own map:

Step 1: how is Nana today, with grouped pills

Step 2 is the walk: the reason, the limits, the route, and the Hindi plan to listen to and send:

Step 2: today's walk with route timeline and the spoken Hindi plan

Screenshots use a made-up example village that ships with the repo. Nana's real map never leaves the laptop.

Code

GitHub logo Rahullkumr / chalo-nana

Hacktoberfest Week 1 DEV Challenge - Touch Grass

Hacktoberfest 2026 Open-Source AI Challenge Week 1: Touch Grass

Chalo Nana · चलो नाना

A daily walk for my grandfather: planned on a laptop, spoken to him once in Hindi, and then the phone goes in his pocket.

My Nana's doctor has advised him to walk at least 30 minutes a day. His legs are fine. What he lacks is a reason to put the reels down at five in the evening.

Chalo Nana ("Let's go, Nana") gives him one. Every day a family member spends 30 seconds tapping how he is. A local Gemma model and some plain code turn that into a walk sized for him, through the places he likes, opening with what's happening there today. He hears it once, in a warm Hindi voice, and goes.

Built for DEV's Hacktoberfest Open-Source AI Challenge, Week 1: Touch Grass.

Family page: 30 seconds a day Nana's page: one button
Step 1: how is Nana today, as grouped pills Nana's page: one big button, "listen to today's walk"

Step 2: today's walk, with the limits, the route and the Hindi plan

Screenshots use the made-up example village in …

Node 22, Fastify, plain HTML/CSS/JS with no build step, Ollama, ElevenLabs. One runtime dependency.

How I Built It

Plan A: OpenStreetMap. It knew one road, and it was the wrong one

My plan was to download his neighbourhood from OpenStreetMap once, build a graph of walkable streets, and search it for a loop. I wrote the downloader and pointed it at his village.

It came back with ten road segments. Nine were the highway, the one road I never want Nana walking along. The rest was one other road and fourteen ponds. No lanes, no temple, no stadium.

Villages don't give directions by street name anyway. People say "mandir se dam paanch minute". So the family made the map that way: places, and the minutes between them at his pace. We timed it on a real walk that morning. Each place says whether he can sit there and on what (the temple bench, a rock by the dam, the stadium stairs), and when it's lively: the haat on Thursday and Sunday, the stadium in the evening, the pandal for Navratri. Any link that goes along the highway is marked, and the planner never uses it.

The timings also gave his real pace: the dam is 1.5 km away and takes him 35 minutes, so 0.71 m/s.

So the app doesn't use OpenStreetMap at all. The map it plans on is the family's own file. For his village, the gap in OSM is now on my list to fix the right way: by adding his lanes to it.

Gemma understands, code decides

My first version let Gemma choose the minutes. I told it "knee pain, strong sun, walked too much yesterday". It kept the full 40 minutes, turned shade off and wrote "आज आप ठीक लग रहे हैं" ("you seem fine today").

So I split the job. Gemma now only reads the Hindi and fills a JSON schema: knee none | mild | strong, breathless, tired, already walked today, sun, rain, anything serious, places he wants. Fixed rules in code turn that into minutes, rests and whether uphill is allowed, clamped to the limits the family set. The same test line then came out right: knee pain plus sun gave 31 minutes, slow, no uphill, shade.

The planner is ordinary code. It enumerates every loop from home back to home over the place map, scores each one for fitting today's minutes, a seat every N minutes, places he likes, places that are lively right now, and places the family asked for. Then it picks the best. If nothing fits, it says so and offers a short walk to the nearest bench.

What the first walk broke, and what I changed

  • The app said 30 minutes. Nana said pandal. He had already done the haat that afternoon, so the rules cut his walk to 30 minutes. That rules out the pandal, which is about 44 minutes there and back. He wanted to go anyway. The family can edit the minutes, so we set 45 and he went. Then I found a real bug: even with the pandal asked for, the planner preferred a shorter walk. A place the family asks for today now scores far above a few extra minutes.
  • Gemma confused "went" with "wants to go". "दोपहर में हाट गए थे" ("went to the haat this afternoon") came back as wants: market, and an 80-minute round trip, uphill one way, came back as a "mild" outing. Two prompt lines fixed it.
  • The stadium is 22 minutes, not 20. Updated in his map.
  • A chat is not a walk. He was out 69 minutes, but 20 of those were sitting on the stadium stairs. Tomorrow's "he came back tired, go shorter" rule now counts only walking minutes, so it plans about 42 minutes of walking, not 59.
  • His phone counted 1,957 steps. For about 2 km, that would mean a metre per step, which is not my grandfather. Phone pedometers undercount slow walkers. So the post uses the distance from the map, and the log keeps both numbers.
  • "A local voice would be more comfortable." He liked the voice, but it was George, a British voice speaking Hindi. I switched to a young woman's Indian-accent Hindi voice from the ElevenLabs library. That's one line in .env, plus one in his profile, because Hindi verbs follow the speaker's gender. In that voice, "मैं आपको बताता हूँ" (masculine "let me tell you") sounds wrong, so Gemma now writes as a granddaughter: "बताती हूँ". It also speaks to him ("आप चलिए", "you walk") instead of "हम चलेंगे" ("we'll walk"), because nobody from the phone is walking with him.
  • He doesn't need to be told how to walk. This was the honest one. He needs a reason, and he needs people. So the plan now opens with what's happening at the places on today's route: "नवरात्रि शुरू हो गई है और दुर्गा पूजा पंडाल सज गया है" ("Navratri has begun and the Durga Puja pandal is ready"), or "आज हाट का दिन है, जान-पहचान वाले सब मिलेंगे" ("it's haat day, you'll meet everyone you know"). Only then does it give the minutes.

Architecture

Architecture: everything runs on the laptop (family page, Fastify server, Gemma in Ollama, place check, planner, data folder). Nana's phone gets today.mp3 over Wi-Fi. Only the plan text goes out, to ElevenLabs.

How I used Gemma

  • Model: gemma4:e4b in Ollama, on an i7 laptop with no GPU. It's 6.6 GB on disk.
  • Two jobs, both with a JSON-schema format:
    1. Read the family's Hindi or Hinglish into signals (about 9 seconds).
    2. Write the plan as a warm, spoken, Devanagari-only Hindi paragraph from structured steps (about 25 seconds).
  • It never picks a number and never picks a place. The code does both, and then checks Gemma's paragraph against the route. If it mentions a temple, a tree or a shop that isn't on today's route, the paragraph is thrown away: one retry, then a plainer plan written by code. In testing it caught invented places on purpose-made bad text and passed every real plan.
  • What it does well: it understands "कल ज़्यादा चल लिए थे" ("walked too much yesterday") and "saans thodi phool rahi hai" (Hinglish for "a bit short of breath") equally well. And it writes Hindi that sounds like family, not like a government form.

How I used ElevenLabs

  • Only the plan text goes to ElevenLabs: no coordinates, no place map, no walk log.
  • It's made once per day with eleven_multilingual_v2 at speed 0.9 and saved on the laptop. Nana can replay it as often as he likes for no extra credits, and it still plays if the internet drops.
  • The accent is Nana's choice. After the first walk he asked for a more local voice, so it's now a young woman's Indian-accent Hindi voice from the ElevenLabs library, a granddaughter talking to him. Swapping it is one line in .env.
  • If ElevenLabs can't be reached, the phone's own Hindi voice reads the same text.

The voice matters more than anything on the screen. It's what turns "an app" into someone telling him to go, and Nana listens to voices, not screens.

Why Does Open Innovation Matter?

  • His life stays home. His map, his profile and his walk log never leave my laptop, and the model runs there too. No location is sent anywhere: the map is a file the family wrote, not a GPS track.
  • The map is open, so I can fix it. OSM didn't know his lanes. With a closed map I would just wait. With OSM I can add them, and the next family in his village gets them too.
  • The model is swappable. One line, OLLAMA_MODEL, changes it. The obvious next step: Gemma is open-weight, so it can be fine-tuned on Nagpuri, the dialect of his area, using sentences Nana himself dictates. With a closed model, his dialect would have to wait until a company decided it mattered.
  • It costs almost nothing to run every day. Gemma on a laptop is free. The only paid part is ElevenLabs, for one short voice note a day.
  • It's for any Nana. There's no account and no server. Another family copies two JSON files, their places and their elder's limits, and it's theirs. Lots of Indian homes have an elder whose doctor said "walk 30 minutes a day", a family that's busy, and a phone full of reels. This is for them.

My Agent Session

The whole build, from the first question to the last bug, with Claude Code as my pair. It's curated: off-topic turns are removed, and real place names and personal details are replaced. You can see the moments the plan changed: OSM coming back empty, Gemma choosing the wrong minutes, and the walk numbers coming in.

Chalo Nana: building a Hindi walk planner for my grandfather with Gemma and ElevenLabs
You

Prompt: build "Nana's walk" for DEV Hacktoberfest Week 1 (Touch Grass)

Paste everything below the line into a fresh Claude Code session started in ~\Desktop\Hacktober Fest\.

You are helping me (Rahul) build and submit an entry for DEV's Hacktoberfest Open-Source AI Challenge, Week 1: Touch Grass. First read my notes from earlier sessions in ~\.claude\projects\[project]\memory\ (start with MEMORY.md). They hold my earlier entry, my hardware, my working rules and a scan of the competition. That folder belongs to a different working directory, so read it explicitly.

Deadline (hard)

Submissions close Oct 11, 11:59 PM PDT = Oct 12, 06:59 UTC = Oct 12, 12:29 IST. Today is Oct 11. Budget time so the post is published by ~11:30 IST on Oct 12, leaving a buffer. If something blows the time box, cut scope and don't push the deadline.

The challenge, in short

  • Theme: build something with open-source AI at its core that gets people off the screen and into the world. "The best builds make the screen the shortest part of the experience." Bonus points for taking it outside, using it, and saying how it went.
  • The post must explain why open matters for this build: privacy, offline, cost, the ability to change the model.
  • Judging: writing quality weighted most, then relevance to theme, creativity, technical execution, and use of partner tech.
  • Must be a new project built during the challenge window, published on DEV with the challenge's submission template and the tag #hf26challenge. One entry per person; you can win only once per challenge.
  • Target prize categories: Best Use of Gemma (featured, $200) and Best Use of ElevenLabs ($100). Only about 2 of ~590 entries mention ElevenLabs.
  • Optional but valued: a DevRelay agent session embedded in the post.

The idea: Nana's walk, voice-first

My Nana (maternal grandfather, mostly speaks Hindi) is the person from my last entry, Padh Ke Batao, which won Best Use of ElevenLabs in the Build for a Friend challenge. He loved its Hindi voice. This entry continues that story: get Nana outside for a gentle daily walk that is sized for him.

How it should work:

  1. Map of his neighbourhood from OpenStreetMap (required, don't skip). Download the area around his home once, through the Overpass API. Get walkable ways (footway, residential, living_street, path, pedestrian, service) plus useful places: amenity=bench, amenity=place_of_worship (temples), leisure=park, amenity=drinking_water, amenity=shelter, natural=tree, and shops or tea stalls if mapped. Mark busy roads (primary, trunk, secondary) as things to avoid. Cache it to a local file so daily planning runs offline and his location isn't sent out every day.
  2. Expect gaps in OSM data. Benches are often missing in Indian neighbourhoods. Let the family add their own rest spots ("the temple steps", "Sharma ji's chabutra") to a local file, layered on top of the OSM data. In the post, mention that the missing benches could be contributed back to OSM. That fits the open-source spirit.
  3. How he feels today. A family member taps a few chips or types or speaks a line in Hindi ("ghutne mein dard hai", "aaj achha lag raha hai", "dhoop tez hai"). Gemma (open-weight, via Ollama, local) turns that into walk settings using a JSON schema: max minutes, a rest every N minutes, avoid slopes or busy roads, places he would enjoy (the temple).
  4. Route planning in code, not by the model. Build a graph from the OSM ways and find a loop from home and back to home that fits the settings. Prefer quiet streets, put a rest spot every few minutes, and include places he likes. Use Dijkstra, A*, or a simple candidate-loop search with scoring. Use an elderly walking speed (configurable, roughly 0.6–0.9 m/s). Never send him on a busy main road. If no good loop exists, say so honestly and give a shorter fallback.
  5. Gemma writes the spoken plan. It gets the route as structured steps (turns, landmarks, rest stops, minutes). It writes it the way a grandson would say it, in simple Hindi, Devanagari only, using landmarks instead of street names: "Ghar se nikal kar baayein mudiye, mandir tak chaliye, wahan seedhiyon par 5 minute baithiye…" It must not invent places that are not in the route data.
  6. ElevenLabs reads it aloud in the Hindi voice he liked (George JBFqnCBsd6RMkjVDRZzb, eleven_multilingual_v2, speed 0.9). Send only the plan text, never coordinates. Fall back to a local OS voice. Nana listens once and walks with the phone in his pocket.
  7. After the walk: honest numbers. Record the distance, the minutes, the rests taken, and how he felt afterwards. Gemma adjusts tomorrow's plan from this. These real numbers go in the post title, e.g. "Nana walked 1.2 km, rested 3 times, phone stayed in his pocket". Never invent them. Use only what actually happened on a real walk.

The screen is for the family, for about 30 seconds. Nana gets one big button and a voice. A map view for the family is fine, e.g. Leaflet from cdnjs; note that it loads OSM tiles online. Nana's flow must not need it.

Stack and reuse

  • Reuse patterns and code from my last project at ~\Desktop\Hacktober Fest\build-for-a-friend. Copy files; don't import across projects. It has the Fastify server layout (src/server.js, src/config.js, src/routes/*, src/services/ollama.js, src/services/elevenlabs.js), a plain HTML/CSS/JS page with ES modules, Hindi/English i18n, dark mode, a local speech fallback, NDJSON streaming, and an .env with ELEVENLABS_API_KEY. Copy the key into the new project's gitignored .env.
  • Model: Gemma, for the Gemma category. Run ollama list first and use what is installed, or pull gemma4:e4b (or e2b if it's too slow). It's text-only here, so it should be fast on CPU. Check whether it needs think: false. Use a JSON-schema format for structured output.
  • New project folder: ~\Desktop\Hacktober Fest\<name>. Suggest 2–3 short Hindi names (e.g. "Nana Ki Sair", "Chalo Nana", "Sair") and let me pick.
  • No React and no build step. Node 22, Fastify 5, plain JS. Keep dependencies minimal.

My machine and gotchas

  • Windows 11, i7-13700H, 16 GB RAM, Intel Iris Xe, no NVIDIA GPU. Ollama runs natively, not in Docker.
  • Call Ollama at http://[REDACTED]:11434, not localhost: Node 22 tries IPv6 first.
  • Stopping a background npm start on Windows leaves the node child holding the port. Run node src/server.js directly.
  • Phone testing: the phone can open the laptop page over Wi-Fi (http://192.168.x.x:3000), but browsers block geolocation on non-HTTPS pages other than localhost. Plan around it: log the walk manually, or find another honest way to measure distance. Decide this early.
  • Headless browser screenshots: use Chrome with a fresh --user-data-dir for each run.

Privacy rules (part of the story, and also a real safety issue)

  • Nana's home location is sensitive. Never commit his home coordinates or the cached area file. Gitignore them. Screenshots and the demo must not show his real address; blur them, or use an offset demo area.
  • Only plan text goes to ElevenLabs. The OSM download happens once. Planning runs locally.

Working rules

  • I do all git work (commit, push, branch, reset). You only edit files. Read-only git is fine.
  • Ask me before installing global tools or pulling large models.
  • Show a short plan with time boxes before building, then build step by step and show me each working step.
  • Keep my memory files updated with decisions and progress.

Competition notes (from a scan of ~590 Week 1 entries)

  • Crowded: quests and games (~100), plants and gardens (~48), birds (~33), generic "TouchGrass AI" companions.
  • No entry targets elderly people. "Chhaya" is a shade-first walking map for tropical cities. It's the closest, but it isn't sized to a person and isn't voice-first. Don't mention competitors in the post.
  • Standouts have honest numbers in the title and one specific person. Last round's winners followed the same pattern.

Post (DEV) plan

  • Use the official Week 1 submission template from the challenge page. Tags: devchallenge, hf26challenge, plus up to 2 relevant ones (e.g. ai, opensource).
  • Story: Nana → Padh Ke Batao won → now get him outside → the real walk with real numbers → what broke and what I changed → why open matters (his location never leaves the laptop, the map is open and fixable, no cost, the model is swappable).
  • Include: a demo video (I'll record it), screenshots, an architecture sketch, a "How I used Gemma" section and a "How I used ElevenLabs" section, the repo link, and a DevRelay session embed.
  • AI disclosure: some_ai. When updating a post, use update_article with the full body. Never use a raw PUT: it reset the AI disclosure last time. If the DevRelay API is down, give me paste-ready text for the DEV editor instead.

First thing to do

Ask me these, then propose the time-boxed plan:

  1. Roughly which area or town is Nana in? You need it for the OSM download; don't save the exact address.
  2. How far or how long can he walk now, how often does he need to sit, and does he have knee or breathing issues?
  3. Places he likes or already walks to (temple, park, tea stall, a friend's house)?
  4. Can he do a real test walk today or tomorrow before ~10:30 IST, and who goes with him?
  5. Your pick of the project name.

explain me first.

Show more
Agent
▸ Bash # List project and parent folders ls -la "~/Desktop/Hacktober Fest/touch-gras...
$ # List project and parent folders ls -la "~/Desktop/Hacktober Fest/touch-grass" "~/Desktop/Hacktober Fest"
~/Desktop/Hacktober Fest: total 28 drwxr-xr-x 1 rahul 197609 0 Oct 9 02:45 . drwxr-xr-x 1 rahul 197609 0 Oct 10 18:47 .. drwxr-xr-x 1 rahul 197609 0 Oct 11 12:26 build-for-a-friend -rw-r--r-- 1 rahul 197609 1944 Oct 9 03:03 hacktoberfest-offers.md drwxr-xr-x 1 rahul 197609 0 Oct 7 02:21 touch-grass ~/Desktop/Hacktober Fest/touch-grass: total 20 drwxr-xr-x 1 rahul 197609 0 Oct 7 02:21 . drwxr-xr-x 1 rahul 197609 0 Oct 9 02:45 .. drwxr-xr-x 1 rahul 197609 0 Oct 7 02:22 .git -rw-r--r-- 1 rahul 197609 1089 Oct 7 01:11 LICENSE -rw-r--r-- 1 rahul 197609 2459 Oct 7 01:48 README.md drwxr-xr-x 1 rahul 197609 0 Oct 7 01:48 docs

Nothing built or downloaded yet. I only read your memory index and listed the folders.

What the prompt asks for

Goal: an entry for DEV Hacktoberfest Week 1 ("Touch Grass"), aimed at Best Use of Gemma ($200) and Best Use of ElevenLabs ($100). It continues the story of Padh Ke Batao, your last entry, which won the ElevenLabs category. Same Nana, new goal: a gentle daily walk sized for him.

Deadline: the post goes live by about 11:30 IST on Oct 12. Submissions close at 12:29 IST. If something runs over its time box, we cut scope instead of pushing the deadline.

How it works, step by step

  1. Map, once. Download the walkable streets around Nana's home from OpenStreetMap, plus benches, temples, parks, water, shade and tea stalls. Mark main roads as off-limits and save it all to a local file. Planning after that runs offline, so his location isn't sent out every day.
  2. Your own rest spots. OSM often misses benches in Indian neighbourhoods. The family adds spots like "mandir ki seedhiyan" or "Sharma ji ka chabutra" to a local file that sits on top of the OSM data.
  3. How he feels today. Family taps a chip or types or speaks a Hindi line ("ghutne mein dard hai"). Gemma, running locally in Ollama, turns it into walk settings as JSON: max minutes, a rest every N minutes, what to avoid, places he'd like.
  4. Route in code, not by the AI. Build a graph from the streets and search for a loop from home back to home. It uses quiet streets, puts a rest every few minutes, includes his favourite places, and assumes a slow walking speed (about 0.6–0.9 m/s). If no good loop exists, it says so and offers a shorter one.
  5. Gemma writes the spoken plan in simple Devanagari Hindi, the way a grandson would say it, using landmarks. It may only mention places that are in the route data, never invented ones.
  6. ElevenLabs reads it aloud in the same George voice he liked last time. Only the plan text goes out, never coordinates. If ElevenLabs fails, the computer's own voice reads it. Nana listens once, phone goes in his pocket, he walks.
  7. After the walk: log the real distance, minutes, rests and how he felt. Tomorrow's plan adjusts from that. Those real numbers go in the post title, and we never make them up.

The screen is for the family, about 30 seconds a day. Nana gets one big button and a voice.

Rules I follow

  • Privacy: his home coordinates and the cached map file stay out of git. Screenshots use a shifted demo area or a blur.
  • Git: you do all commits and pushes. I only edit files.
  • Ask first: before any global install or large model pull.
  • Reuse: I copy the Fastify, Ollama, ElevenLabs and i18n code from build-for-a-friend instead of starting from zero.
  • Measuring the walk: phone browsers block location on a plain-HTTP page from the laptop. So we either log the walk by hand, or count steps with the phone's own step counter (pedometer) and enter the number afterwards. That's decided early.

Two things I noticed

  • The touch-grass folder already exists as a git repo (README, banner, LICENSE, Oct 7). The prompt says to make a new folder named after the project. My suggestion: build inside touch-grass so the existing repo and commits stay, and just change the name inside the README. Your call.
  • Your memory notes list a fallback idea of building for your father (an electrician who makes reels). This prompt drops that and goes with Nana's walk, so I'm assuming Nana is final.

Questions before I write the time-boxed plan

  1. Area: roughly which town or locality is Nana in? A neighbourhood name is enough. I won't save an exact address.
  2. His limits: how far or how long can he walk now, how often does he need to sit, and does he have knee or breathing problems?
  3. Places he likes: temple, park, tea stall, a friend's house?
  4. Test walk: can he do a real walk today or tomorrow before about 10:30 IST, and who goes with him? Can that person run a step-counter app on their phone?
  5. Name: "Chalo Nana", "Nana Ki Sair", "Sair", or your own? And build inside the touch-grass folder or a new one?

Once you answer, I'll send the plan with time boxes.

Show more
You

The touch-grass folder already exists as a git repo (README, banner, LICENSE, Oct 7). The prompt says to make a new folder named after the project. My suggestion: build inside touch-grass so the existing repo and commits stay, and just change the name inside the README. Your call.
==> yes don't create new one.
Your memory notes list a fallback idea of building for your father (an electrician who makes reels). This prompt drops that and goes with Nana's walk, so I'm assuming Nana is final. ===> yes nana is final

  1. a district in Jharkhand
  2. he is not too old, he can ride bicycle till 2-3 km and can walk around 2 km but with little rest.
  3. temple, park, tea stall, dam near by our house ~1km, open stadium where people play every evening, local markets happens 2 days per week.
  4. yes he can and I can go with him to count the steps and he also have android mobule he himself can count steps
  5. Chalo Nana

how can we make this for not a specific person, there are so many old age people - other people's nana. just thinking, waht you say?

Show more
Agent
▸ Bash # Show IST time, installed Ollama models, Node version TZ=Asia/Kolkata date; ...
$ # Show IST time, installed Ollama models, Node version TZ=Asia/Kolkata date; ollama list 2>&1 | head -20; node -v
Sun Oct 11 07:21:02 GMT 2026 NAME ID SIZE MODIFIED qwen3.5:4b 2a654d98e6fb 3.4 GB 6 days ago v22.12.0
▸ Bash # Check local and UTC time date; date -u; powershell -NoProfile -Command "Get...
$ # Check local and UTC time date; date -u; powershell -NoProfile -Command "Get-Date -Format 'yyyy-MM-dd HH:mm zzz'"
Sun Oct 11 12:51:11 IST 2026 Sun Oct 11 07:21:11 UTC 2026 2026-10-11 12:51 +05:30

Decisions saved to memory: build inside touch-grass, name Chalo Nana, Nana is final, district.

Making it work for other people's Nana

Good instinct. My take: make the app work for anyone's Nana, but keep the post about your Nana. Judges score writing highest, and the posts that win follow one real person with real numbers. A post about "elderly people in general" reads like a pitch deck. "Nana walked to the dam and back" makes people want it for their own grandparents.

So we build it general from the start, at almost no extra cost:

  • Any town. Home location and radius live in a setup file. The map download works anywhere OSM has data.
  • Walker profile file. Name (Nana, Dadi, Amma), walking speed, max distance, how often to rest, knee or breathing notes, favourite places. Change the file and it's someone else's walk.
  • Family places file. Rest spots OSM is missing, plus schedules: "haat Wednesday and Saturday", "stadium busy in the evening". The plan can then say "aaj haat hai, wahan se hokar aaiye".
  • No accounts and no server. Each family runs it on their own laptop. Privacy holds no matter how many families use it.
  • Bonus: screenshots for the post use a different public town. That also shows it works anywhere, and Nana's real home never appears.

The post ends with a short section, "Make it for your Nana", with 3 setup steps.

Out of scope: multiple users, login, social features. Not enough time, and they add nothing for judges.

Your answers mean

  • Nana is fitter than I assumed. A ~2 km loop to the dam and back (~1 km each way) is a natural first route: about 40 min at 0.8 m/s, with 2–3 rests.
  • His Android step counter plus you counting gives real distance as steps × stride length. Honest, and no geolocation needed.
  • Two real walks would make a strong story: walk 1 this evening (stadium time), fix what breaks, walk 2 tomorrow morning with the adjusted plan. "What broke and what I changed" comes from real use.

Time-boxed plan (IST; it's 12:51 now)

When What
13:00–13:45 Skeleton copied from build-for-a-friend, .env, .gitignore, Gemma download, OSM download script
13:45–15:45 Map cache, street graph, loop planner (core). Show the loop on a Leaflet map
15:45–16:45 Gemma: feelings to settings (JSON schema); route to Hindi plan, with a check that it doesn't invent places
16:45–17:30 ElevenLabs plus local voice fallback; Nana's big-button page; family page
~17:30–18:30 Walk 1 with the real plan. Log steps, minutes, rests, how he felt
19:00–22:00 Fixes from walk 1, after-walk log, tomorrow's adjustment, architecture sketch
22:00–00:00 Post draft, screenshots from the demo town, DevRelay session
Oct 12, 06:30–07:30 Walk 2 (adjusted plan)
08:00–11:00 Real numbers into the title; you record the video; final edits
11:30 Publish (hard close 12:29)

What gets cut if we fall behind, in this order: voice input (keep chips and text), the map view, then walk 2. The planner, Gemma, ElevenLabs and walk 1 stay.

Three things before I start

  1. Gemma isn't installed. Ollama only has qwen3.5:4b. OK to pull gemma4:e4b? It's several GB, and e2b is smaller if download or CPU speed is a problem.
  2. Home pin: in Google Maps, long-press the house, copy the coordinates, and paste them into .env yourself (I'll create .env.example with HOME_LAT/HOME_LON). That way the coordinates never appear in this chat, git or memory. Or give me a nearby public landmark as the centre and I'll use that.
  3. Walk timing: is this evening plus tomorrow morning realistic for Nana?

Answer these and I start the skeleton.

Show more
You
  1. yes pull gemma4: e4b. i don't know it's size in GB.
  2. coardinates ready
  3. yes 5 pm walk is fine
Agent
▸ Bash # Pull Gemma 4 e4b model in background ollama pull gemma4:e4b 2>&1 | tail -5
$ # Pull Gemma 4 e4b model in background ollama pull gemma4:e4b 2>&1 | tail -5
Command running in background with ID: bn49d8vrz. Output is being written to: [scratchpad] You will be notified when it completes. To check interim output, use Read on that file path.
▸ Bash # List old project files, package.json, gitignore, env keys cd "~/Desktop/Hac...
$ # List old project files, package.json, gitignore, env keys cd "~/Desktop/Hacktober Fest/build-for-a-friend" && git ls-files | grep -v "^docs/" | head -80 && cat package.json && cat .gitignore && sed 's/=.*/=<redacted>/' .env
.env.example .gitignore LICENSE README.md package-lock.json package.json public/css/styles.css public/index.html public/js/app.js public/js/i18n.js public/js/speech.js scripts/time-letter.js src/config.js src/prompts/explain-document.js src/routes/explain.js src/routes/pages.js src/routes/speak.js src/server.js src/services/elevenlabs.js src/services/ollama.js { "name": "padh-ke-batao", "version": "1.0.0", "description": "Photo of a document in, plain Hindi or English explanation out, run by a local open-source vision model. Built for my grandfather.", "main": "src/server.js", "scripts": { "start": "node --env-file-if-exists=.env src/server.js", "time": "node scripts/time-letter.js" }, "keywords": [ "ollama", "qwen", "local-ai", "accessibility", "hindi", "hacktoberfest" ], "author": "Rahul Kumar", "license": "MIT", "type": "module", "dependencies": { "fastify": "^5.12.5" }, "private": true, "engines": { "node": ">=22.9" } } # Secrets .env .env.* !.env.example # Dependencies node_modules/ .agents/ # Private test photos samples/ # Agent tooling (installed skills, not app code) .claude/ skills-lock.json BACKBOARD_API_KEY=<redacted> # text-to-speech ELEVENLABS_API_KEY=<redacted> RENDER_API_KEY=<redacted> TINKER_API_KEY=<redacted> Shell cwd was reset to ~\Desktop\Hacktober Fest\touch-grass
<...
Source:https://dev.to/rahullkumr/chalo-nana-a-local-ai-that-sends-my-grandfather-to-people-not-just-steps-35pc

Related posts