DEV Community

Pratik
Pratik

Posted on

Bato โ€” Plan at home. Hike offline. Phone in your pocket. ๐Ÿฅพ

What I Built

Bato is an offline-first trail companion PWA.

Upload a GPX file, enter your start time and fitness level, and Bato generates a simple one-page hiking plan with:

  • Distance and elevation gain/loss
  • Highest point and elevation profile
  • Estimated hiking time
  • Sunrise and sunset
  • Latest safe turnaround time
  • Pacing, rest, water, and safety guidance

The goal is simple: plan at home, then put your phone away and hike.

Demo

GitHub: https://github.com/PRDXdotEXE/Bato

Live Demo: https://baato-beige.vercel.app/

Code

Repository: https://github.com/PRDXdotEXE/Bato

How I Built It

Bato is built with:

  • Next.js + TypeScript
  • Tailwind CSS
  • WebLLM
  • Qwen 1.5B Instruct, quantized
  • SunCalc
  • IndexedDB
  • Service Worker / PWA

The GPX is parsed entirely in the browser. Distance, elevation, hiking time, sunrise/sunset, and turnaround time are calculated using deterministic TypeScript.

The local LLM does not calculate these values. It only turns the verified numbers into a short, human-readable hiking plan.

If the model fails to load or the device is too weak, Bato falls back to a deterministic template, so the app always produces a plan.

There is no backend or runtime API dependency. After the initial model download, Bato can work offline.

Why Does Open Innovation Matter?

Using an open-weight model makes local inference possible.

Instead of sending trail data to a remote AI API:

GPX โ†’ Local calculations โ†’ Local LLM โ†’ Hiking plan

Everything stays on the device.

This makes Bato more suitable for hiking, where internet connectivity may be unavailable, while also giving the project freedom to swap and experiment with different open-weight models.

Prize Categories

  • Open-Weight / Open-Source AI
  • Local / On-Device AI
  • Touch Grass / Offline-first

Top comments (0)