DEV Community

Shubham Balwan
Shubham Balwan

Posted on

TrailMate: AI That Tells You to Put Your Phone Away

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass

🌿 TrailMate β€” AI That Tells You to Put Your Phone Away

What I Built

TrailMate is an AI-powered outdoor adventure companion designed to get people away from their screens and into the real world.

The user chooses things like:

  • Location
  • Activity
  • Available time
  • Difficulty
  • Interests

TrailMate then creates an adventure with outdoor missions, things to notice, packing suggestions, safety reminders, and most importantly, a phone-away rule.

The idea is:

PLAN β†’ GO OUTSIDE β†’ OBSERVE β†’ COME BACK β†’ REFLECT

The screen is intentionally the shortest part of the experience.

After returning, the user can record what they experienced and create an Adventure Journal.

The goal isn't to make another AI app that people spend hours using.

The goal is to use AI for a few seconds, then go outside.


Demo

πŸŽ₯ Watch the TrailMate Demo

The demo shows:

  1. Planning an adventure
  2. Generating an adventure using local AI
  3. Receiving outdoor missions
  4. Putting the phone away
  5. Returning and reflecting
  6. Creating an Adventure Journal

Code

πŸ’» GitHub Repository

The project is open source.


How I Built It

TrailMate uses an open-weight AI model running locally.

AI Stack

  • Qwen3-0.6B
  • GGUF
  • llama.cpp

The model runs locally through llama.cpp rather than sending the adventure-generation request to a closed cloud AI API.

Application Stack

  • React
  • TypeScript
  • Vite
  • FastAPI
  • llama.cpp
  • Qwen3-0.6B

Architecture


text
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   React + TypeScript β”‚
β”‚      Frontend        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚
           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚       FastAPI        β”‚
β”‚       Backend        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚
           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      llama.cpp       β”‚
β”‚   Local inference    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚
           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚     Qwen3-0.6B       β”‚
β”‚      GGUF model      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Enter fullscreen mode Exit fullscreen mode

Top comments (0)