This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
TouchGrass is an AI-powered outdoor activity generator designed to help people spend less time staring at screens and more time exploring the world around them. 🌿
We often want to take a break but end up scrolling through our phones because we don't know what to do. TouchGrass aims to make that decision easier.
Users can choose their mood, available time, energy level, and whether they want to go solo or with others. The app then generates an outdoor adventure tailored to those preferences.
The goal isn't to keep people engaged with another app. It's to help them find a reason to put their phones away and step outside.
I built TouchGrass as a practical experiment in using AI to encourage real-world experiences rather than more screen time.
Demo
🌿 Try the live app: https://touchgrass-gdkp.onrender.com/
The application is deployed on Render and uses Groq for AI inference.
Code
akshat-jjain
/
touchgrass
An open-AI adventure generator that gives you a mission and gets out of your way.
TouchGrass
An AI that wants you to stop using it.
TouchGrass creates short outdoor micro-adventures so the screen is the shortest part of going outside. It is being built for the DEV Hacktoberfest 2026 Week 1 “Touch Grass” challenge.
Local development
Requirements: Node.js 22.12 or later and npm 10 or later.
npm ci
cp .env.example .env
npm run dev
The web app runs at http://localhost:5173; the API runs at http://localhost:3000. Vite proxies /api requests to Fastify. The API health endpoint is GET /health.
Adventure generation
The API supports two server-side providers:
-
AI_PROVIDER=stubuses the curated deterministic generator. It is the default for local development and tests. -
AI_PROVIDER=groquses Groq’s OpenAI-compatible chat completions API andopenai/gpt-oss-20bby default. SetGROQ_API_KEYon the server. The key must never use aVITE_prefix or be placed in browser code.
The Groq generator requests strict JSON Schema output. All provider results…
The project is open source under the MIT license. Feel free to explore the code, share feedback, or contribute improvements!
How I Built It
I built TouchGrass using a TypeScript-based full-stack architecture:
Frontend: React, Vite, and TypeScript
Backend: Fastify and TypeScript
Validation: Zod for shared contracts and structured data validation
AI model: openai/gpt-oss-20b, an open-weight model accessed through Groq
Deployment: Render
The AI is central to the experience. It generates personalized outdoor activity suggestions based on the user's preferences instead of relying exclusively on a predefined list of activities.
The backend validates the generated output and applies safety checks before returning suggestions. I also implemented a deterministic fallback so the application can remain useful when AI generation fails.
API credentials stay on the server rather than being exposed to the frontend.
One of the important design decisions was treating AI output as untrusted data: a generated suggestion must pass validation and safety checks before it reaches the user.
Why Does Open Innovation Matter?
Open innovation matters because developers should have the freedom to understand, experiment with, and adapt the technology powering their applications.
By using an open-weight model, TouchGrass isn't tied exclusively to a closed-model API. The project can explore alternative inference providers, experiment with different models, and evolve its generation pipeline as requirements change.
For this project, open-weight AI made it possible to build a personalized generation experience while keeping the model integration behind a replaceable backend interface.
I'm currently using hosted inference through Groq, so the application still depends on an online service. Local or offline inference is a possible future direction, not a feature I've implemented yet.
For me, the bigger idea is that open AI technology should help developers build useful products—not just demonstrate what a model can say.
Prize Categories
I'm submitting TouchGrass for the Week 1 challenge. I'm claiming render partner prize categories at this stage.
Thanks for organizing this challenge and encouraging developers to build with open-source AI.
🌱 Less scrolling. More exploring. TouchGrass.


Top comments (0)