Bato — 집에서 계획하고, 오프라인으로 하이킹하세요. 주머니 속 휴대폰만 있으면 됩니다.
요약
Bato는 오프라인 환경에 최적화된 트레일 계획 PWA입니다. 사용자가 GPX 파일을 업로드하면, 거리, 고도 프로필, 예상 시간 등 핵심 데이터를 계산하고 이를 로컬 LLM을 이용해 사람이 읽기 쉬운 하이킹 계획으로 변환합니다. 백엔드 의존성 없이 기기 내에서 모든 처리가 가능하여 인터넷 연결이 불안정한 환경에 적합합니다.
핵심 포인트
- 오프라인 우선(offline-first)의 트레일 동반자 PWA입니다.
- GPX 파일 파싱 및 핵심 계산은 결정론적 TypeScript로 수행됩니다.
- 로컬 LLM은 계산된 데이터를 사람이 읽기 쉬운 계획으로 변환하는 역할만 합니다.
- 백엔드나 런타임 API 의존성이 없어 오프라인에서 작동합니다.
제가 만든 것
Bato는 오프라인 우선(offline-first)의 트레일 동반자 PWA입니다.
GPX 파일을 업로드하고 시작 시간과 체력 수준을 입력하면, Bato가 다음 항목들을 포함하는 간단한 원페이지 하이킹 계획을 생성합니다:
- 거리 및 고도 상승/하강량
- 최고점 및 고도 프로필
- 예상 하이킹 시간
- 일출 및 일몰
- 최신 안전 회항 시간(turnaround time)
- 페이스, 휴식, 물, 그리고 안전 가이드
목표는 간단합니다. 집에서 계획하고, 휴대폰을 넣어두고 하이킹하는 것.
데모
GitHub: https://github.com/PRDXdotEXE/Bato
라이브 데모: https://baato-beige.vercel.app/
코드
리포지토리: https://github.com/PRDXdotEXE/Bato
제작 과정
Bato는 다음 기술들로 구축되었습니다:
- Next.js + TypeScript
- Tailwind CSS
- WebLLM
- Qwen 1.5B Instruct, 양자화(quantized)
- SunCalc
- IndexedDB
- Service Worker / PWA
GPX 파일은 브라우저 내에서 완전히 파싱됩니다. 거리, 고도, 하이킹 시간, 일출/일몰, 그리고 회항 시간은 결정론적(deterministic) TypeScript를 사용하여 계산합니다.
로컬 LLM은 이러한 값들을 계산하지 않습니다. 단지 검증된 숫자들을 짧고 사람이 읽기 쉬운 하이킹 계획으로 변환할 뿐입니다.
만약 모델 로드에 실패하거나 기기가 너무 약하면, Bato는 결정론적 템플릿으로 폴백(fallback)하여 앱이 항상 계획을 생성하도록 합니다.
백엔드나 런타임 API 의존성이 없습니다. 초기 모델 다운로드 후에는 Bato가 오프라인에서 작동할 수 있습니다.
오픈 혁신은 왜 중요한가?
오픈 가중치(open-weight) 모델을 사용하면 로컬 추론이 가능해집니다.
트레일 데이터를 원격 AI API로 전송하는 대신:
GPX → 로컬 계산 → 로컬 LLM → 하이킹 계획
모든 것이 기기 내에 머무릅니다.
이는 인터넷 연결이 불가능할 수 있는 하이킹 환경에 Bato를 더 적합하게 만들 뿐만 아니라, 프로젝트가 다양한 오픈 가중치 모델을 교체하고 실험할 자유를 제공합니다.
상금 부문
- 오픈 가중치 / 오픈 소스 AI
- 로컬 / 온디바이스 AI
- 자연 속으로 / 오프라인 우선(Offline-first)
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기