DEV Community

Elev ๐Ÿ’ฅ
Elev ๐Ÿ’ฅ

Posted on AI-assisted

Touch Grass, Not Glass: a camera that only works outside

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

Every "go outside" app I've tried has the same problem. It's an app, so it wants you to look at it. There's a map, a feed, a streak, a little badge, and before you know it you're standing in a lovely park staring at your phone.

So I tried to build the opposite. Touch Grass, Not Glass is a camera that only works outside, and it won't show you anything until you get home.

It works a bit like a disposable film camera with a naturalist living inside it.

At home, you tell it where you're going (a park, a trail, your garden, the street, the river) and Gemma 3, running on my own laptop, writes you six small things to find. They fit the month and the time of day. On my first try it gave me "Find and photograph a single, fallen maple leaf displaying vibrant red hues" and "Locate and capture the texture of rough bark on an ancient oak tree."

Outside, the screen goes almost black. You see one quest at a time, it reads it out loud, and there's one button: "I found it". You take the photo and the next quest shows up. There's no preview and no feed, and no way to check if the photo "counted". You put the phone back in your pocket and keep walking.

Back home, you develop the roll. Gemma looks at each photo, writes down what it sees, decides whether you actually found the thing, and gives the frame a little specimen title and a two line field note. Each one gets stamped FOUND or NOT QUITE, and the whole walk turns into a page in your field journal.

The app keeps one number: how many minutes you spent with the screen off. No streaks, no leaderboard, no likes. The less you look at it, the better you did.

I made it for people who know they should get outside more but want a small reason to go, and a reason to look a bit closer once they're there. Kids on a walk, people who like to wander, and honestly, me.

The one rule I kept coming back to was that the app should get quieter the closer you get to going outside. The home screen is warm paper and serif type. Loading the film dims everything. Field mode is nearly black with a single sentence on it. You only get colour and photos back once you're home.

Demo

This is Sam, on day 47 of "just five more minutes". I made this short film to show the idea.

Live site: https://touch-grass-not-glass.vercel.app (it has the film, an FAQ and docs)

The camera itself: https://touch-grass-not-glass.vercel.app/app.html

You don't need to install anything to try it. Open the camera on your phone, take a short walk, and develop the roll when you're back. If your computer doesn't run Gemma, an online darkroom does the work with Gemma 4, the newest open Gemma, so you get your own quests and your own field notes in a few seconds. If you only have a minute, tap "See a real roll developed by Gemma" to open my walk from this morning and replay the darkroom.

The film is a cartoon, but the app in it is real. The screens on Sam's phone and laptop are screenshots of the actual app, and the quest on the phone and the laptop's "Frame four: a large, dark snail!" line are real Gemma output from my machine. I put the film together with open tools too. The 3D world is Three.js, the voices are Piper (an open source text to speech model that runs offline), and the music and sound effects are about 300 lines of Python.

One honest note: the polaroids use CC licensed sample photos from Wikimedia Commons, credited in the film and on the site. I was building this around midnight, and there wasn't any daylight left to go shoot my own.

Code

GitHub logo angelraph / touch-grass-not-glass

A camera that only works outside. Open-weight Gemma develops your roll locally. Hacktoberfest 2026 Touch Grass.

Touch Grass, Not Glass

A camera that only works outside.

You get six small things to find. The screen goes dark while you look for them. When you get home, an open model running on your own computer develops your photos into a little field journal.

Try it at https://touch-grass-not-glass.vercel.app or read the docs at https://touch-grass-not-glass.vercel.app/docs.html

I built this for the DEV Hacktoberfest 2026 Open-Source AI Challenge, week 1, Touch Grass.

How it works

At home you load the film. You pick where you're going, and Gemma 3 (running locally through Ollama) writes six quests that fit the month, the time of day and the place.

Outside, the screen goes nearly black. You see one quest at a time, it gets read out loud, and there's a single "I found it" button. No preview and no feed. It works with no signal at all.

Back home you developโ€ฆ

There are no npm dependencies. It's plain HTML, CSS and JavaScript, a service worker, IndexedDB, and a local Ollama server doing the AI part.

How I Built It

The model is Gemma 3 4B, running through Ollama on a laptop with no graphics card. Mine only has integrated Intel graphics, so Gemma runs on the CPU at about six tokens a second.

That speed was the first big problem, and it ended up shaping the whole idea. Developing one photo takes about two minutes on my machine (between 111 and 127 seconds in the sample roll). If the app checked every photo live, you'd be standing on the trail watching a loading spinner, which is exactly the kind of screen staring I wanted to get rid of. So I copied what film cameras did. You shoot now and develop later. Once I made that choice, the slow model wasn't a problem anymore. It was the reason the screen gets to stay dark. You come home, tap Develop, put the kettle on, and the roll comes in one frame at a time.

Two darkrooms

The darkroom can run in two places, and both use exactly the same prompts (they live in one small file that both sides import).

On my laptop it's Gemma 3 4B through Ollama. Everything stays on my own devices, and it takes about two minutes a photo.

For everyone else there's an online darkroom: a tiny serverless function on Vercel that sends the same prompts to Gemma hosted by Google. Google hosts Gemma 4 now, the 26B mixture of experts version with about 4B parameters active, so it writes quests in about four seconds and develops a photo in about eight. The API key stays on the server and the function stores nothing. The app always tries your own computer first, tells you which darkroom it's using, and you can switch the online one off in Settings.

Getting Gemma 4 to answer quickly took one trick. It thinks before it answers, and on my first tries it spent its whole budget thinking and never wrote the quests. Setting its thinking level to minimal brought quest writing from over two minutes down to four seconds.

Two prompts

There are two prompts, and both ask for structured output. Locally, Ollama's format field takes a JSON schema; online, the API is asked for JSON only. You pass a JSON schema in the format field and Gemma always answers with data the app can read.

The first one writes quests. It gets the month, the time of day and where you're going, and it has to return exactly six one sentence quests. I asked for things you can find in under ten minutes, that are safe, that leave nature alone, and that mix plants, animal signs, light and the season.

The second one is the darkroom. It gets one photo and the quest that went with it, and returns an observation, whether it matches, a confidence, a title, a field note and a species guess.

The order of those fields turned out to matter a lot. My first version asked for the verdict first. Gemma once told me a purple gradient wallpaper was "something natural with two colors", then explained in its own field note why it wasn't. When I moved the observation to the top, so the model has to describe the picture before it judges it, the answers got a lot more sensible.

A few smaller things make it work outside. A service worker caches the whole app, fonts included, so field mode opens with no signal at all. Photos get shrunk to 768 pixels on the phone and stored in IndexedDB, and nothing gets uploaded. If there's no model around when you load film, say you're already at the trailhead, the quests come from a small built in deck instead. And if you walk with your phone but develop on your laptop, you can export the roll as one file and import it on the laptop.

The "screen off" timer uses the Page Visibility API. It only counts the time the field screen was actually showing, and compares that with how long the walk took.

What Gemma Got Wrong

The sample roll on the landing page is Gemma's output exactly as it came out, and it got two things wrong.

One quest asked for a snail and my photo was of a slug. Gemma titled the frame "Black Slug on Stone", then described "a large, dark snail" anyway and stamped it FOUND. It also called a black Eurasian red squirrel an Eastern Gray Squirrel.

I could have kept tweaking the prompt until the demo looked perfect, but I'd rather show what it really does. A 4B model on a laptop isn't a field guide, and the app doesn't pretend it is. The journal always shows what the model saw, and the prompt asks it to say "uncertain" instead of making up a species. Because the model is open, I can also do something about it. I can switch to the 12B version with one setting, or fine tune a model on the plants and animals around where I live.

I Took It Outside

On the morning of October 6 I walked my own street, along the side paths that lead off to the other streets. There's no park near me, just houses, a road and a few trees, so I picked Streets in the app.

Seeing the screen go dark and hearing the mission read out loud was a wonderful thing to see.

In about six minutes I took four photos: my shadow on the pavement, a pawpaw tree, some weeds against a brick wall, and grass growing where the wall meets the ground. I skipped two missions, a plant in a pot and a small creature, because I couldn't find them around me.

My glass-free score was 12%. That's honest: I kept the screen on to read each mission instead of putting the phone away.

What stayed with me was the pawpaw tree, its big leaves moving in the wind.

Back home, Gemma developed the roll on my laptop. It named the pawpaw correctly (Carica papaya). My "fallen leaf" photo was really weeds against a wall, and Gemma stamped it NOT QUITE and said it would look for fallen leaves next time. Fair enough.

My field journal from the walk, developed by Gemma 3 on my laptop

Why Does Open Innovation Matter?

Honestly, this project wouldn't work with a closed API.

It has to work where the grass is, and parks and trails are exactly where the signal drops. With an open model, "the cloud" is a laptop in my living room, and the walking part doesn't need a network at all.

Your walks can stay yours. A roll of photos is a record of where you went and when. Run Gemma on your own computer and those photos never leave your devices. I also added an online darkroom so people without a computer can try it, and I'm upfront about the trade: those photos go to Google's hosted Gemma to be developed, nothing is stored, and you can turn it off. Because the model is open, you get to choose. With a closed API there would be no local option at all.

It's free. No API key, no charge per photo, no subscription. A kid with an old laptop someone passed down to them can run the whole darkroom.

And I can change it. Swapping the model is one text box: the 12B Gemma on a stronger machine, Gemma 3n for something lighter, or LLaVA. The prompts all live in one small file anyone can read.

The funny part is that running my own model gave me the best idea in the project. With a fast cloud API I would have built yet another app that names your photo on the spot. Because my model was slow, I built a darkroom instead, and the darkroom is what keeps you off the screen.

My Agent Session

I built this with Claude Code as my pair programmer, and this is the full session. You can see the plan change when we found out my laptop had no GPU, the moment the slow model turned into the darkroom idea, the first time Gemma called the slug a snail, and the voxel film coming together frame by frame.

Building Touch Grass, Not Glass with Claude Code claude-opus-5-5
You

recieved this mail

<pasted_content id="9ee1">
Hey there,

Week 1 of the Hacktoberfest Open-Source AI Challenge is officially live!

This week's theme is Touch Grass: build something with open-source AI at its core that gets people off the screen and into the world. Hiking, gardening, birding, run clubs, fall foliage: if it gets someone outside, it counts.

This year's Hacktoberfest is all about open-source AI and open-weight models. To participate, build a brand-new project and write about it on DEV. You can run an open-weight model, build on an open-source agent framework, run inference locally, or all three. They most important part? Tell us why open innovation matters for what you built.

TAKE ME TO THE CHALLENGE
Free credits: several partners are giving participants credits and promo codes, including Tinker, Render, Backboard, and ElevenLabs. Claim yours at hacktoberfest.com/my.

Winners will be announced the week of October 12.

GOOD LUCK!
</pasted_content id="9ee1">

now the details

<pasted_content id="9ee1">
Skip to content
Powered by Algolia
Create Post21

