HaeruBuddy — 갯벌·해안 안전 파트너 상세 설계서
상태: CURATED · ACTIVE 기술 스택: Flutter, Riverpod, drift(SQLite), MapLibre GL, geolocator, flutter_compass, Supabase 카테고리: Mobile App
1. 문제와 대상 사용자
갯벌과 갯바위에서는 물이 들어오는 속도를 체감하기 어려워, 빠져나올 시점을 놓치면 고립됩니다. HaeruBuddy는 밀물 시각을 미리 알리고 현재 위치와 방향을 잡아 주는 것을 첫 번째 목적으로 합니다. 대상은 갯벌 체험·해안 낚시처럼 조석의 영향을 직접 받는 활동을 하는 사용자입니다.
2. 핵심 기능
| 기능 | 설명 |
|---|---|
| 밀물 알람 | 조위 관측소 기준 물때를 계산해 빠져나올 시각을 미리 알림 |
| 생존 나침반 | 시야가 나쁠 때 진입 지점 방향을 유지하도록 방위를 표시 |
| 구역 경고 지도 | 어장·낚시금지·해양보호구역 진입 시 온디바이스 판정으로 1회 안내(원문·출처·면책 3요소) |
| SOS 구조 좌표 | 119·122 원터치 다이얼과 소수도·도분초 병기 좌표 |
3. 기술 선택 이유
- Flutter: 단일 코드베이스로 iOS·Android를 함께 다루기 위해 선택했습니다.
- drift(SQLite): 통신이 끊기는 해안 환경을 전제로, 물때와 구역 데이터를 오프라인에서 조회할 수 있게 로컬에 둡니다.
- MapLibre GL + 공개 구역 데이터: 낚시 가능·금지 구역, 해양보호구역 같은 경계를 지도 위에 표시합니다.
- 백그라운드 서비스 · 로컬 알림: 앱을 보고 있지 않아도 알람이 도달해야 의미가 있습니다.
4. 현재 범위
- 하단 5탭(홈·물때·지도·안전·내정보) 앱이 동작합니다. KHOA 실 API 기반 물때 화면(조위 곡선·고저조 4칸 표·하루 요약), 안전모드(철수 데드라인 + T-30분/T-0 로컬 알람 + 나침반 + SOS 좌표 + 안전구역 이탈 경고), 온디바이스 구역 진입 경고(지오펜스), 기상청 초단기실황 연동, 출조 기록·조과 사진(로컬 저장), XP·레벨·뱃지, 카카오·구글 로그인(애플 로그인은 iOS 전용으로 배선했으나 실기기 미검증), 동의 흐름·회원탈퇴, 물때 화면 하단 AdMob 배너 1개가 들어가 있습니다.
- 번들 데이터셋은 KHOA 172지점 코드·좌표와 어장·낚시금지·해양보호구역·공중화장실 GeoJSON입니다.
- 웹 아카이브에서는 개인·위치 데이터 없이 핵심 화면과 사용 흐름만 시연합니다. 실제 계정·위치·동행자 정보는 사용하지 않습니다.
5. 알려진 한계
- 안전 보조 도구이며 공식 안전 안내를 대체하지 않습니다. 실제 대피 판단은 현장 안내와 기상·조석 정보를 우선해야 합니다.
- 위치 정확도는 기기 GPS와 해안 지형에 영향을 받고, 나침반은 자기 간섭에 영향을 받습니다.
- 동행자 실시간 위치 공유는 2026-08-08 보류했습니다. 위치정보법 LBS 신고를 먼저 마친 뒤 재개합니다.
- iOS는 Android 출시·안정화 이후로 순연했습니다(2026-08-10 결정).
- 지오펜스 진입·안전구역 이탈 알림의 실기기 발화는 미검증입니다(테스트 기기가 모의 위치를 차단).
- 지도에 표시되는 포인트 정보는 현장 실사 없는 desk review 기반입니다(2,233건).
- 베이스맵 오프라인 다운로드는 제공하지 않습니다(2026-08-10 제거). 오프라인 동작은 번들 구역 데이터와 로컬 캐시 범위입니다.
- 약관 4종은 법률 검토 전 초안입니다.
6. 다음 검증
- 시연용 합성 데이터 세트 구성 및 실제 위치 참조 제거 확인
- 공개 배포된 개인정보처리방침 URL(https://haerubuddy-legal.web.app/privacy.html)과 권한 목록을 랜딩 지원 페이지에 연결