This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
Touch Grass AI is an outdoor mission planner that gets people off their screens and into the world.
Most of us know we should go outside more, but "go for a walk" is easy to ignore. Touch Grass AI turns that vague intention into a small, concrete mission: you tell it how much time you have, what your surroundings are like and how you feel, and a local AI model plans a short outdoor mission you can start right now.
It is for anyone who spends too much of the day at a screen: students, developers, remote workers, and anyone who keeps saying "I'll go out later".
Key ideas:
- Missions, not generic advice: short, specific outdoor tasks instead of a vague nudge.
- Private by design: the AI runs on the same machine as the app. Nothing you type is sent to a closed AI service.
- Simple and fast: a clean interface that takes seconds to use, so the app does not become one more reason to stay on the screen.
Demo
Touch Grass AI
A calm, local-first outdoor activity planner. Pick the time, place, energy level, weather, and kind of activity that fits today to get three small, practical ideas. No account, subscription, API key, or external AI service is required.
Requirements
- Node.js 18 or newer
- Optional: Ollama with a model downloaded locally
The app has no npm dependencies. Its built-in planner works without Ollama or an internet connection once the page has been opened and its static files cached.
Start the app
From this folder, run:
npm start
Open http://127.0.0.1:3000. The server binds to loopback by default and serves the site only on your computer. Use Ctrl+C in the terminal to stop it.
Optional: enable local AI
-
Install Ollama and download a model, for example:
ollama pull llama3.2 -
Start Ollama. Its default local API is
http://127.0.0.1:11434. -
Copy
.env.exampleto.envif you want to change the model…
Code
Touch Grass AI
A calm, local-first outdoor activity planner. Pick the time, place, energy level, weather, and kind of activity that fits today to get three small, practical ideas. No account, subscription, API key, or external AI service is required.
Requirements
- Node.js 18 or newer
- Optional: Ollama with a model downloaded locally
The app has no npm dependencies. Its built-in planner works without Ollama or an internet connection once the page has been opened and its static files cached.
Start the app
From this folder, run:
npm start
Open http://127.0.0.1:3000. The server binds to loopback by default and serves the site only on your computer. Use Ctrl+C in the terminal to stop it.
Optional: enable local AI
-
Install Ollama and download a model, for example:
ollama pull llama3.2 -
Start Ollama. Its default local API is
http://127.0.0.1:11434. -
Copy
.env.exampleto.envif you want to change the model…
How I Built It
The project is a full-stack web app built around a locally running open-weight model, with no closed AI APIs anywhere in it.
- Frontend: React + Vite + Tailwind CSS, with Lucide icons.
- Backend: Node.js + Express. The server receives the user's input, builds the prompt and returns the generated mission.
- AI engine: node-llama-cpp runs an open-weight model (Llama family, GGUF format) directly inside the Node.js server. There is no separate AI service to install or manage.
The path to this setup took a few steps. I started with Ollama as the AI engine, then tried running a model in the browser with WebLLM, and finally moved everything to Node.js so the whole app runs from one server with one npm workflow. That keeps setup simple for contributors, and open-source AI stays at the core of the project.
About AI tools: the app's runtime AI is open-weight and runs locally. I also used an AI assistant (Claude, which is not open-weight) to help generate the first version of the project code.
Why Does Open Innovation Matter?
A mission planner only works if people actually use it, and people are more willing to share how they feel and where they are when the data stays with them.
- Privacy: because the model is open-weight and runs locally through node-llama-cpp, your mood, schedule and surroundings never leave your machine. A closed API would require sending them to someone else's servers.
- No keys, no bills, no rate limits: anyone can clone the repo and run it for free, including students without a credit card.
- Works offline: once the model is downloaded, the app does not need an internet connection to plan a walk.
- Swap the model: because the engine reads standard GGUF files, contributors can try a smaller or larger open model, or one fine-tuned for a different region or language, with a small config change.
- Hackable by anyone: the prompts, the server and the UI are all open, so the community can make missions friendlier, funnier or more local.
Top comments (0)