Join the Hacktoberfest Open-Source AI Challenge: Touch Grass! $2,450 in Prizes Across 17 Winners. - DEV Community
8Jump to Comments0SaveBoost
Jem for The DEV Team
Posted on Oct 5โ€ขAI-assisted
234337
Join the Hacktoberfest Open-Source AI Challenge: Touch Grass! $2,450 in Prizes Across 17 Winners.
#devchallenge#hf26challenge#hacktoberfest#softwaredevelopment
Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission ๐ŸŒฟ
Week 1 of our five Hacktoberfest DEV Challenges starts today! Running through October 11, the Hacktoberfest Open-Source AI Challenge: Week 1 gives you a full week to build.
**This year's Hacktoberfest is all about building brand-new projects with open-source AI and open-weight models. Here's everything you need to know about Hacktoberfest 2026.
Missed the Hacktoberfest Weekend Challenge? No problem. Every challenge is a fresh start, so you're competing on the same footing as everyone else.
This week, we'll select one overall winner and a winner in each of our 16 partner categories. See all five challenges and every partner category on the HF26 DEV Challenge Hub.
Let's get to it!
This week's theme: Touch Grass
Build something with open-weight models or open-source AI that gets people off the screen and into the world.
That can mean running an open-weight model, building on an open-source agent harness or framework, running inference locally, or all three. Whatever you pick, the open pieces should be what makes your project work.
Hiking, gardening, birding, run clubs, fall foliage: if it gets someone outside, it counts. The best builds here should make the screen the shortest part of the experience. A few ideas to get you going:

  • A bird call identifier that works on the trail with no signal
  • A garden planner that tells you what to plant this week based on your local frost dates
  • A run club route builder that finds the best fall foliage near you

In your post, tell us why open innovation matters for what you built. Does it run on a phone in the backcountry with no internet? Keep someone's location data off a server they don't control? Let you fine-tune, swap models, or change how your agent behaves? Cost nothing to run? Tell us where your open-based approach worked better than a closed one.
Bonus points if you take it outside, use it, and tell us how it went.
Touch Grass Submission Template
Prize Categories
Alongside our overall winner, we have 16 prize categories for projects that use a specific partner's technology. You don't need to use any of these to win the overall prize, but if you've been curious about any of this tech, this is a great excuse to give one a try. Full descriptions are on the hub.
Featured categories:

Partner categories:

Pro Tip: Partner category winners come from a smaller pool of submissions, so your odds are meaningfully higher.
Note: One project can enter every category it genuinely uses, but you can only win once per challenge, and we'll aim to celebrate as many different builders as possible across the month.
Free credits: several partners are giving participants credits and promo codes, including Tinker, Render, Backboard, and ElevenLabs. Claim yours at hacktoberfest.com/my.
A huge thank you to our partners for making these prizes possible!
Judging Criteria
This is DEV, so your write-up matters most.

  • Writing Quality (weighted most heavily): Is the post clear and engaging? Does it explain what you built, who it's for, and why open innovation matters?
  • Relevance to the Prompt and Theme: Is open-source AI or open-weight models at the core of the project? Does it get people off the screen and into the world?
  • Creativity: Is it an original idea, or a fresh take on a familiar problem?
  • Technical Execution: Does it work, and is it well built?
  • Use of Partner Technology (optional): If you're entering a partner category, does the project use that technology in a meaningful way?

Show your work. We'd love to see how you built it. Save your agent session with DevRelay and embed it in your post, or link to it. It's optional, but it helps the judges understand your process.
Prizes

  • Overall winner (1): $250 USD, a DEV++ membership, and an exclusive DEV badge
  • Featured category winners (6): $200 USD and an exclusive DEV badge each
  • Partner category winners (10): $100 USD and an exclusive DEV badge each

All participants with a valid submission will receive a completion badge.
How To Participate
Publish a post on DEV using the submission template below. Tell us what you built and how it gets people outside, show us a demo, and explain why open innovation matters for what you built.
Touch Grass Submission Template
Please review our judging criteria, rules, guidelines, and FAQ page before submitting so you understand our participation guidelines and official contest rules, such as eligibility requirements.
Need Help?

Important Dates

  • October 5: Hacktoberfest Open-Source AI Challenge: Week 1 begins!
  • October 11: Submissions due at 11:59 PM PDT
  • Week of October 12: Winners announced

Week 2 launches Monday, October 12 with a brand-new theme. Follow #hf26challenge so you don't miss the reveal.
Questions about the challenge? Drop them in the comments below.
Happy Hacktoberfest, and good luck!
Top comments (8)
Subscribe
SubmitPreview

Ariba Sayed
โ€ขOct 5
Excited!
3 likesLikeReply

adriens
โ€ขOct 5
First benefit of this Hackathon, I used Kaggle and its free GPUs in a brand new way, will make me more productive in my next projects

1 likeLikeReply

Divyansh Goyal
โ€ขOct 5
Excited !!
1 likeLikeReply

0xGozie
โ€ขOct 5
Back to work
1 likeLikeReply

Lamanirevegrand
โ€ขOct 5
Oh great, another work week...๐Ÿ˜
1 likeLikeReply

Abubakar Ahmed
โ€ขOct 5
Since the submission deadline is 11 October 2026 at 11:59 PM PDT (which corresponds to 12 October 2026 at 11:59 AM PKT), could you please confirm if we can submit by our local Pakistan time? Thanks
LikeReply

Jem The DEV Team
โ€ขOct 5
Yes, everyone submits according to their corresponding local time!
3 likesLikeReply
Code of Conduct โ€ข Report abuse
The DEV Team
Following
The hardworking team behind DEV โค๏ธ
Want to contribute to open source and help make the DEV community stronger?
The code that powers DEV is called Forem and is freely available on GitHub.
You're welcome to jump in!
Contribute to Forem
More from The DEV Team
Join the Hacktoberfest Weekend Challenge: Build for a Friend! $2,450 in Prizes Across 17 Winners. Submissions Due October 5 at 6:59 AM UTC.
#devchallenge #weekendchallenge #hf26challenge #hacktoberfest
Congrats to the DEV Weekend Challenge: Generosity Edition Winners!
#devchallenge #weekendchallenge #hackathon #programming
Hacktoberfest 2026 DEV Challenges: Five Challenges, One Prompt, a New Theme Every Week
#devchallenge #hf26challenge #hacktoberfest #opensource
DEV Community โ€” A space to discuss and keep up software development and manage your software career

Built on Forem โ€” the open source software that powers DEV and other inclusive communities.
Made with love and Ruby on Rails. DEV Community ยฉ 2016 - 2026.
</pasted_content id="9ee1">

access this link on my broswer to fill the submision form
https://dev.to/devteam/join-the-hacktoberfest-open-source-ai-challenge-week-1-touch-grass-2450-in-prizes-across-17-4pom?bb=264623

now make it make more sense and win a price with creativity that is top notch

what exactly do they needs

Agent
Agent
Agent
Agent
Agent
Agent
Agent
Agent

Note: this PC has no NVIDIA GPU, only Intel HD 620 graphics. gemma3:4b is already installed, though, so it can run on the CPU. I'll check how fast it is.

Agent
Agent
Agent
Agent
Agent
Agent
Agent

The page layout and styles are done. Now I'm writing the app logic: quest generation, the dark field mode, and the Gemma darkroom.

Agent
Agent
Agent
Agent

Now the offline service worker, manifest, icon, and a dependency-free local server.

Agent
Agent
Agent
Agent
Agent
Agent
Agent
Agent
Agent

The app is built. I'm trying to open it in the in-app browser to test it, and navigation was refused, so I'll check the server directly.

Agent
Agent
Agent
Agent

The in-app browser won't open localhost here. I'll test the AI pipeline directly with Node instead, using the same ollama.js the app uses.

Agent
Agent
Agent
1 message not shown
Agent

Committed. Now I'm creating the public GitHub repo under your account (angelraph) and turning on GitHub Pages, so the app gets an HTTPS link you can open on your phone.

Agent
Agent

The repo and Pages are live. Now I'm drafting the DEV post, since the write-up counts most with the judges.

Agent
1 message not shown
Agent
Agent
Agent

The app is built and live, and the post is drafted. I haven't published anything yet: the post still needs a few real things that only you can provide.

What the challenge needs: a published DEV post with sections for what you built, a demo, the code, how you built it, and why open models matter. It's due Oct 11, 11:59 PM your local time. Writing quality counts the most, and you get bonus points for actually using the app outside and saying how it went.

What's done:
- The app, "Touch Grass, Not Glass": a camera that only works outside.
- At home, Gemma writes 6 field quests for the season and the place you're heading.
- Outside, the screen goes nearly black: one quest, read aloud, and a shutter button.
- Back home, Gemma "develops the roll." It checks each photo against its quest and writes a short field note.
- The only score is the share of your walk the screen was off ("96% glass-free").
- Code: https://github.com/angelraph/touch-grass-not-glass
- Live link: https://angelraph.github.io/touch-grass-not-glass/
- Post draft: POST.md, entered for the overall prize and Best Use of Gemma ($200).

How it was tested:
- Gemma wrote good October park quests in 32 seconds.
- Given a photo that didn't match its quest, it correctly answered "NOT QUITE" instead of pretending.
- I could not test the screens in a browser here; the in-app browser wouldn't open the page. Please open the live link once and check it looks right.

Your PC has no NVIDIA GPU, so Gemma runs on the CPU. Checking one photo takes about 2.4 minutes. I made that part of the idea: like a film camera, you shoot now and develop later, and the post explains this.

What I need from you before publishing:
1. Take a real walk. Open the live link on your phone and shoot a roll. At home, tap Export roll on the phone, then on the PC run the command below and use Import roll and Develop roll.
2. Tell me how the walk went: where you went, your glass-free %, your best photo, and anything Gemma got wrong. I'll write it into the "I Took It Outside" section. I won't make this part up.
3. Send me 2โ€“3 screenshots or a short video for the Demo section.
4. Be logged into DEV. I'll fill in the post in your browser, show it to you, and click Publish only after you say yes.

npm start
You

also deploy on vercel after the repository creation let me see how it looks like

Agent
Agent

You're logged into the Vercel CLI as angelraph. Deploying the static app to production now:

Agent
Agent

The folder name has a space in it, so I'll set the project name explicitly.

Agent
Agent
Agent

The --project flag only works for projects that already exist, so I'll create the project first and then deploy.

Agent
Agent
Agent

The site is live and your private draft (POST.md) isn't exposed. Next I'll commit the ignore files, connect the GitHub repo so future pushes redeploy automatically, and open the site for you.

1 message not shown
Agent
Agent
Agent

The page loads. The one console error is the site trying to reach the local Ollama model, which is expected on the hosted version. I'll look at it at phone size and try field mode.

Agent
Agent
Agent
Agent

Tapping "Load film" didn't seem to do anything. Checking why:

Agent
Agent
Agent

The app works; my first tap had just missed the button. Field mode now opens with a pocket-deck quest:

Agent
Agent
Agent

Measured, the layout is the correct 375px phone width; the cramped look comes from the pane being small and scaling the screenshot down. I'll clear the test roll and reset the viewport.

Agent
Agent
Agent
Agent

The app is deployed on Vercel at https://touch-grass-not-glass.vercel.app, and it's open in the browser pane so you can see it.

  • Auto-deploy: the Vercel project is connected to your GitHub repo, so every push to main redeploys the site by itself.
  • Private draft: POST.md is excluded from the deploy (it returns 404), so your unfinished post isn't public.
  • Post updated: the Demo link in the draft now points to the Vercel address.

What I tested on the live site:
- The home page loads.
- At phone size, "Load film" opens the black field screen with a quest ("Find a color in nature you could not name.").
- I deleted that test roll afterwards.
- The screenshots in the pane look squashed, but I measured the page and it lays out at the correct phone width. The squashing comes from the small pane, not the site.

