Skip to content
/ Stepic Public

Stepic과 함께 산책하며 순간을 담고, 감정을 기록 해요. 🌿 📸

Notifications You must be signed in to change notification settings

alstn38/Stepic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

🌿 Stepic - 나만의 산책이야기

마음을 걷다, 감정을 담다.

  • Stepic은 산책하며 사진과 감정을 기록할 수 있는 산책 일기 앱입니다
  • 산책했던 경로, 그날의 날씨, 찍었던 사진과 느낀 감정을 한눈에 확인하고 회고할 수 있습니다.

📌 기능 소개

🗓️ 산책 캘린더
월별로 산책한 날을 감정 이모지로 표시되어 한눈에 돌아볼 수 있습니다.

📷 산책 중 기록
실시간 거리·시간 측정, 날씨 확인, 사진 촬영 및 위치 기반 기록 기능을 제공합니다.

📝 산책 결과 저장
감정, 제목, 내용을 입력하고, 경로 위에 찍은 사진들을 함께 저장할 수 있습니다.

📊 산책 통계
월별 감정 분포, 시간/거리에 대한 그래프를 통해 나만의 산책 패턴을 파악할 수 있습니다.

🔍 산책 기록 검색
기록한 산책을 제목, 지역, 내용으로 검색하거나 북마크로 모아볼 수 있습니다.

📱기능 상세 설명

메인 화면 – 감정을 한눈에 보는 달력

제목
  • 월별 캘린더에 산책한 날짜와 감정을 이모티콘을 통해 확인할 수 있습니다.
  • 특정 날짜를 선택하면 사진, 산책 경로, 날씨, 이동 거리 등의 정보를 미리 볼 수 있습니다.

산책 화면 – 순간을 담으며 걷는 시간

산책 화면
  • 산책이 시작되면 현재 날씨와 함께 실시간 이동 거리와 산책 시간을 확인할 수 있습니다.
  • 사진 촬영이나 앨범에서 사진을 선택하여 산책 중인 순간을 남길 수 있습니다.

산책 기록 화면 – 감정과 경로를 담은 일기

제목
  • 산책 종료 후 제목과 내용, 감정 상태, 사진을 기록할 수 있습니다.
  • 지도에는 경로와 함께 사진이 찍힌 위치가 아이콘으로 표시됩니다.
  • 기억하고 싶은 산책 기록은 북마크로 쉽게 관리할 수 있습니다.

마이페이지 – 나의 산책 통계

제목
  • 월별 산책 시간, 거리, 횟수를 확인할 수 있으며 전체 누적 기록도 함께 확인할 수 있습니다.
  • 감정, 산책 시간, 이동거리 정보를 그래프를 통해 나의 산책 패턴을 쉽게 이해할 수 있습니다.

산책 모아보기 – 모든 기록을 한눈에

제목
  • 전체 산책, 특정 달의 산책, 북마크한 산책들을 리스트로 모아 한눈에 볼 수 있는 화면입니다.
  • 각 산책의 사진과 지도, 날씨, 감정, 제목과 내용을 쉽게 확인할 수 있습니다.
  • 검색 기능을 통해 원하는 산책을 빠르게 찾을 수 있으며, 지역명, 제목, 내용으로 검색 가능합니다.

🎯 앱 기술 설명

위치 기반 경로 정확도 향상을 위한 보정 기법 설계

  • GPS 측위 오차를 완화하기 위해 칼만 필터(Kalman Filter) 기반 좌표 보정 알고리즘을 적용하여 이동 경로 데이터를 실시간 필터링하는 구조 설계
  • 적용 전 대비 이동 거리 측정 오차 약 86% 감소
  • allowsBackgroundLocationUpdates 설정을 통해 백그라운드 상태에서도 위치 추적 유지 가능하도록 구성

위치 권한 흐름의 반응형 처리 구조 설계

  • CLLocationManagerDelegate 권한 변경 콜백을 RxSwift 스트림으로 추상화하여 ViewModel에서 실시간 권한 상태 반영 가능하도록 구성

이미지 데이터 저장 구조의 분리 및 정규화

  • Realm에는 이미지 파일 경로만 저장하고 실제 이미지는 FileManager에 저장하는 방식으로 데이터 정규화 및 트랜잭션 경량화
  • 저장 공간 효율성 및 I/O 처리 안정성 확보를 위한 구조 분리 적용

다국어 지원을 고려한 텍스트 리소스 설계

  • 앱 전반의 텍스트 리소스를 StringLiterals로 분리하고, i18n 구조 기반으로 다국어 확장이 가능한 l10n 설계 적용

사용자 경험(UX)를 고려한 인터랙션 설계

  • 라이트/다크 모드 전환에 대응하기 위해, 직접 정의한 컬러 에셋을 활용하여 디자인 톤과 명도 대비 유지

  • 산책 종료 버튼은 실수로 눌리는 상황을 방지하기 위해 2초 이상 롱탭 시에만 동작하도록 구성

  • 롱탭 중 버튼이 점차 커지는 애니메이션을 통한 시각적 피드백을 제공.

  • 짧은 탭에는 토스트 메시지로 안내하여 사용자의 혼란을 줄이고 명확한 사용 흐름을 유도


위치/날씨 API 병렬 호출 최적화

  • Swift Concurrency의 async let 구문을 활용하여 주소 역지오코딩과 날씨 API 요청을 병렬 처리하여 응답 속도 단축
  • 네트워크 대기 시간 최소화를 위한 비동기 최적화 구성

의존성 주입 기반 모듈 구성

  • 전역 DIContainer를 통해 객체 생성을 외부에서 관리하도록 구성함으로써, 구현체에 대한 직접적인 의존을 제거하고 추상화 계층에 의존하는 DIP원칙을 준수
  • 각 모듈의 의존성은 인터페이스 기반으로 선언되며 런타임 시점에서 구체 인스턴스를 주입하여 유지보수성 극대화

상태 기반 아키텍처 설계

  • MVVM 기반 Input/Output 구조를 정의하여 데이터 흐름을 명확히 분리
  • 일부 화면에 ReactorKit 도입

📅 개발 정보

  • 집중 개발 기간: 2025.03.26 ~ 2025.04.07
  • 유지 보수 기간: 2025.04.07 ~ 진행중
  • 개발인원: 1명

🛠️ 개발 환경

iOS

Swift

Xcode

About

Stepic과 함께 산책하며 순간을 담고, 감정을 기록 해요. 🌿 📸

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages