DEV Community

AKSHAT JAIN
AKSHAT JAIN

Posted on

TouchGrass 🌿 — Turning Open-Weight AI into Real-World Adventures

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

GitHub logo 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
Enter fullscreen mode Exit fullscreen mode

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=stub uses the curated deterministic generator. It is the default for local development and tests.
  • AI_PROVIDER=groq uses Groq’s OpenAI-compatible chat completions API and openai/gpt-oss-20b by default. Set GROQ_API_KEY on the server. The key must never use a VITE_ 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)