기술 스택

범주 기술 설명
언어 Kotlin 안드로이드 공식 언어. 간결하고 안전하며 현대적 문법 제공. Jetpack과 호환성 우수.
UI XML 기존 레이아웃 방식.
지도 Google Maps SDK for Android 지도 렌더링, 마커 표시, 사용자 위치 추적 등 지도 관련 기능 제공. 커스터마이징 가능.
위치 기능 FusedLocationProviderClient 정확하고 효율적인 위치 추적 API. 배터리 절약 및 실시간 위치 제공.
아키텍처 MVVM (Model-View-ViewModel) 코드 분리 및 유지보수 용이. ViewModel에서 UI 상태 관리.
LiveData / StateFlow UI와 데이터 상태를 관찰하고 반응형으로 처리할 수 있는 데이터 스트림.
로컬 DB Room SQLite 기반 ORM. 간단하게 DB 구축 가능. Entity/DAO/Database로 구성.
이미지 처리 Glide 사진을 효율적으로 로딩하고 캐싱.
데이터 저장 SharedPreferences 간단한 키-값 설정 저장에 적합. (리워드 해금 여부 등)
이미지 저장 위치 내부 저장소 사용자 개인 사진 저장. 외부 접근 차단 가능. 앱 삭제 시 자동 제거.

주요 기능 명세서

1. 지도 기반 핀 등록 및 시각화

항목 내용
기능 사용자가 위치 기반으로 지도에 핀 추가
입력 항목 위치 선택, 제목, 설명, 사진, 태그
출력 지도에 마커 생성 (종류별 색상 구분)
특수 기능 사용자 위치 기반으로 ‘갔다 온 곳’ 방문 인증
저장 방식 Room DB (로컬)

2. 미션 시스템

항목 내용
기능 개요 사용자가 미션 장소에 직접 방문하여 위치 인증을 하면 경험치를 획득함. 일정 횟수 이상 인증 시 레벨업.
미션 종류 사전에 등록된 특정 장소 (예: 지역 카페, 문화공간 등) 또는 사용자가 등록한 장소 방문 미션
인증 방식 사용자가 해당 장소 반경(30m) 내 도달 시 인증 가능→ 위치 기반 인증 처리 (FusedLocationProviderClient 활용)
경험치 시스템 미션 1건 인증 시 고정 경험치 획득획득 경험치 누적으로 레벨 상승
레벨 시스템 최대 레벨: 10레벨
UI 구성 카드 뷰 형태의 미션 목록 + 완료 여부/레벨 표시지도에 미션 장소 마커로 표시 가능
보상 요소 레벨업 시 칭호 등 해금 가능보상은 마이 페이지에서 확인 가능
데이터 저장 인증 내역, 경험치, 레벨 등은 SpotEntity + UserPrefsManager에 저장 (Room DB, SharedPreferences사용)

3. 포인트 및 리워드 시스템

기능 내용
포인트 획득 미션 완료, 장소 등록 시 포인트 지급
레벨 시스템 누적 경험치에 따라 자동 레벨 상승 (Lv.1~Lv.10)
시각적 효과 레벨에 따라 제공되는 뱃지 수집
저장 방식 SharedPreferences (리워드 상태)

4. 내 기록 보기

항목 내용
기능 내가 등록한 장소 및 미션 기록을 다양한 뷰(지도/카드)로 확인
세부 기능 수정/삭제, 상세 정보 보기, 지도/카드 뷰 전환 가능
지도뷰/카드뷰 장소별 사진, 제목, 날짜(방문 인증 시), 설명을 포함한 카드/지도 마커 형태
뱃지(리워드) 수집한 뱃지와 레벨(칭호 부여) 확인 가능
정렬/필터 카테고리, 선호/비선호, 방문 여부 필터 가능
데이터 Room DB 기반, ViewModel로 상태 연동