dev.to

Cold Kills Batteries, Screen Glare Destroys Night Vision: I Built HushHike with Render, ElevenLabs & Mastra to Navigate the Alpine in 30 Seconds

추위와 화면 눈부심을 피하는 등산 도구 HushHike — Render·ElevenLabs·Mastra로 만든 오프라인 안내 시스템

HushHike는 출발 전 경로와 일몰 위험을 계산해 음성 안내와 인쇄용 경로 카드를 만드는 등산 도구입니다. 글은 Tobler 보행 속도식, 태양 고도 계산, Mastra 워크플로를 소개하지만, 공개된 코드와 배포 설정 일부는 설명과 맞지 않습니다.

AI 요약

HushHike는 산행 중 스마트폰 화면을 계속 확인하지 않도록 설계한 웹 애플리케이션입니다. 출발 전 경로 좌표와 거리, 고도 변화, 출발 시각 등을 입력하면 이동 시간과 일몰 전 산등성이에 해가 가려지는 시각을 계산하고, 인쇄용 3×5인치 경로 카드와 음성 안내를 준비합니다. 위급할 때 사용할 적색 화면 나침반, 구조 신호용 휘슬과 SOS 기능도 제공합니다. 저자는 이를 Hacktoberfest의 Touch Grass 과제에 제출했습니다.

출발 전에 계산하고, 산에서는 화면을 덜 봅니다

글에서 제시한 설계 원칙은 복잡한 계산을 출발 전 30초 안에 마치고, 이동 중에는 휴대전화를 가방에 넣어두는 것입니다. 경로의 방위각과 예상 이동 시간, 능선 그림자에 따른 조기 어두워짐, 필요한 물의 양을 계산해 현장용 카드와 음성 안내로 나눠 제공합니다. 카드에는 방향과 이동 시간, 구조 신호를 담고, 음성 안내는 이동 중 휴대전화를 꺼내지 않고 듣도록 구성했습니다.

지형에 따른 이동 시간과 방위각

이동 시간 계산에는 Tobler의 하이킹 함수를 사용합니다. 글에 나온 식은 W(S) = 6 · e^(-3.5 · |S + 0.05|)이며, S는 고도 변화량을 수평 거리로 나눈 경사입니다. 완만한 내리막에서 속도가 가장 높고, 오르막 경사가 커질수록 속도가 감소하는 방식입니다. 코드에서는 계산한 속도를 시속 0.8~6.5km로 제한한 뒤 거리로 이동 시간을 구합니다.

두 좌표 사이 방향은 평면 삼각법 대신 대권(great-circle)의 초기 방위각 공식을 사용합니다. 현재 진행 방향과 목표 방위각의 차이를 계산해 좌회전·우회전 안내를 만들고, 차이가 3도 이하면 경로상에 있다고 표시합니다.

태양과 지형을 반영한 위험 안내

글은 태양 고도와 방위각을 지형의 능선 각도와 비교해, 실제 일몰 시각보다 먼저 산그늘이 드리우는 시점을 경고한다고 설명합니다. Mastra의 워크플로는 태양 위치 계산, 지형에 따른 이동 시간과 수분 요구량 계산, 안내 문구 생성 순서로 구성했다고 합니다. 워크플로 입력에는 좌표와 출발 시각, 거리·고도 변화, 휴대 수량, 헤드램프와 비상용 비비 여부, 코스 난이도 등이 포함됩니다.

카드와 음성 안내, 배포 설정

인쇄용 카드는 벡터 형식으로 내보내고 방수 종이에 출력하도록 설계했습니다. 음성 안내는 ElevenLabs로 생성한다고 설명하며, 오프라인 재생용 WAV 파일도 제공한다고 합니다. 다만 글에 공개한 generateOfflineAudioBriefing 코드는 입력받은 문장을 사용하지 않습니다. 44.1kHz 모노 PCM WAV 헤더를 만들고 440Hz 사인파를 기록하므로, 이 코드만으로는 음성 안내를 생성하지 않습니다.

배포 설정도 설명과 코드 사이에 차이가 있습니다. render.yaml에는 Next.js 정적 사이트 서비스를 선언하고 ./out을 게시하도록 적혀 있지만, 본문은 /api/dispatch에서 Mastra 워크플로를 실행한다고 설명합니다. 제시된 설정에는 해당 API를 실행할 서버 서비스가 나타나지 않습니다. 글은 Playwright 기반 12개 테스트가 모두 통과했다고 보고하지만, 각 테스트가 확인한 범위는 적색 화면이나 인쇄 기능 등 UI 동작 중심으로 제시합니다.

안전 기능을 사용할 때 확인할 점

저자는 적색 HUD가 야간 시력을 보존하고, 음성 안내와 인쇄 카드가 배터리 의존도를 낮춘다고 설명합니다. 다만 글에 제시된 내용만으로는 태양·능선 계산의 정확도나 현장 안전성을 확인하기 어렵습니다. 특히 실제 산행에서는 배터리와 통신 상태, 날씨, 지형이 달라질 수 있으므로 앱의 안내만을 안전 판단의 근거로 삼기 어렵습니다.

dev.to 반응

  • @humam_moin — 정말 영리한 아이디어입니다. 추운 날 하이킹하다 휴대전화가 꺼진 적이 있는데, 그때 ‘이제 어떡하지?’라는 순간이 정말 무섭습니다. 화면 없이 쓰도록 3×5 카드와 음성 안내, 적색 HUD까지 시스템 전체를 만든 점이야말로 야외 기술이 나아갈 방향입니다. 이번 챌린지에서 본 프로젝트 중 손꼽힙니다. 공유해 주셔서 감사합니다.

원문: dev.to / 번역·요약: Trawling