"Touch Grass. Literally."
A privacy-first, offline-capable outdoor quest generator powered by local open-weight AI.
GrassQuest AI is a privacy-first outdoor activity generator built specifically for the Hacktoberfest 2026 "Touch Grass" challenge.
The goal is simple:
Use open-source and open-weight AI to encourage people to spend LESS time on their screens and MORE time outdoors in nature.
Unlike conventional AI tools that draw users deeper into infinite screen scrolling and digital chats, GrassQuest AI uses AI as a brief launchpad. It generates a personalized real-world micro-quest (e.g., 20 minutes of nature observation or a mindful walking walk) and then explicitly instructs you to put your phone away and step outside.
The AI interaction is the shortest part of your experience.
Modern AI applications and social media platforms are optimized for screen retention, endless doomscrolling, and perpetual device engagement, leading to digital fatigue and disconnect from physical nature.
GrassQuest AI inverts the modern app paradigm:
gemma3:4b, gemma:2b, llama3.2:1b, mistral). 0 β 499 pts: π± 500 β 999 pts: πΏ 1000 β 1999 pts: π³ 2000+ pts: π² LocalStorage.
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | React 18 + Vite | Fast, modern, responsive UI |
| Icons | Lucide React | Nature-inspired clean vector icons |
| Styling | Vanilla CSS Design System | Glassmorphism, custom tokens, zero heavy frameworks |
| Backend | Python + FastAPI | High-performance async API server |
| Local AI | Ollama API | Inference engine for open-weight models |
| Storage | Browser LocalStorage |
Zero-tracking local data persistence |
flowchart TD
User([π€ User]) -->|1. Select Time & Activity| ReactUI[πΏ React + Vite Frontend]
ReactUI -->|2. POST /generate-quest| FastAPI[β‘ FastAPI Backend]
FastAPI -->|3. Local HTTP API| Ollama[π¦ Ollama Local Engine]
Ollama -->|4. Inference| Model[π€ Gemma / Open-Weight AI]
Model -->|5. Structured JSON| FastAPI
FastAPI -->|6. Quest Payload| ReactUI
ReactUI -->|7. "π± Put Phone Away"| User
User -->|8. Go Outdoors & Touch Grass| Outdoor[π³ Physical Nature]
In an era dominated by centralized, proprietary cloud AI APIs, GrassQuest AI stands for open innovation:
OLLAMA_MODEL=gemma3:4b to | Feature | Closed Cloud AI (Traditional) | GrassQuest AI (Open Innovation) |
|---|---|---|
| Data Flow | User β Internet β Cloud API β AI | User β Local Machine β Local AI |
| Internet Required? | β Yes (Always) | β
No (Runs 100% Offline) |
| API Costs | β Per-token charges | β
Free forever |
| Model Swappability | β Locked to provider | β
Swappable via .env |
| User Privacy | β οΈ Remote data logging | π 100% On-Device |
Ensure you have installed:
Start Ollama and pull your preferred open-weight model:
ollama serve
ollama pull gemma3:4b
git clone https://github.com/guunda/GrassQuest
cd grassquest-ai
cd backend
py -3 -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt
Copy-Item .env.example .env
uvicorn main:app --reload --port 8000
Backend runs at http://localhost:8000
Open a new terminal window:
cd grassquest-ai/frontend
npm install
npm run dev
Frontend runs at http://localhost:5173
http://localhost:5173 in your web browser.
If you are running the project on a machine where Ollama is not installed or the model is still down, simply click the Demo Mode toggle switch in the top header.
GrassQuest AI will generate rich, deterministic outdoor quests simulated locally, allowing judges to test the entire quest workflow, countdown timer, points, and rank progression immediately!
llava).
This project is open-source software licensed under the MIT License.
Built with β€οΈ for Hacktoberfest 2026 "Touch Grass" Challenge.