FitQuest AI 🌿 — Real Quests. Healthier You.
What if your fitness app rewarded you for spending less time on your phone?
FitQuest AI uses local AI to turn outdoor movement into bite-sized quests—then encourages you to put your screen away and enjoy the real world.
This is a submission for the Hacktoberfest Open-Source AI Challenge — Week 1: Touch Grass.
Demo: Video demo / screenshots · Code: GitHub repository
What I Built
FitQuest AI is a privacy-conscious, gamified outdoor fitness app powered by a local open-weight AI model. It is designed to help developers and desk workers step away from their monitors and get outside.
Instead of focusing on endless metrics on a phone, FitQuest AI turns walks, runs, hikes, and cycling sessions into small RPG-style quests. Generate a quest, head outdoors, then return to log your activity, earn XP, unlock achievements—including a “Touch Grass” milestone—and share your progress with friends.
Key Features
- 🌿 AI Quest Generator: Generates structured outdoor challenges tailored to a fitness goal, experience level, and recent activity.
- 💬 Interactive AI Coach: Offers conversational guidance around pacing, recovery, and building consistent habits.
- 🏆 Gamified Progression: Earn XP, level up, track streaks, complete quests, and unlock milestone achievements.
- 📸 Trail Photos & Story Cards: Add outdoor photos to workouts and create shareable story cards for platforms such as WhatsApp, Instagram, and X.
- 🔒 Local AI Inference: Uses Ollama with
qwen2.5:3b, avoiding a dependency on a hosted AI inference API for the core generation workflow.
What Makes FitQuest AI Different?
Most fitness apps encourage you to spend more time looking at your screen. FitQuest AI takes the opposite approach: use AI to plan your next outdoor adventure, then put your phone away and go experience it.
- AI with a purpose: Generate structured, actionable quests instead of generic fitness advice.
- Progress without pressure: XP, levels, streaks, and achievements make consistency rewarding.
- Privacy-conscious by design: Local inference helps keep workout context away from third-party cloud AI inference services.
- Built for exploration: Walking, running, cycling, and hiking become small adventures instead of another task on a to-do list.
Demo
- Video demo / screenshots: Watch the demo
- Source code: GitHub — FitQuest
Tip: Add a screenshot of the dashboard and an example AI-generated quest here if they are available. They help readers quickly understand the experience before watching the video.
Tech Stack
| Component | Technology |
|---|---|
| Backend API | FastAPI |
| Database / ORM | SQLite and SQLAlchemy |
| Frontend | React, Vite, Lucide icons |
| Local AI runtime | Ollama |
| AI model | qwen2.5:3b |
| Data validation | Pydantic |
| Story card rendering | HTML Canvas |
How I Built It
1. Local inference engine
Rather than relying on a hosted AI inference API, the backend connects to an open-weight model (qwen2.5:3b) through Ollama. Pydantic validates the generated structured data before it is used by the application, helping keep AI output predictable.
2. Context-aware coaching
The coach can use workout context, explorer progress, and perceived-effort information to make its responses more relevant. Chat history is stored in SQLite so the application can retain conversation context locally.
3. Deterministic gamification
The language model generates quest content, but important game rules—such as XP rewards, quest completion, levels, streaks, and achievements—are handled by backend logic. This keeps progression consistent rather than asking the model to decide application state.
4. Client-side story cards

The frontend uses an HTML Canvas-based renderer to combine a trail photo, workout stats, and XP details into a shareable image in the browser, without requiring server-side image rendering.
Challenges & Learnings
Building FitQuest AI involved more than connecting a language model to a fitness app.
- Structured AI output: LLM responses can be inconsistent, so I used Pydantic validation to turn generated quest data into typed, predictable objects.
- Running AI locally: Integrating Ollama with a lightweight model makes local inference practical on suitable hardware without a dedicated GPU, though performance depends on the machine.
- Reliable gamification: XP rewards and quest progression are handled by deterministic backend logic instead of being left to the LLM.
- Full-stack integration: I connected a FastAPI backend and SQLite database to a React frontend to bring AI-generated quests and fitness progress into one application.
The biggest lesson was that AI applications need more than a good prompt: they need validation, predictable business logic, and a user experience that makes the AI genuinely useful.
Run It Locally
The project uses a local Ollama model, so the first setup requires downloading the model. Commands below are a starting point; check the repository for the latest project-specific setup instructions.
Prerequisites
- Python 3.12 or a compatible Python version
- Node.js and npm
- Ollama
- Git
1. Clone the repository
git clone https://github.com/neerajsbhandari27/FitQuest.git
cd FitQuest
2. Download the AI model
ollama pull qwen2.5:3b
Make sure Ollama is running before testing AI-powered features.
3. Start the backend
Follow the backend setup instructions in the repository. A typical FastAPI workflow looks like this:
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload
If the repository uses a different dependency file or startup command, follow its current instructions.
4. Start the frontend
In a second terminal, use the frontend directory name as it appears in the repository. For a Vite app, the commands are typically:
cd Frontend
npm install
npm run dev
Open the local URL printed by Vite in your terminal. Check the repository's README for the exact API URL configuration and any additional setup.
Why Does Open Innovation Matter?
Open-source AI is important to FitQuest AI for three reasons:
- Personal data privacy: Workout notes, perceived exertion, and activity history can be sensitive. Local inference can keep that context off third-party cloud AI services.
- Lower ongoing inference costs: Running a local model avoids per-request hosted AI inference charges, although hardware, electricity, and internet access for initial downloads may still have costs.
- More control: Developers can inspect, adapt, and run the AI workflow on their own machines. Core local features can work without an internet connection once dependencies and model files are installed, provided the app does not rely on external services for that workflow.
Open innovation proves that AI doesn't need to keep us trapped in digital feeds—it can be the gentle nudge that helps us disconnect and touch grass.
What's Next?
FitQuest AI is an evolving project. Potential next steps include:
- Smarter personalization: Adapt quests using activity history, difficulty preferences, and consistency over time.
- Richer outdoor adventures: Add themed quest chains, exploration milestones, and multi-day challenges.
- Improved progress sharing: Expand customizable story cards for celebrating achievements with friends.
- Community contributions: Welcome bug reports, documentation improvements, UI enhancements, and new feature ideas.
Contributing
Team: Built collaboratively with @mukesh_kumar_18d186c6e486.
FitQuest AI is open source under the MIT License. Explore the GitHub repository, try it locally, and share feedback or ideas. Before submitting, check the repository for its contribution instructions and existing issues.
Final Thought
Technology should help us live better—not just keep us online longer. FitQuest AI turns a little AI-generated motivation into a reason to step outside, move, explore, and touch grass. 🌱


Top comments (0)