Limitation of the online version: it can't reach Gemma, because the model runs only on your PC. So it uses the built-in backup set of quests instead of AI-written ones, and it can't develop photos. That's fine for the walk: shoot on your phone using the Vercel link, tap Export roll, then develop the roll at home on your PC with npm start.

Next steps are the same as before. Take the walk, send me 2โ€“3 screenshots or a short video and tell me how it went, and I'll finish the post. I'll only click Publish after you say yes.

You

@"[REDACTED]\Downloads__QfwctsafkFEKBx.mp4"
all this can be done by you professionally and confidenltly

<pasted_content id="9ee1">
What I need from you before publishing:

  1. Take a real walk. Open the live link on your phone and shoot a roll. At home, tap Export roll on the phone, then on the PC run the command below and use Import roll and Develop roll.
  2. Tell me how the walk went: where you went, your glass-free %, your best photo, and anything Gemma got wrong. I'll write it into the "I Took It Outside" section. I won't make this part up.
  3. Send me 2โ€“3 screenshots or a short video for the Demo section.
  4. Be logged into DEV. I'll fill in the post in your browser, show it to you, and click Publish only after you say yes. </pasted_content id="9ee1">

and what can it take us to get video lik this?

Agent
Agent

I'll look at the video first. ffmpeg isn't installed, so I'll open the file in the browser pane and grab frames from it.

Agent
Agent
Agent
Agent
Agent

The browser pane can't play local video, so I'll install a standard ffmpeg build (the ffmpeg-static npm package) in a scratch folder. I'll need it to make our own video anyway.

Agent
Agent
Agent

The video is 11.5 minutes long at 640ร—360, with audio. I'll make a contact sheet of 24 frames spread across it.

Agent
Agent
Agent
Agent
Agent

Thanks. While you go out for the walk and photos, I'll set up the video pipeline so it's ready when your photos arrive. Starting with the Piper voice and Playwright.

Agent
Agent
Agent
Agent
Agent

The video tools are installed and tested:
- ffmpeg handles the editing.
- Piper works with a natural US English voice; I generated a test line offline.
- Playwright opens and drives your live Vercel app.

When your photos arrive, I'll record the app, develop the photos with Gemma, add the narration and title cards, and edit everything into the final video.

What to do on your walk (20โ€“30 minutes is enough):
1. On your phone, open https://touch-grass-not-glass.vercel.app and tap Load film.
2. Follow the quests and take a photo for each one. Keep the phone in your pocket in between.
3. When you're done, tap finish roll, then Export roll. Also take 1โ€“2 normal phone screenshots of the black quest screen; they'll look great in the video.
4. Send me:
- the exported roll .json file, or the 4โ€“6 photos, saved into the touch glass folder or your Downloads
- a few lines on how it went: where you walked, how long, the glass-free % the app showed, your favourite find, and anything that surprised you

As soon as those arrive, I'll make the video and GIF, finish the post, fill it into DEV, and ask for your yes before publishing. Deadline: Oct 11, 11:59 PM.

You

i opened this on my phone

https://touch-grass-not-glass.vercel.app/ but cant understand what exactly to do there.. explain in a layman launguage like a little kid

for the walk hmmm its late night here, get a beauitiful natural pictures for it

Agent

Here's how to use the app, explained simply:

It's a treasure hunt for outside. ๐ŸŒณ

  1. Tap "Load film." The app gives you a little list of things to find, like "find a leaf that a bug took a bite out of."
  2. The screen goes black and shows one thing to find. That's your mission.
  3. Put your phone away and go look for it. Look at trees, the ground, the sky.
  4. Found it? Take out your phone and tap the big round gold button. That takes the photo.
  5. The next mission appears. Repeat. (Can't find one? Tap skip.)
  6. Back home, tap "Develop roll." The robot looks at your photos and tells you if you found the right thing. It also writes a cute little note about each one, like a nature diary. ๐Ÿ“”

The goal is to look at your phone as little as possible. The app even tells you how much of your walk you didn't look at the screen.

One catch: the "robot checking your photos" part only works on your computer, because that's where the AI lives. On the phone you just hunt and take photos.

You're right that the app doesn't explain this itself. I'll add a simple "How it works" box to the home page. Then I'll get beautiful, freely licensed nature photos for the demo.

Agent
Agent

I've found strong licensed photos. Getting one more, for the sky quest:

Agent
Agent
Agent

Wikimedia is rate-limiting me, so I'll slow down and add retries:

Agent
Agent

Got all six photos with credits. Making a quick contact sheet to check them:

Agent
Agent
Agent
Agent
1 message not shown
Agent
Agent
Agent
Agent
Agent

While the recording runs, I'm generating the Piper narration lines:

Agent
Agent
Agent
Agent
Agent
Agent
Agent

While it records, I'm committing the two fixes:

1 message not shown
Agent
Agent
Agent
Agent

I'm waiting for the recording to report progress.

Agent
Agent

The demo recording is running now: the real app on your PC, with Gemma writing the quests and developing the six sample photos. It will take about 20 minutes, almost all of it Gemma working on the CPU.

Done so far:
- "How it works" box: four simple steps are now on the home page of the live site, so it makes sense on your phone.
- Six free-to-use nature photos from Wikimedia Commons: a maple leaf, oak bark, sunlight through a forest, a slug, a squirrel, and an autumn tree. All are credited, and the video will say they're sample photos.
- Narration: I've recorded the voice-over lines with the free Piper voice.
- Local server fixed: the app's local server was sending the home page as a file to download instead of showing it. That's why the browser couldn't open it earlier. The fix is pushed to GitHub.

One honest test is in the roll: one quest asks for a snail, but the photo shows a slug. If Gemma catches that, it's a great moment for the video; if it doesn't, we'll say so.

Still to do:
- Edit the recording into a 1080p video with narration and captions, plus a short GIF for the post.
- Put the video and Gemma's real verdicts into the post.
- Fill in the post on DEV in your browser, then wait for your yes before clicking Publish.

I'll update you when the recording finishes.

You

<task-notification>
<task-id>bmzm78vue</task-id>
<tool-use-id>toolu_01Wtv5SZR4wvHpxM4ZV6ApgU</tool-use-id>
<output-file>[REDACTED]\AppData\Local\Temp\claude\C--Users-Admin-Desktop-touch-glass\fa682714-f507-44b2-835d-21de5eebe1ed\tasks\bmzm78vue.output</output-file>
<status>completed</status>
<summary>Background command "Verify fix and rerun demo recording" completed (exit code 0)</summary>
</task-notification>

Agent
Agent

The model was ready. My script waited for a status line that sits inside the collapsed Settings panel, so it never became "visible." Fixing that one line and re-running:

Agent
Agent
Agent
Agent

The recording is running again with the fix. I'm following its progress through each scene: quests written live, the dark field screen, six photos, then Gemma developing them.

Agent
Agent

The recording is moving: the home page is captured and Gemma is writing the live quests. Meanwhile I'm writing the editing script that turns the raw recording into the final video.

Agent
Agent

The editing script is ready. The one narration line about Gemma's verdicts will be written after I see what Gemma actually decides. Waiting on the recording now.

Agent
Agent

Gemma wrote the live forest-trail roll in about 43 seconds, and field mode is showing. The demo roll and darkroom come next; developing the photos will take roughly 15 minutes. I'll wait for the scene events.

You

<task-notification>
<task-id>bfb98e0ob</task-id>
<summary>Monitor event: "Stream recording scene marks and errors"</summary>
<event>{ name: 'field-live-2', t: 58.04 }
{ name: 'load-demo', t: 62.368 }
{ name: 'frame-1', t: 64.292 }</event>
</task-notification>

Agent

The demo roll has started and the sample photos are going in through the real shutter. Waiting for Gemma to develop them.

You

<task-notification>
<task-id>bfb98e0ob</task-id>
<summary>Monitor event: "Stream recording scene marks and errors"</summary>
<event>{ name: 'frame-2', t: 68.702 }
{ name: 'frame-3', t: 73.107 }</event>
</task-notification>

Agent

Three of six photos are taken. Still recording.

You

<task-notification>
<task-id>bfb98e0ob</task-id>
<summary>Monitor event: "Stream recording scene marks and errors"</summary>
<event>{ name: 'frame-4', t: 77.746 }
{ name: 'frame-5', t: 82.234 }</event>
</task-notification>

Agent

Five of six photos are taken. The darkroom starts next.

You

<task-notification>
<task-id>bfb98e0ob</task-id>
<summary>Monitor event: "Stream recording scene marks and errors"</summary>
<event>{ name: 'frame-6', t: 86.637 }
{ name: 'undeveloped', t: 91.108 }
{ name: 'develop', t: 95.125 }</event>
</task-notification>

Agent

All six photos are in, and Gemma has started developing the roll. At about 2 minutes per photo on this CPU, that's roughly 15 minutes.

You

<task-notification>
<task-id>bfb98e0ob</task-id>
<summary>Monitor event: "Stream recording scene marks and errors"</summary>
<event>{ name: 'developed-1', t: 230.835 }</event>
</task-notification>

Agent

Frame 1 (the maple leaf) took about 2ยผ minutes to develop. Five to go.

You

<task-notification>
<task-id>bfb98e0ob</task-id>
<summary>Monitor event: "Stream recording scene marks and errors"</summary>
<event>{ name: 'developed-2', t: 369.892 }</event>
</task-notification>

Agent

The oak bark is done too: 2 of 6 developed.

You

show me the video when it's done

and i want you to walwalk and click each link here

<pasted_content id="9ee1">
For โ€œTouch Grass, Not Glass,โ€ Iโ€™d pull inspiration from three different directions rather than copying one app. Your product needs to feel calm, outdoorsy, and premium while deliberately reducing screen engagement.
1. Aluna, calm AI + minimal mobile UI
Aluna UI/UX case study
This is probably the closest match for the overall polish you want. The design intentionally reduces stimulation, which fits your idea of sending the user outside instead of keeping them in the app. (U1Core)
Borrow:

  • Large typography
  • Lots of breathing room
  • Soft natural colors
  • One clear action per screen
  • Calm transitions
  • Minimal navigation
  • Premium mobile-app feel

For your app, I'd adapt this into a very sparse โ€œField Modeโ€ where the quest is almost the only thing visible.
2. Lumo, nature + journal + intentional UX
Lumo mindfulness app case study
Lumo is especially useful for your journal side. It combines outdoor/wellness thinking with journaling and deliberately avoids the competitive feeling of typical habit apps. (Hunter Bastian)
Borrow:

  • Natural palette
  • Field-journal feeling
  • Simple daily entry
  • Gentle progress indicators
  • โ€œMinutes away from screenโ€ as your main metric
  • Photo + short written observation

Your โ€œPressed Leafโ€ journal could feel like a modern field notebook rather than a conventional AI app.
3. Dribbble Wellness + Journal collections, for component polish
Dribbble wellness app UI collection
Dribbble journal app UI collection
Use these specifically for micro-UI inspiration rather than copying an entire visual identity. There are useful patterns for cards, journal entries, mood/condition indicators, bottom navigation, empty states, and mobile interactions. (Dribbble)
For Touch Grass, I'd build the UI around this structure:

HOME
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Good morning

12 min away from screen

Today's field quest
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   โ”‚
โ”‚  Find something   โ”‚
โ”‚  alive on a leaf. โ”‚
โ”‚                   โ”‚
โ”‚       START โ†’     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

        12 min
        outside

Journal    Settings

Then when they start:

FIELD MODE

        โ—‡

Find something alive
on a leaf.

Listen first.
Look slowly.

        [ I FOUND IT ]

Almost everything disappears.
After the photo:

FIELD NOTE

โœ“ Find verified

Wild leaf with a
small insect resting
beneath the surface.

18 minutes outside

[ SAVE TO JOURNAL ]

And the journal should feel like this:

MY FIELD JOURNAL

18 min       42 min       27 min
outside      outside      outside

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

Oct 06
A tiny visitor
on a wild leaf.

[photo]

"Somewhere between
looking and noticing."

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

Oct 05
...

The key design decision I'd keep throughout the build is: the app should become visually quieter as the user gets closer to going outside.
That gives you a much stronger product identity than making another attractive wellness dashboard. It also directly reinforces the Hacktoberfest theme.
</pasted_content id="9ee1">

modify the uix with this make it more great

Agent

Got it. I'll visit each of the four links for inspiration, then redesign the app. One heads-up: the video being recorded now shows the current design. Once the redesign is done, I'll record it again (about 20 minutes, mostly Gemma) so the final video shows the new look. Visiting the links now:

Agent
Agent
Agent
Agent
Agent
Agent
Agent
Agent

I've read Aluna and Lumo; now looking at the Dribbble collections.

Agent
Agent
Agent
Agent
Agent
Agent
Agent

I've visited all four links. The recording process seems stuck closing down, so I'll check it:

Agent
Agent
Agent
Agent
Agent
Agent
Agent

Fonts and sample photos are in place. Now writing the new design system and the landing page.

Agent
Agent
Agent

The old recording is hanging while it saves the video. You asked me to drop it anyway, so I'm stopping it. Gemma's verdicts will come from the final recording.

Agent
Agent

For the landing page's sample journal I want real Gemma field notes, not made-up ones. I'm running Gemma on the six photos in the background now:

Agent
Agent

While Gemma works, I'm writing the landing page:

Agent
Agent
Agent

Landing page copy is done. Now the landing-page styles:

Agent
Agent
Agent
Agent

Gemma's first real note is in (maple leaf: found, "Autumn Maple Leaf", 121s). Now redesigning the camera app itself to follow your wireframes:

Agent
Agent
Agent

Now the app logic for the new screens:

Agent
Agent
Agent
Agent
Agent
Agent
Agent

Now a visual check: screenshots of the landing page, docs, and every app screen at phone and desktop sizes. Restarting the local server first so it picks up the new font and image types:

Agent
Agent
Agent
Agent
You

[Image: original 1440x6536, displayed at 441x2000. Multiply coordinates by 3.27 to map to original image.]

Agent

The landing page is coming together well. Checking the hero and the dark card up close; the dark card looks washed out, which may just be its fade-in animation caught mid-way:

Agent
Agent
Agent
Agent
Agent
Agent

The camera's Today screen matches your wireframe: greeting, a big "minutes away" number, one clear action, and a quiet tab bar. Checking the landing page on a phone:

Agent
Agent

Two phone-size fixes are needed: the logo and button in the top bar wrap awkwardly, and the photo card covers the phone's button. Fixing both:

Agent
Agent
Agent

Before the 20-minute recording, a quick 30-second dry run through every screen, with Gemma stubbed out, to catch bugs and see each screen:

Agent
Agent
Agent
Agent

Every screen works with no errors. The dark screens get quieter step by step, just as you described. Checking the developed journal:

Agent
Agent
Agent

The journal looks like a real field notebook. ("Test Specimen" is just the stub data from the dry run.) Committing and deploying the redesign, then starting the final recording:

1 message not shown
Agent
Agent

The final recording has started, about 20 minutes. Meanwhile I'm updating the editing script for the new two-part recording (landing page plus app):

Agent
Agent

Generating the new narration lines:

Agent
Agent

The landing clip is recorded, and the app recording is underway. Meanwhile I'm checking the deploy and updating the README and post:

Agent
1 message not shown
Agent
Agent

The recording is in its live phase. While it runs, I'm rewriting the DEV post draft to cover the redesign and Gemma's real results, mistakes included:

Agent
Agent

The photos are going in. The draft post now covers the redesign and Gemma's real mistakes, told openly. Next is about 13 minutes of Gemma developing, then I edit the video.

You

<task-notification>
<task-id>bnvt2fwbu</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'frame-6', t: 92.683 }
{ name: 'done', t: 96.831 }</event>
</task-notification>

