Skip to content

About

An open-source AI that creates personalized outdoor quests to get people off their screens and into the real world. 🌿

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌿 AI Outdoor Quest

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.

Features

  • ⏱️ 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

How it works

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.

Getting started

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 start

Open http://localhost:3000.

Development (hot reload)

Run these in two terminals:

npm run dev:server   # API on :3000
npm run dev:client   # React on :5173, proxies /api to :3000

Tests

npm test

Configuration

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

API

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 }]
}

Project structure

quest.js      quest generation (Gemma via Ollama + fallback)
server.js     API and static file server
client/       React + Vite frontend
test/         unit tests

Roadmap

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

Contributing

  1. Fork the repo and create a branch.
  2. Make your change and run npm test.
  3. Open a pull request describing what you changed.

AI disclosure

Parts of this codebase were written with AI assistance (Claude).

License

MIT

About

An open-source AI that creates personalized outdoor quests to get people off their screens and into the real world. 🌿

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages