diff --git a/README.md b/README.md index 934d2c9..3c858b1 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,19 @@ # 오름 > 한국의 산 정보를 제공하고, 등산 기록을 측정/관리하는 iOS 앱 > [앱스토어](https://apps.apple.com/kr/app/%EC%98%A4%EB%A6%84-%EB%82%98%EC%9D%98-%EB%93%B1%EC%82%B0-%EA%B8%B0%EB%A1%9D/id6753770017) -> 현재 버전: 1.3.0 +> 현재 버전: 1.4.1
## 📌 프로젝트 소개 > 프로젝트 기간: 2025/09/21 ~ 2025/10/09 +> 업데이트 기간: 2025/10/10 ~ 현재 > 개인 프로젝트 **오름**은 등산 기록 및 관리 앱입니다. -- Restful API를 통해 한국의 산 정보를 제공하고 -- Healthkit을 활용하여 등산 활동을 추적하며 -- Realm DB를 통해 사진, 후기 등의 기록을 관리할 수 있습니다. +- 한국의 산 정보를 제공하고 +- 등산 활동을 추적해 통계를 제공하며 +- 사진, 후기, 별점으로 등산 기록을 관리할 수 있습니다.
@@ -25,18 +26,34 @@
-## 📌 기술스택 +## 📌 기술스택 +**Architecture** - Tuist를 활용해 Clean Architecture 계층을 모듈화하여 의존성 관리 및 빌드 효율 향상 - MVVM-C와 Combine 기반 구조체 Input/Output 패턴으로 명확한 데이터 흐름과 반응형 프로그래밍 구현 -- DI Container를 적용해 서비스/개발 환경별 Repository 주입 분리 및 테스트 용이성 확보 -- Alamofire와 Router 패턴으로 API 통신 구조 표준화, NWPathMonitor로 네트워크 상태 감지, 응답 값 기반 에러 처리 + +**Network** +- NSCache와 FileManager를 활용한 캐싱 구현으로 데이터 접근 속도 개선 및 네트워크 단절 상황 대응 +- NWPathMonitor로 네트워크 상태를 감지해 단절/재연결 배너를 상단 표기 +- Alamofire와 Router 패턴으로 API 통신 구조 표준화, 응답 값 기반 에러 처리 + +**Data** - Realm을 활용한 1:N 관계형 DB 설계, 양방향 관계 설정으로 데이터 무결성 보장 -- 지도 줌 레벨 기반 Grid 클러스터링으로 시각적 가독성 개선 -- HealthKit을 활용해 앱 종료 중에도 데이터 수집 +- HealthKit을 활용해 앱이 종료된 상태에서의 데이터 수집, 휴리스틱 필터와 칼만 필터로 데이터 보정 +- WidgetKit으로 측정 중 정보 표기 +- 로컬 Push 알림으로 등산 완료 시 앱에서도 측정 종료 유도 +- Quad-Tree 알고리즘 클러스터링으로 지도의 시각적 가독성과 효율성 개선 - 기기 크기에 따른 이미지 리사이징으로 저장 공간 절감 및 성능 향상 + +**CI / CD** +- DI Container를 적용해 서비스/개발 환경별 Repository 주입 분리 및 테스트 용이성 확보 +- Github Actions와 Fastlane으로 자동화된 테스트와 배포 시스템 구현 + +**Mornitoring** - Firebase Analytics와 Crashlytics로 사용자 행동 및 안정성 모니터링 -- UIKit(code base, +SwiftUI), Combine, MapKit, CoreLocation, HealthKit, Charts, NWPathMonitor, Tuist, Realm, Alamofire, Kingfisher, SnapKit, Toast, Firebase Analytics, Firebase Crashlytics + +**Frameworks** +- UIKit(code base, +SwiftUI), Combine, MapKit, CoreLocation, HealthKit, Charts, NWPathMonitor, Tuist, Realm, Alamofire,XMLCoder, Kingfisher, SnapKit, Toast, Firebase Analytics, Firebase Crashlytics
@@ -49,53 +66,41 @@ 검색/산 정보 보기 - 등산 기록 관리 - 기록 측정/통계 - 명산 지도 - 검색/산 정보 보기 + 등산 기록 관리 + 기록 측정/통계 + 명산 지도 + 검색/산 정보 보기 -
-등산 기록 관리 - -- Realm DB를 활용하여 등산 기록을 로컬에 저장하고 관리 +**등산 기록 관리** +- 등산 기록을 저장하고 관리 - 등산 중 촬영한 사진과 후기, 별점과 측정 정보 등을 함께 저장 -- 디바이스 크기에 따른 이미지 Resizing으로 저장 공간 관리 - 수정/삭제, 검색/북마크 기능 지원 -
- -
-기록 측정/통계 -- HealthKit을 활용하여 앱이 실행 중이 아니더라도 걸음 수와 이동 거리 측정 -- 실시간으로 등산 진행 상황을 확인 +**기록 측정/통계** +- 등산 중 걸음 수와 이동 거리 측정 +- 실제 측정 기록과 유사하도록 측정 데이터 보정(휴리스틱 필터, 칼만 필터) - 운동 시간, 휴식 시간 분석 및 걸음 수, 이동 거리 통계 정보 제공 -- Charts를 활용한 시간 별 걸음 수/이동 거리 시각화 +- 시간 별 걸음 수/이동 거리, 평균 대비 기록을 차트로 시각화 +- 위젯으로 등산 측정 진행 상황을 표기(산 이름, 경과 시간) +- 측정 시작 3시간 이후 1시간마다 측정 중인지 확인하는 로컬 Push 알림 -
-
-명산 지도 - -- MapKit을 사용하여 전국의 명산 위치를 지도에 표시 -- 줌 레벨에 따른 Grid 기반 Clustering +**명산 지도** +- 전국의 명산 위치를 지도에 표시 - 현재 위치 기반으로 주변 산 탐색 -- 지도에서 산을 선택하여 상세 정보 확인 가능 - -
+- 밀집된 영역은 묶어서 개수로 함께 표기 +- 산을 선택하여 상세 정보 확인 가능 -
-검색/산 정보 보기 +**검색/산 정보 보기** - 전국 산 정보 검색 - 검색 결과에서 산을 선택하여 상세 페이지로 이동 -- Geocoding과 기상청 API를 연결해 날씨 정보 제공 +- 국토교통부와 기상청 API를 연결해 날씨 정보 제공 - 산 이름, 위치, 높이 등의 기본 정보 제공 -- Realm DB를 통한 최근 검색어 기능 지원 - -
+- 최근 검색어 기능 지원
@@ -148,7 +153,7 @@ tuist generate ### Try -- **API 복구 이후에는 더 풍부한 데이터를 활용해 로직을 단순화하고, 제공 정보를 확장할 예정입니다.** +- **API 복구 이후에는 더 풍부한 데이터를 활용해 로직을 단순화하고, 제공 정보를 확장할 예정입니다. (업데이트 완료)** - **Clean Architecture, Coordinator, DIContainer 등 이론적으로 학습했던 개념을 직접 적용해보며 많은 인사이트를 얻었습니다.** 앞으로도 다양한 설계 개념을 지속적으로 학습하고 적용하여, 보다 완성도 높은 구조와 코드 품질을 구현할 수 있도록 노력하겠습니다.