Agent

All six photos are taken and the walk summary screen is recorded. The darkroom comes next.

You

<task-notification>
<task-id>bnvt2fwbu</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'develop', t: 104.408 }</event>
</task-notification>

Agent

Gemma has started developing the six photos, about 13 minutes.

You

<task-notification>
<task-id>bnvt2fwbu</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'developed-1', t: 260.855 }</event>
</task-notification>

Agent

1 of 6 photos developed.

You

<task-notification>
<task-id>bnvt2fwbu</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'developed-2', t: 415.013 }</event>
</task-notification>

Agent

2 of 6 developed.

You

<task-notification>
<task-id>bnvt2fwbu</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'developed-3', t: 567.37 }</event>
</task-notification>

Agent

3 of 6 developed. Halfway there.

You

<task-notification>
<task-id>bnvt2fwbu</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'developed-4', t: 690.85 }</event>
</task-notification>

Agent

4 of 6 developed.

You

<task-notification>
<task-id>bnvt2fwbu</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'developed-5', t: 834.53 }</event>
</task-notification>

Agent

5 of 6 developed. One to go.

You

<task-notification>
<task-id>bnvt2fwbu</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'developed-6', t: 1001.295 }
{ name: 'journal', t: 1005.849 }</event>
</task-notification>

Agent

All 6 photos are developed. The recording is scrolling the journal and finishing up.

You

<task-notification>
<task-id>bnvt2fwbu</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'end', t: 1044.702 }
marks written</event>
</task-notification>

Agent
Agent
Agent
Agent

The narration is ready. Waiting for the browser to finish saving the recording.

You

show me the video when it's done

Agent
Agent

Will do. The recording is still being saved (the file is growing: 14 โ†’ 18 MB). As soon as it's done I'll edit it and show you.

You

okay show me when ready

You

[Image: source: [REDACTED]\AppData\Local\Temp\claude\C--Users-Admin-Desktop-touch-glass\fa682714-f507-44b2-835d-21de5eebe1ed\images\1.png]

Agent

Nice logo. I'll put it in the video's title and end cards and on the site. Checking the recording first:

Agent
Agent

While that saves, I'm preparing the logo: cutting the phone-and-grass mark out as an app icon and making the white background transparent so it sits on the cream pages:

Agent
Agent
Agent
Agent
Agent
Agent

The background is still black, so the original logo must already be transparent, not white. Checking the file:

Agent
Agent
Agent
Agent

The logo is now clean on the cream background, and the final recording is saved (36 MB). I'll trim the small "T" peeking under the icon, then add the logo to the video's title and end cards:

Agent
Agent

Now adding logo support to the video editing script:

Agent
Agent

Rendering the video:

Agent
Agent
Agent

Bug in my editing script: the landing-page segment has no captions, which produced an empty filter. Fixing:

Agent
Agent

Rendered (2 min 6 s). One glitch: the "0%" caption needs escaping. Fixing that, then checking frames before I show you:

Agent
Agent
Agent
Agent
Agent
Agent
Agent

I'm rewriting the landing page to be lighter, with motion.

Agent
Agent

Now the styles, with all the motion:

Agent
Agent
Agent

Now the motion script: swaying grass, the phone screen dimming as you scroll, the day-to-night switch, and photos developing on screen:

Agent
Agent

Using your logo on the Docs page and in the camera app too:

Agent
Agent

Checking the new landing page at several scroll positions, including the night switch:

Agent
Agent
Agent
Agent
Agent
Agent

Much better. The numerals are calm, the night switch looks dramatic, and the closing meadow is lush. The hero grass still looks thinner than the closing meadow, so I'll zoom in to compare:

Agent
Agent
Agent
Agent
Agent
Agent

Found it: the hero is slightly taller than the screen, so you only see the grass tips. I'll make the phone a little smaller so the whole meadow sits inside the first screen:

Agent
Agent
Agent

The hero now fits the screen, with a full meadow in view. Last touches: let the grass run edge to edge on wide screens, and remove an awkward line break in the intro text:

Agent
Agent

Committing and deploying the new landing page, then starting the final recording run:

1 message not shown
Agent
Agent

The new landing page is live at https://touch-grass-not-glass.vercel.app. Here's what changed:
- Hero: your logo, a large calm headline, grass swaying along the bottom, seeds drifting upward, and a phone whose screen dims as you scroll.
- "How it works": three big, spacious chapters. When you reach "The screen goes dark", the whole page turns to night, then back to day for "Develop the roll".
- Photos: three real Gemma frames that develop like film (dark sepia โ†’ colour) as they scroll in.
- Shorter content: four one-line reasons for open AI and five FAQs. Everything else moved to the Docs.

The final video recording is running now, about 20 minutes, with both fixes in place: a full phone frame, and no early cut-off. I'm keeping the computer quiet so Gemma and the recorder don't fight over the CPU. I'll show you the video as soon as it's done.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>clip1 done
{ name: 'today', t: 0.498 }
{ name: 'load-live', t: 5.08 }</event>
</task-notification>

Agent

The landing page is recorded, and Gemma is writing the live quests.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'ready-live', t: 47.816 }</event>
</task-notification>

Agent

Gemma wrote the quests in about 43 seconds. The field-mode scenes are next.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'field-live', t: 52.392 }</event>
</task-notification>

Agent

Field mode is on screen. Still recording.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'field-live-2', t: 60.466 }
{ name: 'load-demo', t: 61.424 }
{ name: 'frame-1', t: 64.877 }</event>
</task-notification>

Agent

The demo roll has started, and photos are going through the shutter.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'frame-2', t: 69.042 }
{ name: 'frame-3', t: 73.217 }
{ name: 'frame-4', t: 77.41 }</event>
</task-notification>

Agent

4 of 6 photos are taken.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'frame-5', t: 81.579 }
{ name: 'frame-6', t: 85.827 }</event>
</task-notification>

Agent

All 6 photos are taken. Next: the walk summary, then Gemma develops the roll, about 15 minutes.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'done', t: 89.953 }
{ name: 'develop', t: 97.515 }</event>
</task-notification>

Agent

The darkroom has started. Gemma is developing the photos.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'developed-1', t: 234.665 }</event>
</task-notification>

Agent

1 of 6 developed.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'developed-2', t: 365.75 }</event>
</task-notification>

Agent

2 of 6 developed.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'developed-3', t: 498.804 }</event>
</task-notification>

Agent

3 of 6 developed. Halfway.

You

show me the video when it's done

Agent

Yes, I'll show it to you as soon as it's ready. Gemma has developed 3 of the 6 photos, about 6 more minutes. After that I edit the video (a couple of minutes) and send it to you here.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'developed-4', t: 654.573 }</event>
</task-notification>

Agent

4 of 6 developed.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'developed-5', t: 821.99 }</event>
</task-notification>

Agent

5 of 6 developed. One left.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'developed-6', t: 1003.881 }
{ name: 'journal', t: 1008.382 }</event>
</task-notification>

