Start a quest → put the phone away → go outside.
An open-source AI that gives you a reason to go outside. Tell it how much time you have and what you like, and it generates a short outdoor quest. The screen should be the shortest part of the experience.
Built for the Hacktoberfest Open-Source AI Challenge, Week 1: Touch Grass. Read the write-up on DEV.
- ⏱️ Quests sized to the time you have (5 to 240 minutes)
- 🎯 Pick interests: nature, fitness, mindful, explore
- 🤖 Quests written by a local open-weight Gemma model via Ollama
- ✅ Tick off steps as you complete them
- 🛟 Built-in fallback generator, so it works even without Ollama
React (Vite) ──POST /api/quest──▶ Node server ──▶ Ollama (Gemma)
client/ server.js quest.js
└── falls back to a built-in generator
The response includes a source field (gemma:2b or fallback) so you can see which one produced the quest.
Requirements: Node 18+ and, optionally, Ollama.
git clone https://github.com/jhashivam0022/ai-outdoor-quest.git
cd ai-outdoor-quest
# optional, for AI-generated quests
ollama pull gemma:2b
npm run install:client
npm run build
npm startOpen http://localhost:3000.
Run these in two terminals:
npm run dev:server # API on :3000
npm run dev:client # React on :5173, proxies /api to :3000npm test| Variable | Default | Description |
|---|---|---|
PORT |
3000 |
Server port |
OLLAMA_URL |
http://localhost:11434 |
Where Ollama is running |
GEMMA_MODEL |
gemma:2b |
Any Gemma model you have pulled |
Example: GEMMA_MODEL=gemma3 npm start
POST /api/quest
{ "minutes": 30, "interests": ["nature", "mindful"] }Response:
{
"title": "30-minute outdoor quest",
"source": "gemma:2b",
"steps": [{ "text": "Find three different types of trees", "minutes": 10 }]
}quest.js quest generation (Gemma via Ollama + fallback)
server.js API and static file server
client/ React + Vite frontend
test/ unit tests
Contributions are welcome. This is a Hacktoberfest project 🎃
- SerpApi: live local context (weather, parks, events)
- MongoDB Atlas: quest history and preferences
- ElevenLabs: voice guidance so you don't need to look at the screen
- Temporal: durable, resumable quests
- Sentry: AI agent tracing
- DigitalOcean: deployment
- Better quest prompts for small models
- Fork the repo and create a branch.
- Make your change and run
npm test. - Open a pull request describing what you changed.
Parts of this codebase were written with AI assistance (Claude).