Agent

All 6 developed. The recording is scrolling the journal now, then it saves.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<summary>Monitor event: "Stream final recording progress"</summary>
<event>{ name: 'end', t: 1043.858 }
marks written</event>
</task-notification>

Agent
Agent
Agent

The narration matches this run's real output: slug called a snail, and the black red squirrel called an Eastern Gray. Waiting for the video file to finish saving:

Agent
Agent

The recording has finished. It's saving the video file now, with no time limit this round so it can't get cut off. Then I edit and show you.

You

<task-notification>
<task-id>b4e6266o9</task-id>
<tool-use-id>toolu_01JjhLxXW7AUH6vTZ6SF4Mjn</tool-use-id>
<output-file>[REDACTED]\AppData\Local\Temp\claude\C--Users-Admin-Desktop-touch-glass\fa682714-f507-44b2-835d-21de5eebe1ed\tasks\b4e6266o9.output</output-file>
<status>completed</status>
<summary>Monitor "Stream final recording progress" stream ended</summary>
<event>closed</event>
</task-notification>

Agent

Saved. Checking that the full recording is intact, then rendering:

Agent
Agent

The full 17-minute recording is intact. Rendering the final video:

Agent
Agent
Agent

The phone now fills its frame, the landing page with the night switch is in, Gemma develops live, and your logo opens and closes the video. Sending it to you:

Agent
Agent
Agent

The demo video is done: touch-grass-demo.mp4, 2 min 11 s, 1080p, narrated by the free open-source Piper voice. I watched it through frame grabs, not with sound. It runs in this order:

  1. Title card with your logo: "The camera that only works outside."
  2. Landing page: grass swaying, the phone screen dimming, and the page turning to night at "The screen goes dark."
  3. Live quests: Gemma writing a fresh roll of quests on your laptop. Nothing is faked; it's sped up because the CPU is slow.
  4. Field mode: the dark screen with one quest at a time.
  5. Demo roll: six photos taken through the real camera button. A caption says they're CC-licensed sample photos because it was midnight.
  6. "Recorded at a desk, so: honestly 0%": the glass-free score is shown truthfully.
  7. The darkroom: Gemma developing each photo live, from dark sepia to colour.
  8. Gemma's mistakes, kept in: it called the slug a snail and guessed the wrong squirrel species, and the narration says so.
  9. End card: your logo, "Now go outside.", the links and the photo credits.

Problems I found and fixed along the way:
- The first recording only filled a quarter of the phone frame.
- It also lost its last 10 minutes when saving, because Gemma and the video encoder were fighting over the CPU.
- I fixed both and recorded again from scratch.

Your logo is also live on the site: in the navigation, the browser tab icon, and the home-screen icon.

What's left:
1. Your feedback on the video. If you want changes (pace, wording, music), tell me.
2. Where to host the video. DEV posts embed YouTube nicely. You can upload it to YouTube yourself and send me the link. Or, if you want, I'll put it on the project's own site (/demo.mp4) and link to it from the post.
3. The walk (optional): a short daytime walk this week to add a real "I Took It Outside" section. If you'd rather skip it, I'll leave that section out.
4. Publishing: once you're logged into DEV in your browser, I'll fill in the post and show it to you. I'll only click Publish after you say yes.

You

the video doesnt look entertaining like the video i show you nothing is stylish or creative, i gave you a video example didnt i? or cant that type be achieved with this project?

i have logged in on my browser though

Agent

Yes, you showed me the example. Here's an honest answer about what made it feel the way it did.

Why your example looks like that: that project was a 3D game, so its demo video was just gameplay. It had a blocky character, a 3D world, pop-ups and music. Our project is a calm web app, so a screen recording of it will always look like a screen recording. That's why mine felt flat: it's a tidy tutorial, not a story.

Can we get that feel? Yes. We just have to build the film, not only record the app. I can make a short animated voxel (blocky 3D) story in the browser with Three.js, an open-source 3D engine, and record it the same way. For example:

A blocky character sits in a dark room, face lit by a phone ๐Ÿ“ฑ โ†’ the phone shows a quest and goes dark โ†’ the door opens onto a golden-hour voxel park, with grass swaying and leaves falling โ†’ they spot a red maple leaf โ†’ click, a shutter flash โ†’ back home, a red darkroom light, and the photos develop one by one โ†’ the field journal โ†’ your logo: "Now go outside."

The real app footage would appear inside the story on a floating phone, so judges still see that it truly works. Add music, sound effects (shutter click, film wind, footsteps), stylish captions and transitions, and it becomes a short film rather than a demo.

That's roughly 3โ€“5 hours of my work, with free tools only. We have until Oct 11, so there's time.

Before I start something that big, a few choices:

Agent
Agent
Agent

Three.js is ready. Next I'm capturing real app screens to use as textures on the cartoon phone and laptop. The journal will show Gemma's real notes from the earlier run:

Agent
Agent

Real app screens captured. Now writing the cartoon film: six scenes, a voxel character, and a timeline that's rendered frame by frame. This is the big part.

Agent
Agent

Writing the film's engine and scenes now:

Agent
Agent

Writing a frame-preview tool so I can check key moments before the full render. Also fixing the pop-in animation curve:

Agent
Agent

It renders at about half a second per frame, so the full 80-second film takes about 20 minutes. Checking the first scene:

Agent
Agent
Agent
Agent
Agent
Agent
Agent
Agent
Agent
Agent
Agent

Found the black-laptop bug: a dark panel sat a hair in front of the screen. Fixing that and moving the camera closer to the journal phone, then starting the full 80-second render in the background:

Agent
Agent

Rendering in two parallel halves to use more of the CPU:

Agent
Agent
Agent
Agent
Agent
Agent

The score is composed and the render is at 2,187 of 2,400 frames, almost there:

Agent
Agent

Waiting for the last couple of hundred frames.

You

<task-notification>
<task-id>b0ic05qn5</task-id>
<summary>Monitor event: "Wait for both render halves to finish"</summary>
<event>done 1358s
done 1330s</event>
</task-notification>

Agent

All 2,400 frames are rendered. Assembling the film with the score:

Agent
Agent
Agent

That's a real cartoon now. Sending it:

Agent
Agent
Agent

Here's the new video: touch-grass-film.mp4, an 80-second voxel cartoon at 1080p and 30 fps, with an original score and sound effects. I checked it frame by frame through stills, but I haven't heard the audio myself, so please listen for anything that sounds off.

What happens in it:
1. 23:47, a dark bedroom. A blocky kid is glued to their phone while notification bubbles float around them (โ™ฅ 214, ๐Ÿ”” 99+, ๐Ÿ”ฅ 47). Music: a gloomy music box.
2. The phone slides up showing the real app. Taps on Load film and Start walking, then the screen goes dark with Gemma's real quest. The notifications pop and vanish.
3. "!" The kid looks up, stands, walks to the door. The door creaks open and a flash of light floods in.
4. A golden-hour voxel park with a cheerful chiptune, falling leaves, birds and swaying grass.
- They spot the red maple leaf โœจ โ†’ click โ†’ a polaroid of the real photo slides in.
- A quick montage follows: squirrel โ†’ light rays โ†’ the slug, each with a shutter flash.
- Sunset walk home.
5. The red darkroom. Lo-fi keys play while the prints develop on the line and the real journal shows on the laptop.
- The laptop says "Frame 4: a large, dark snail!". The kid turns to the camera: "โ€ฆthat's a slug." ๐ŸŽบ wah-wah
6. The meadow. The why-open points pop in beside a giant floating phone showing the real journal, then the kid lies in the grass with their phone face-down.
7. Your logo: "Now go outside."

Everything is free and open-source: Three.js for the 3D, music I composed in code, and the real app inside the story.

About publishing to DEV:
- The video needs a public link first. DEV posts embed YouTube best. Which do you prefer?
- (a) You upload touch-grass-film.mp4 to YouTube yourself and send me the link.
- (b) I host it on the project's site at /film.mp4 and the post links to it, with a GIF preview in the post.
- Your Chrome session. I'll connect to your Chrome with the Claude in Chrome extension, open the DEV editor, and paste in the finished post. Then I'll show you the preview and click Publish only when you say yes.

Want any changes to the film first (scenes, pacing, music, jokes)?

You

great video, whats like is voice, the example video i gave you have a voice on it, this should also have a voice then i will host it on yutube why you also host it in the app

Agent

Yes, we can add voice. I'll give the film a cast of three open-source Piper voices, so it stays fully open like the rest of the project:
- ๐ŸŽ™๏ธ A warm narrator telling the story.
- ๐Ÿง’ The kid, "Sam", saying a few lines ("There!", "โ€ฆthat's a slug.").
- ๐Ÿค– The laptop, with a robotic voice effect for "Frame four: a large, dark snail!"

The music will automatically dip whenever someone speaks, so every line is clear. Then I'll put the film on the website too (a "Watch the film" section on the landing page), and you can upload the same file to YouTube.

Downloading the voices:

Agent
Agent

Recording the script with the voices:

Agent
Agent
Agent

Score regenerated. Now mixing: the music dips automatically under each voice line.

Agent
Agent

The mix is done. I can't listen myself, so I'll measure that the voice really sits clearly above the music:

Agent
Agent
Agent
Agent
Agent
Agent
Agent

The film section looks great on the landing page and the video loads. Deploying now:

1 message not shown
Agent
Agent

The film now has voices: touch-grass-film.mp4. That's the full-quality file to upload to YouTube.

The cast (all free, open-source Piper voices that run offline, which fits the project's "open" story):
- ๐ŸŽ™๏ธ Narrator: "Meet Sam. Day forty-seven of just five more minutesโ€ฆ Then the phone said something new. And went dark."
- ๐Ÿง’ Sam: "Wait. A leaf?" โ€ฆ "There!"
- ๐Ÿค– Laptop, in a crunchy robot voice: "Frame four. A large, dark snail!" โ†’ ๐Ÿง’ "That's a slug." โ†’ ๐ŸŽบ wah-wah
- The narrator closes: "Touch Grass, Not Glass. Now, go outside."

I measured the mix rather than listening to it: whenever anyone speaks, the voices sit 13โ€“20 dB above the music. Please give it one listen to confirm it sounds right to you.

It's on the website too. The landing page has a new "Meet Sam." section with the film, and "Film" is in the top menu: https://touch-grass-not-glass.vercel.app/#film. The website copy is a lighter 7 MB version so it loads fast.

Next steps:
1. Upload touch-grass-film.mp4 to YouTube and send me the link. A suggested title: "Touch Grass, Not Glass: a voxel short about a camera that only works outside".
2. Then I'll connect to your Chrome (the Claude in Chrome extension), open the DEV editor, paste in the finished post with the YouTube embed, and show you the preview. I'll only click Publish after you say yes.

You

give me yutube small subtile with the url

Agent
Agent
Agent

Here's a short YouTube title and description with the links, ready to paste:

Title

Touch Grass, Not Glass: a camera that only works outside

Description
```
Meet Sam: day 47 of "just five more minutes." Then the phone said something newโ€ฆ and went dark. ๐ŸŒฟ

Touch Grass, Not Glass gives you six small things to find outside. The screen stays dark while you look, and back home an open-weight AI (Gemma 3, running locally) develops your roll into a field journal. No cloud. No feed. One score: time with the screen off.

โ–ถ Try it: https://touch-grass-not-glass.vercel.app
๐Ÿ’ป Code: https://github.com/angelraph/touch-grass-not-glass

Built for the DEV Hacktoberfest 2026 Open-Source AI Challenge.
Made with Three.js, Piper voices and an original score written in code.

hacktoberfest #opensource #gemma #touchgrass


I also made a subtitle file: [touch-grass-film.en.srt](touch-grass-film.en.srt). It has the 20 spoken lines with timings, with Sam's and the laptop's lines labelled. To add it, after uploading go to **Subtitles โ†’ Add language โ†’ English โ†’ Upload file โ†’ "With timing"** and choose that file. Captions help viewers who watch with the sound off.

Send me the YouTube link when it's up, and I'll put the post together in your Chrome.
Agent

Got the link. Updating the post with the YouTube embed and the latest work, then opening DEV in your Chrome.

Agent
Agent
Agent

The post draft is complete: the YouTube embed is in, and no placeholders are left. Now connecting to your Chrome:

Agent
You

Base directory for this skill: [REDACTED]\AppData\Roaming\Claude\local-agent-mode-sessions\skills-plugin\70d518c3-2d3a-4ecd-9ebb-b411e8fccb34\6c240f28-47e8-4178-be57-5d0095836a4e\skills\chrome-browser

Claude in Chrome

Claude in Chrome is a browser extension. Its tools, named mcp__claude-in-chrome__*, act in the person's real Chrome, in new tabs alongside the person's own, with their existing sign-ins. Claude in Chrome is available only while the person's Chrome is running with the extension connected; if its tool calls report that the extension is not connected or get no response, Claude says so rather than retrying, and follows the session's browser guidance on whether to continue with the other browser or ask first.

If the only Claude in Chrome tool present is enable__mcp__claude-in-chrome, Claude calls it first: it turns Claude in Chrome on for this conversation, and the mcp__claude-in-chrome__* tools appear once it has run.

Loading the tools

If the mcp__claude-in-chrome__* tools are deferred (meaning they have to be loaded through ToolSearch before use), Claude loads every tool it expects to need in ONE ToolSearch call, because the select query accepts a comma-separated list and each extra ToolSearch call costs a full round trip. The core set to start with:

ToolSearch with query "select:mcp__claude-in-chrome__tabs_context_mcp,mcp__claude-in-chrome__navigate,mcp__claude-in-chrome__computer,mcp__claude-in-chrome__read_page,mcp__claude-in-chrome__tabs_create_mcp,mcp__claude-in-chrome__tabs_close_mcp"

Claude adds task-specific tools to that same call when the task obviously needs them: read_console_messages and read_network_requests for debugging, form_input for forms, gif_creator for recordings, javascript_tool for page scripting. A second ToolSearch is only for a tool the task turned out to need later.

Starting a session: tab context first, then a new tab

At the start of each browser session Claude calls mcp__claude-in-chrome__tabs_context_mcp first, to see the person's current tabs and understand what they may want to work with. Then:

  1. Claude reuses an existing tab only when the person explicitly asks to work with it.
  2. Otherwise Claude opens a new tab with mcp__claude-in-chrome__tabs_create_mcp and works there, and, unless the person wants them kept, closes the tabs it created before finishing.
  3. Claude never reuses tab IDs remembered from an earlier or different session. If a tool reports that a tab does not exist or is invalid, or the person closes a tab, or a navigation error occurs, Claude calls tabs_context_mcp again for fresh tab IDs.

Site permissions

Claude in Chrome acts on a site only once the person has allowed it; depending on their settings the person may be prompted per site, in the extension or in the app. When a tool call is waiting on or refused that permission, Claude tells the person and waits for them to allow it rather than working around it. A site the person declines is their decision; Claude moves on.

Recording a GIF

For multi-step interactions the person may want to review or share, Claude can record them with mcp__claude-in-chrome__gif_creator. Claude captures a few extra frames before and after each action so playback is smooth, and gives the file a meaningful name (for example "login_process.gif").

Reading console output

mcp__claude-in-chrome__read_console_messages reads the page's console. Console output can be verbose, so when Claude is looking for specific entries it passes the pattern parameter (a regular expression), for example pattern "[MyApp]" to keep only the application's own logs.

Alerts and dialogs

Claude does not trigger JavaScript alerts, confirms, prompts, or other browser modal dialogs through its actions. Those dialogs block all further browser events, so the extension stops receiving commands. Instead:

  1. Claude avoids clicking elements likely to raise a confirmation dialog (for example a "Delete" button) unless necessary.
  2. If it must interact with such an element, Claude warns the person first that this may interrupt the session.
  3. Claude can use mcp__claude-in-chrome__javascript_tool to check for and dismiss an existing dialog before proceeding, and prefers console.log plus read_console_messages over alert for debugging.

If a dialog does get triggered and the browser stops responding, Claude tells the person they need to dismiss it manually in Chrome.

Staying on task, and when to stop

Claude stays focused on the specific task and does not wander into unrelated pages. Claude stops and asks the person how to proceed, explaining what it tried and what went wrong, when any of these happen:

  • browser tool calls fail or return errors after 2 or 3 attempts
  • the extension gives no response
  • page elements do not respond to clicks or input, or pages do not load or time out
  • the task turns out to involve unexpected complexity or tangents
  • several approaches have not completed the task

Claude does not keep retrying the same failing action.

Agent
Agent
Agent
Agent

I couldn't connect to your Chrome: the Claude in Chrome extension isn't connected (I tried twice). To fix it:

  1. Install the extension if you haven't: https://chromewebstore.google.com/detail/fcoeoabgfenejglbffodgkkbkcdhcgfn
  2. In Chrome, open the Claude side panel and sign in with the same account as this app.
  3. Keep Chrome open on the DEV tab, then tell me "connected". I'll fill in the post, show you the preview, and click Publish only after your yes.

The finished post is ready in POST.md: the YouTube film is embedded at the top of the Demo section, and nothing is left to fill in. If you'd rather not set up the extension, you can do it yourself in about a minute:

  1. Go to https://dev.to/new.
  2. Click the โ‹ฏ menu โ†’ Basic markdown editor (or paste straight into the editor).
  3. Paste the entire contents of POST.md, including the top --- lines (they set the title and tags).
  4. Click Preview to check the YouTube embed shows, then Publish.

Deadline reminder: Oct 11, 11:59 PM your time.

You

is up now connect

Agent
Agent
Agent
Agent
Agent

The full post is on your clipboard (8,600 characters). If you'd rather publish it yourself:

  1. Open https://dev.to/new in Chrome.
  2. Click inside the editor and press Ctrl+V. The title and tags come with it, from the --- lines at the top.
  3. Click Preview and check the YouTube film shows in the Demo section.
  4. Click Publish.

Or fix the extension sign-in and say "try again", and I'll do the filling-in, with the final Publish click left for your yes.

You

is back now was off now

Agent
Agent
Agent
Agent
Agent

DEV's editor is open in your Chrome and you're logged in. Checking the editor's fields:

Agent
Agent

Found the title, tags and body fields. Putting just the post body (without the title and tag lines) on the clipboard so it pastes cleanly:

Agent
Agent
Agent
Agent
Agent

Only one dash in the body (a "111โ€“127" range). Reading the whole post for AI-sounding phrasing:

Agent
Agent
Agent

That applies to both the post and the README; I'll clean both. The edit script hit a shell quoting error, so I'm saving it as a file and running it from there:

You

humanly writen completely with human tune

Agent

I'll rewrite the whole post from scratch in a natural, first-person voice: short paragraphs, normal sentences, no dashes, no emoji, very little bold. I'll do the README the same way.

Agent
Agent

Checking the new text for any dashes or emoji left, ignoring links and DEV's required first line:

Agent
Agent

Three small fixes left: turn the bullet list into normal sentences, rephrase "hand-me-down", and write the licence name without a dash.

Agent
Agent

The post is clean: no dashes, emoji or bold. Now the README the same way. Its tables also used dash lines, so I'm writing it as plain paragraphs:

Agent
1 message not shown
Agent

The README is pushed and the new post is on the clipboard. Replacing the title and body in the DEV editor:

Agent
Agent
Agent

The title and all four tags are in place. Checking the body was fully replaced, with no leftovers from the first paste:

Agent
Agent

The body is exactly the new version: one copy, with the YouTube and GitHub embeds. Opening DEV's Preview to check how it renders:

Agent
Agent
Agent
Agent
Agent

Screenshots are timing out. That's usually because the tab isn't in front in your Chrome window. I'll check the preview's content directly instead:

Agent
Agent

The preview renders correctly:
- The YouTube film is embedded under Demo.
- The GitHub repo card shows under Code, with the new plain-language README.
- All the sections are in order: What I Built, Demo, Code, How I Built It, What Gemma Got Wrong, Why Does Open Innovation Matter?, Prize Categories.
- Title: "Touch Grass, Not Glass: a camera that only works outside".
- Tags: #devchallenge #hf26challenge #gemma #opensource.

The post is fully filled in and waiting in your Chrome on the DEV tab, in Preview mode. I couldn't take a final screenshot because Chrome reports that tab as hidden, so switch to it to see it. Nothing has been saved or published yet.

One thing to decide before publishing: the "AI Disclosure" button next to Publish. I built this project and wrote the post with you, and DEV asks posts to say when AI helped write them. DEV's own challenge announcement is marked "AI-assisted". I'd recommend ticking it:
- It keeps the entry clean under the rules.
- Judges care about the project and the writing, so it won't hurt you.
- If it came out later that the post hid it, it could cost you the prize.

So, two quick answers:
1. AI Disclosure: should I set it to "AI-assisted"? (Recommended)
2. Publish: shall I click Publish now? Once published it's public on DEV; you can still edit it afterwards. If you'd rather look it over first, I can click Save Draft instead.

You

yes set ai disclosure and publish

Agent
Agent
Agent
Agent
Agent
Agent

The AI disclosure now shows "AI: Some AI". Publishing:

Agent
Agent
Agent

Published. Checking that the live post looks right:

Agent
Agent
Agent

Your message arrived just after the post went live. I'd already clicked Publish following your earlier "yes set ai disclosure and publish", so the post is public now:

https://dev.to/raphelevator/touch-grass-not-glass-a-camera-that-only-works-outside-2268

What's live: the title, four tags, the "AI-assisted" label, the YouTube film, the GitHub card, and all seven sections. It's only been up a minute or two, so this is easy to handle either way:

  • Review it as it is. It's open in your Chrome tab. Tell me anything to change, or click Edit on the post. DEV lets you edit after publishing, and edits go live straight away.
  • Unpublish it while you review. I can switch it back to a draft so nobody sees it, then republish once you're happy. Unpublishing is DEV's own setting, nothing is lost, and the deadline is still Oct 11.

Do you want me to unpublish it to draft now?

You

so whats left here

<pasted_content id="9ee1">
Hacktoberfest Week 1 "Touch Grass" โ€” Plan
Context
User wants to enter the DEV Hacktoberfest Open-Source AI Challenge, Week 1 (Touch Grass). Deadline Oct 11, 11:59 PM (local time) โ€” ~5 days from today (Oct 6). Project folder touch glass is empty.
What they actually need (there is no "form")
Submission = publish a DEV post using their template, tags devchallenge, hf26challenge. Post must contain:

  1. What I Built โ€“ what it does, who it's for, how it gets people outside
  2. Demo โ€“ deployed link or video
  3. Code โ€“ public GitHub repo (embed it)
  4. How I Built It โ€“ which open-weight model / open-source framework / local inference
  5. Why Open Innovation Matters โ€“ what open made possible that a closed API wouldn't (offline, privacy, cost, fine-tuning)
  6. (optional) Agent session via DevRelay; Prize categories list

Judging: writing quality weighted most, then theme fit (open AI at the core + gets people outside), creativity, technical execution, partner tech. Bonus: actually use it outside and report how it went. Must be a brand-new project.
Recommended idea: "Touch Grass, Not Glass"
A screen-minimal, offline-first PWA where open-weight AI refuses to let you stay on the screen:

  • Gives you one short field quest tuned to season/time/weather ("find a leaf with something living on it", "a bird you can hear but not see").
  • Screen then goes dark โ€” only a compass glyph + quest line. Spoken via open-source TTS (Piper / browser speech).
  • You snap one photo; an open-weight vision model (Gemma 3 / Gemma 3n) verifies the find on-device/locally and writes a 2-line field note.
  • Finds become a "pressed leaf" field journal โ€” the only rich screen, viewed later at home.
  • Metric shown is "minutes away from the screen", not streaks/likes.
  • Privacy: photos + GPS never leave the device โ†’ strong "why open" story.

Prize targets: Overall + Best Use of Gemma (featured, $200). Optional: Render (hosting the PWA shell).
Build steps (once approved)

  1. Scaffold PWA (Vite + vanilla/React) in touch glass/; offline service worker.
  2. Inference: Ollama + gemma3 vision locally (demo) with browser fallback (Transformers.js/WebGPU) if hardware allows.
  3. Quest generator prompt + verifier prompt; dark "field mode" UI; journal page.
  4. Push to public GitHub repo, deploy shell (Render/GitHub Pages), record demo video outside.
  5. Draft DEV post in touch glass/POST.md following template. Then open the DEV template in the browser (user must be logged in), fill in the editor, show the user the final preview, and click Publish only after an explicit "yes" in chat.

Decisions

  • Concept: Touch Grass, Not Glass
  • Hardware: NVIDIA GPU PC โ†’ Ollama + gemma3 (4B/12B vision) locally; PWA calls the local Ollama API
  • Publishing: Claude fills the DEV post and asks for a final confirmation before Publish
  • User still needs to: take the app outside for a real photo/demo video (bonus points), and be logged into DEV + GitHub

Verification
Run app locally, complete a quest with a real outdoor photo, confirm verification works with network disabled.
</pasted_content id="9ee1">

and does it fit in on this details

<pasted_content id="9ee1">
recieved this mail
Hey there,
Week 1 of the Hacktoberfest Open-Source AI Challenge is officially live!
This week's theme is Touch Grass: build something with open-source AI at its core that gets people off the screen and into the world. Hiking, gardening, birding, run clubs, fall foliage: if it gets someone outside, it counts.
This year's Hacktoberfest is all about open-source AI and open-weight models. To participate, build a brand-new project and write about it on DEV. You can run an open-weight model, build on an open-source agent framework, run inference locally, or all three. They most important part? Tell us why open innovation matters for what you built.
TAKE ME TO THE CHALLENGE
Free credits: several partners are giving participants credits and promo codes, including Tinker, Render, Backboard, and ElevenLabs. Claim yours at hacktoberfest.com/my.
Winners will be announced the week of October 12.
GOOD LUCK!
now the details
Skip to content
Powered by Algolia
Create Post21

Join the Hacktoberfest Open-Source AI Challenge: Touch Grass! $2,450 in Prizes Across 17 Winners. - DEV Community
8Jump to Comments0SaveBoost
Jem for The DEV Team
Posted on Oct 5โ€ขAI-assisted
234337
Join the Hacktoberfest Open-Source AI Challenge: Touch Grass! $2,450 in Prizes Across 17 Winners.
#devchallenge#hf26challenge#hacktoberfest#softwaredevelopment
Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission ๐ŸŒฟ
Week 1 of our five Hacktoberfest DEV Challenges starts today! Running through October 11, the Hacktoberfest Open-Source AI Challenge: Week 1 gives you a full week to build.
**This year's Hacktoberfest is all about building brand-new projects with open-source AI and open-weight models. Here's everything you need to know about Hacktoberfest 2026.
Missed the Hacktoberfest Weekend Challenge? No problem. Every challenge is a fresh start, so you're competing on the same footing as everyone else.
This week, we'll select one overall winner and a winner in each of our 16 partner categories. See all five challenges and every partner category on the HF26 DEV Challenge Hub.
Let's get to it!
This week's theme: Touch Grass
Build something with open-weight models or open-source AI that gets people off the screen and into the world.
That can mean running an open-weight model, building on an open-source agent harness or framework, running inference locally, or all three. Whatever you pick, the open pieces should be what makes your project work.
Hiking, gardening, birding, run clubs, fall foliage: if it gets someone outside, it counts. The best builds here should make the screen the shortest part of the experience. A few ideas to get you going:

  • A bird call identifier that works on the trail with no signal
  • A garden planner that tells you what to plant this week based on your local frost dates
  • A run club route builder that finds the best fall foliage near you

In your post, tell us why open innovation matters for what you built. Does it run on a phone in the backcountry with no internet? Keep someone's location data off a server they don't control? Let you fine-tune, swap models, or change how your agent behaves? Cost nothing to run? Tell us where your open-based approach worked better than a closed one.
Bonus points if you take it outside, use it, and tell us how it went.
Touch Grass Submission Template
Prize Categories
Alongside our overall winner, we have 16 prize categories for projects that use a specific partner's technology. You don't need to use any of these to win the overall prize, but if you've been curious about any of this tech, this is a great excuse to give one a try. Full descriptions are on the hub.
Featured categories:

Partner categories:

Pro Tip: Partner category winners come from a smaller pool of submissions, so your odds are meaningfully higher.
Note: One project can enter every category it genuinely uses, but you can only win once per challenge, and we'll aim to celebrate as many different builders as possible across the month.
Free credits: several partners are giving participants credits and promo codes, including Tinker, Render, Backboard, and ElevenLabs. Claim yours at hacktoberfest.com/my.
A huge thank you to our partners for making these prizes possible!
Judging Criteria
This is DEV, so your write-up matters most.

  • Writing Quality (weighted most heavily): Is the post clear and engaging? Does it explain what you built, who it's for, and why open innovation matters?
  • Relevance to the Prompt and Theme: Is open-source AI or open-weight models at the core of the project? Does it get people off the screen and into the world?
  • Creativity: Is it an original idea, or a fresh take on a familiar problem?
  • Technical Execution: Does it work, and is it well built?
  • Use of Partner Technology (optional): If you're entering a partner category, does the project use that technology in a meaningful way?

Show your work. We'd love to see how you built it. Save your agent session with DevRelay and embed it in your post, or link to it. It's optional, but it helps the judges understand your process.
Prizes

  • Overall winner (1): $250 USD, a DEV++ membership, and an exclusive DEV badge
  • Featured category winners (6): $200 USD and an exclusive DEV badge each
  • Partner category winners (10): $100 USD and an exclusive DEV badge each

All participants with a valid submission will receive a completion badge.
How To Participate
Publish a post on DEV using the submission template below. Tell us what you built and how it gets people outside, show us a demo, and explain why open innovation matters for what you built.
Touch Grass Submission Template
Please review our judging criteria, rules, guidelines, and FAQ page before submitting so you understand our participation guidelines and official contest rules, such as eligibility requirements.
Need Help?

Important Dates

  • October 5: Hacktoberfest Open-Source AI Challenge: Week 1 begins!
  • October 11: Submissions due at 11:59 PM PDT
  • Week of October 12: Winners announced

Week 2 launches Monday, October 12 with a brand-new theme. Follow #hf26challenge so you don't miss the reveal.
Questions about the challenge? Drop them in the comments below.
Happy Hacktoberfest, and good luck!
Top comments (8)
Subscribe
SubmitPreview
Ariba Sayed
โ€ขOct 5
Excited!
3 likesLikeReply
adriens
โ€ขOct 5
First benefit of this Hackathon, I used Kaggle and its free GPUs in a brand new way, will make me more productive in my next projects
1 likeLikeReply
Divyansh Goyal
โ€ขOct 5
Excited !!
1 likeLikeReply
0xGozie
โ€ขOct 5
Back to work
1 likeLikeReply
Lamanirevegrand
โ€ขOct 5
Oh great, another work week...๐Ÿ˜
1 likeLikeReply
Abubakar Ahmed
โ€ขOct 5
Since the submission deadline is 11 October 2026 at 11:59 PM PDT (which corresponds to 12 October 2026 at 11:59 AM PKT), could you please confirm if we can submit by our local Pakistan time? Thanks
LikeReply
Jem The DEV Team
โ€ขOct 5
Yes, everyone submits according to their corresponding local time!
3 likesLikeReply
Code of Conduct โ€ข Report abuse
The DEV Team
Following
The hardworking team behind DEV โค๏ธ
Want to contribute to open source and help make the DEV community stronger?
The code that powers DEV is called Forem and is freely available on GitHub.
You're welcome to jump in!
Contribute to Forem
More from The DEV Team
Join the Hacktoberfest Weekend Challenge: Build for a Friend! $2,450 in Prizes Across 17 Winners. Submissions Due October 5 at 6:59 AM UTC.
#devchallenge #weekendchallenge #hf26challenge #hacktoberfest
Congrats to the DEV Weekend Challenge: Generosity Edition Winners!
#devchallenge #weekendchallenge #hackathon #programming
Hacktoberfest 2026 DEV Challenges: Five Challenges, One Prompt, a New Theme Every Week
#devchallenge #hf26challenge #hacktoberfest #opensource
DEV Community โ€” A space to discuss and keep up software development and manage your software career

Built on Forem โ€” the open source software that powers DEV and other inclusive communities.
Made with love and Ruby on Rails. DEV Community ยฉ 2016 - 2026.
access this link on my broswer to fill the submision form
https://dev.to/devteam/join-the-hacktoberfest-open-source-ai-challenge-week-1-touch-grass-2450-in-prizes-across-17-4pom?bb=264623
now make it make more sense and win a price with creativity that is top notch
what exactly do they needs
</pasted_content id="9ee1">

and how many tracks it covers?

Agent

Here's where things stand against the challenge rules and our plan.

Does it fit the challenge? Yes, every required part is in the published post:

Requirement Status
Brand-new project โœ… Built from scratch this week
Open-weight AI at the core โœ… Gemma 3 running locally through Ollama writes the quests and checks the photos
Gets people off the screen โœ… The screen goes dark outside; the only score is time with the screen off
Post with tags devchallenge, hf26challenge โœ… Published
What I Built / Demo / Code / How I Built It / Why Open Innovation Matters โœ… All there, with the live site, the YouTube film and the GitHub embed
Prize Categories section โœ… Best Use of Gemma
Before the deadline (Oct 11) โœ… Published Oct 6

What's left (all optional, but they help you win):

  1. The real walk (bonus points). The rules say "bonus points if you take it outside, use it, and tell us how it went". We haven't done this yet. A 15-minute daytime walk with the app on your phone, plus a few honest lines from you, and I'll add a short section to the post.
  2. A real phone test. We've never run the full loop on your actual phone outside (load film โ†’ walk โ†’ export โ†’ develop on the PC), and we haven't confirmed field mode works in airplane mode. The walk in step 1 would test both.
  3. "My Agent Session" (optional, "judges love it"). This means sharing a record of this build session through DevRelay. It would make public that I built most of this with you. The post already says "AI-assisted", so that's consistent, but it's your call.

Where we changed the original plan, and why:
- The plan assumed an NVIDIA GPU. Your PC doesn't have one, so photos take about 2 minutes each. That's what led to the "develop at home like film" idea, which became the strongest part of the post.
- We skipped Vite, Render, and the in-browser AI fallback. The site runs on Vercel with no build step instead.
- The plan's demo video was supposed to be filmed outside. We made the voxel cartoon instead, with sample photos, and the post says so openly.

How many prize tracks does it cover? Two:
1. Overall winner ($250): every entry competes for this.
2. Best Use of Gemma ($200, a featured category): a strong fit, since Gemma does all the AI work.

The other categories (Render, ElevenLabs, GitHub Copilot and so on) only count if the project really uses that technology, and it doesn't. We could deploy to Render to qualify, but hosting a static site is a weak "meaningful use" and could look like box-ticking. You can only win once per challenge anyway, so I'd stay with these two.

My recommendation: do the short walk this week, send me your photos and a few honest sentences about it, and I'll add an "I took it outside" section to the post. That covers the bonus points and the real phone test together.

You

we should do all this

<pasted_content id="9ee1">
What's left (all optional, but they help you win):

  1. The real walk (bonus points). The rules say "bonus points if you take it outside, use it, and tell us how it went". We haven't done this yet. A 15-minute daytime walk with the app on your phone, plus a few honest lines from you, and I'll add a short section to the post.
  2. A real phone test. We've never run the full loop on your actual phone outside (load film โ†’ walk โ†’ export โ†’ develop on the PC), and we haven't confirmed field mode works in airplane mode. The walk in step 1 would test both.
  3. "My Agent Session" (optional, "judges love it"). This means sharing a record of this build session through DevRelay. It would make public that I built most of this with you. The post already says "AI-assisted", so that's consistent, but it's your call. </pasted_content id="9ee1">
Agent

Let's do all three. Items 1 and 2 need you outside with your phone, so first I'll test everything I can from here and prepare a simple walk guide. Then I'll look into DevRelay for item 3.

Testing field mode with the network fully off, plus the export โ†’ import โ†’ develop loop:

Agent
Agent
Agent
Agent
Agent
Agent
Agent
Agent

DEV's upload page parses and scrubs the session file in your browser, and lets you choose which parts to include before saving. Checking our session file for anything private first:

2 messages not shown
Agent
Agent
Agent

The code parses fine. Quick real test: phone offline, "Streets" picked:

1 message not shown
Agent

The easier quests are live. A test roll for "Streets" gave: a weed in a crack in the pavement, a tree beside a road, a leaf with a hole in it, something green smaller than your thumb, and so on. Now here are your guides.

๐Ÿ“ฑ Your walk: step by step

๐Ÿ  At home, before you go (2 minutes, with Wi-Fi on)

  1. On your phone, open Chrome and go to touch-grass-not-glass.vercel.app/app.html
  2. Tap the โ‹ฎ menu (top right) โ†’ Add to Home screen. Now it works even with no internet.
  3. Open the app from the new icon on your home screen.
  4. Tap where you're going: Streets, Park, Gardenโ€ฆ Pick the one closest to the truth.
  5. Tap Load film โ†’ then Start walking.
  6. Turn your volume up a little; it reads each mission out loud.
  7. Bonus (good for the story): turn on Airplane mode. You'll prove it works with no signal.

๐ŸŒณ Outside (15โ€“20 minutes)

  1. Read the mission. Lock your phone and put it in your pocket. (The less the screen is on, the better your score.)
  2. Walk slowly and look around.
  3. Found it? Unlock โ†’ tap I FOUND IT โ†’ the camera opens โ†’ take one photo โ†’ tap โœ“ / OK.
  4. A new mission appears. Phone back in your pocket.
  5. Can't find it around you? Just tap skip this one. Totally fine, and it's honest to say so in the post.
  6. After the last one you'll see "Walk complete" with your minutes and glass-free %. ๐Ÿ“ธ Screenshot this screen (Power + Volume down).

๐Ÿก Back home

  1. Turn Airplane mode off. Tap Open the roll โ†’ Export. A file like roll-2026-10-07-ab12.json saves to your phone's Downloads.
  2. Send that file to your computer: WhatsApp it to yourself, email it, or use a USB cable. Save it on the PC.
  3. Tell me where you saved it. I'll import it and let Gemma develop your photos on your computer (about 2 minutes per photo), then show you the results.

โœ๏ธ Then tell me, like you're texting a friend

  • Where did you walk, and for how long? What was your glass-free %?
  • Your favourite find?
  • Which missions did you skip, and why?
  • Did Gemma get anything wrong when it developed them?
  • One thing you noticed that you'd usually walk past.
  • Send me 2โ€“3 phone screenshots (a dark mission screen, and the "Walk complete" screen).

I'll turn that into a short, honest "I took it outside" section and add it to the post. That's the bonus points.


๐Ÿค– Agent session (2 minutes, at your computer, do it after the walk so it includes everything)

  1. In Chrome, open dev.to/agent_sessions/new
  2. Title: Building Touch Grass, Not Glass with Claude Code ยท Agent Tool: Claude Code
  3. Click Session File to browse. In the file picker's address bar, paste the path below and press Enter.
  4. Click Parse File. DEV cleans it up in your browser, then lets you untick parts. Your email address appears in a few git commands, so untick anything showing it, plus anything else you don't want public.
  5. Click Save. It gives you a session ID. Send it to me, and I'll add a "My Agent Session" section to the post.
[REDACTED]\.claude\projects\C--Users-Admin-Desktop-touch-glass\fa682714-f507-44b2-835d-21de5eebe1ed.jsonl

Deadline: Oct 11, 11:59 PM. Any daylight day before then works for the walk. ๐ŸŒฟ

You

whats this for early

npm start

you didnt talk about it again

and for the things you want me to do and the walk guide, also attach link on it for easy access

Agent

What npm start is for

It's only for developing the photos on your computer.

  • The website on your phone (Vercel) handles the walk.
  • Gemma lives on your computer, and the public website can't reach it.
  • npm start runs a copy of the app on your computer, at http://localhost:5173. That copy can talk to Gemma and develop your photos.

You probably don't need to type it. I already have it running while this chat is open: http://localhost:5173/app.html. If you ever do need it yourself, open a terminal in the touch glass folder and run the command below, then open the localhost link. (Ollama, which runs Gemma, starts by itself on Windows.)

npm start

๐Ÿ“ฑ Your walk, with links

๐Ÿ  At home, before you go (Wi-Fi on)

  1. On your phone, open ๐Ÿ‘‰ touch-grass-not-glass.vercel.app/app.html
  2. Chrome โ‹ฎ menu โ†’ Add to Home screen, then open the app from that icon.
  3. Tap where you're going (Streets / Park / Garden / Trail / Water).
  4. Tap Load film โ†’ Start walking. Volume up a little.
  5. Bonus: turn on Airplane mode.

๐ŸŒณ Outside (15โ€“20 min)

  1. Read the mission โ†’ lock the phone, pocket it, walk and look.
  2. Found it โ†’ unlock โ†’ I FOUND IT โ†’ take one photo โ†’ โœ“.
  3. Can't find it โ†’ skip this one.
  4. At the end, screenshot the "Walk complete" screen.

๐Ÿก Back home

  1. Airplane mode off โ†’ Open the roll โ†’ Export. A roll-โ€ฆ.json file saves to Downloads.
  2. Send the file to your PC (WhatsApp to yourself, email, or USB) and save it, for example in Downloads.
  3. Tell me where it is, and I'll develop it at ๐Ÿ‘‰ localhost:5173/app.html (Journal โ†’ Import a roll โ†’ Develop). Or do it yourself with those same three taps.

โœ๏ธ Text me

Where you walked, how long, your glass-free %, your favourite find, what you skipped, anything Gemma got wrong, and one thing you noticed. Plus 2โ€“3 screenshots. I'll add it to ๐Ÿ‘‰ your DEV post.


๐Ÿค– Agent session (after the walk, on your computer)

  1. Open ๐Ÿ‘‰ dev.to/agent_sessions/new
  2. Title: Building Touch Grass, Not Glass with Claude Code ยท Agent Tool: Claude Code
  3. Click Session File, paste the path below into the file picker's address bar, and press Enter.
  4. Click Parse File, then untick any part that shows your email or anything private.
  5. Click Save, then send me the session ID. I'll add it to the post.
[REDACTED]\.claude\projects\C--Users-Admin-Desktop-touch-glass\fa682714-f507-44b2-835d-21de5eebe1ed.jsonl

Deadline: Oct 11, 11:59 PM ๐ŸŒฟ

You

<pasted_content id="9ee1">
Session File
Drop your session file here or click to browse
Supports .jsonl and .json files
Where to find your session files
Claude Code
~/.claude/projects/<project>/*.jsonl
Codex (OpenAI)
~/.codex/sessions/YYYY/MM/DD/*.jsonl
Gemini CLI
~/.gemini/tmp/session-*.json
OpenCode
Run opencode export <session-id> > opencode-session.json, then upload the exported file.
Pi
~/.pi/agent/sessions/<project>/*.jsonl
GitHub Copilot
~/.copilot/session-state/<session-id>/events.jsonl
Parse File
DEV Community โ€” A space to discuss and keep up software development and manage your software career

Built on Forem โ€” the open source software that powers DEV and other inclusive communities.
Made with love and Ruby on Rails. DEV Community ยฉ 2016 - 2026.
</pasted_content id="9ee1">

Agent

You're on the right page. The tricky bit is that the .claude folder is hidden, so you won't see it by clicking around. Easiest way:

  1. Click "Drop your session file here or click to browse". A Windows file window opens.
  2. At the bottom of that window there's a "File name:" box. Click in it.
  3. Paste this whole line into it:
[REDACTED]\.claude\projects\C--Users-Admin-Desktop-touch-glass\fa682714-f507-44b2-835d-21de5eebe1ed.jsonl
  1. Press Enter. The file is now selected (about 20 MB).
  2. Session Title: Building Touch Grass, Not Glass with Claude Code ยท Agent Tool: Claude Code
  3. Click Parse File.
  4. On the next screen, look through the parts and untick anything showing your email ([REDACTED]) or anything else you'd rather keep private.
  5. Click Save, then send me the session ID or link it shows. I'll add a "My Agent Session" section to your post.

If the File name trick doesn't work, paste just the folder part ([REDACTED]\.claude\projects\C--Users-Admin-Desktop-touch-glass) into the address bar at the top of the file window, press Enter, and pick the file starting with fa682714.

Prize Categories

Best Use of Gemma. Gemma does all the AI work here: Gemma 3 on my laptop through Ollama, and Gemma 4 in the online darkroom, both writing the quests and developing the photos from the same prompts, with structured output.

Sample photos from Wikimedia Commons, Creative Commons licensed, by Wilfredor, Dietmar Rabich, Malene Thyssen, Holger Krisp, Charles J. Sharp and Ermell. Voices by Piper. Film made with Three.js. Music written in code.

Top comments (0)