์์ ๊ฑฐ ์ฌํ์ ์ํ ์ฌ์ธ์ ์๋น์ค
์์ ๊ฑฐ ์ฌํ์ ์ค๋นํ ๋, ํฉ์ด์ง ์ ๋ณด๋ฅผ ํ๋ํ๋ ์ฐพ๋๋ผ ๋ฒ๊ฑฐ๋ก์ฐ์
จ๋์?
๋ผ์ด๋ฉ ์ค, ๊ทผ์ฒ ํธ์์์ค์ ๊ธํ๊ฒ ์ฐพ์๋ณธ ๊ฒฝํ์ด ์์ผ์ ๊ฐ์?
ํฌ์ด๋ฉ์ ์ด๋ฌํ ๋ถํธ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ผ์ด๋ฉ ์คํ ์ ๋ณด ์์ง๋ถํฐ ๋๋ง์ ์ฝ์ค ์ ์๊ณผ ๊ธธ ์๋ด๊น์ง ์ง์ํ๋ ์๋น์ค์์.
ํฌ์ด๋ฉ๊ณผ ํจ๊ป ๊ฐํธํ๊ณ ์ฆ๊ฑฐ์ด ์์ ๊ฑฐ ์ฌํ์ ๋ ๋๋ณด์ธ์!
- ์ถ๋ฐยท๋์ฐฉ์ง๋ฅผ ์ ๋ ฅํ๊ณ ๋ผ์ด๋ฉ ์ค ๋ค๋ฅด๊ณ ์ถ์ ์คํ์ ์ฝ์ค์ ์ถ๊ฐ
- ์์ฐ, ์ธ๋ฌธ, ๋ ํฌ์ธ , ์ผํ, ์์, ์๋ฐ ๋ฑ ๋ค์ํ ์นดํ ๊ณ ๋ฆฌ์ ์คํ ์ ๋ณด ์ ๊ณต
- ๋๋ง์ ๋ง์ถคํ ๋ผ์ด๋ฉ ๋ฃจํธ ์ ์
- ๋๋๊ทธ ์ค ๋๋กญ์ผ๋ก ๊ฒฝ๋ก ์์ ์์ ๋กญ๊ฒ ๋ณ๊ฒฝ
- ์ค์๊ฐ ์์น ์ถ์ : GPS ๊ธฐ๋ฐ ์ ํํ ํ์ฌ ์์น ์ถ์
- ๋์นจ๋ฐ ๋ค๋น๊ฒ์ด์ : ์ฌ์ฉ์๊ฐ ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ๋ฐ๋ผ ์นด๋ฉ๋ผ ์๋ ํ์
- ์ง๋๊ฐ ๋ง์ปค ์๋ ์ ๊ฑฐ: 30m ์๊ณ๊ฐ์ผ๋ก ์ง๋๊ฐ ๊ฒฝ๋ก ๋ง์ปค ์๋ ์ญ์
- ๋์ ์นด๋ฉ๋ผ ํผ๋ด: ๋ฐํ ์ํธ ๋์ด์ ๋ฐ๋ฅธ ์นด๋ฉ๋ผ ์์ ์๋ ์กฐ์
- ํธ์์์ค ํ์: ํ์ฅ์ค, ํธ์์ ๋ฑ ์ฃผ๋ณ ํธ์์์ค ๊ฒ์ ๋ฐ ํ์
- ๋ค์ํ ํ ๋ง: ์์ฐ, ๋ฌธํ, ๋ง์ง, ํ๋ง ๋ฑ ๋ค์ํ ํ ๋ง๋ณ ์ถ์ฒ ์ฝ์ค
- ์์ธ ์ ๋ณด ์ ๊ณต: ์ด ๊ฑฐ๋ฆฌ, ์์์๊ฐ, ์ฃผ์ ํฌ์ธํธ ์ ๋ณด
- ์ํด๋ฆญ ์ ์ฉ: ์ถ์ฒ ์ฝ์ค๋ฅผ ๋ฐ๋ก ๋ด ์ฝ์ค๋ก ์ ์ฉ ๊ฐ๋ฅ
- ์นด์นด์ค ๋ก์ปฌ API: ์ ํํ ์ฅ์ ๊ฒ์ ๋ฐ ์ ๋ณด ์ ๊ณต
- ์ค์๊ฐ ํํฐ๋ง: ์นดํ ๊ณ ๋ฆฌ๋ณ, ๊ฑฐ๋ฆฌ๋ณ ์คํ ํํฐ๋ง
- ๋ผ์ด๋ฉ ์ค ์คํ ์ถ๊ฐ: ๋ผ์ด๋ฉ ์ค์๋ ์๋ก์ด ์คํ์ ๊ฒฝ๋ก์ ์ฆ์ ์ถ๊ฐ
- ์ต๊ทผ ๊ฒ์ ๊ธฐ๋ก: ์์ฃผ ์ฐพ๋ ์ฅ์ ๋น ๋ฅธ ์ฌ๊ฒ์
- ๊ฒฝ๋ก ๋ฐฑ์ /๋ณต์: ๋ผ์ด๋ฉ ์ค ์๋ณธ ๊ฒฝ๋ก ๋ฐ์ดํฐ ์๋ ๋ฐฑ์ ๋ฐ ๋ณต์
- ๋น์ ์ ์ข ๋ฃ ๋ณต๊ตฌ: ์ฑ ์ข ๋ฃ ํ ์ฌ์์ ์ ๋ผ์ด๋ฉ ์ํ ์๋ ๋ณต๊ตฌ
- ํฌ๊ทธ๋ผ์ด๋ ๋ณต๊ท ์ฒ๋ฆฌ: ์ฑ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ณต๊ท ์ ์ง๋ ๋ฐ์ดํฐ ์๋ ์๋ก๊ณ ์นจ
- ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ: ํจ์จ์ ์ธ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ก ๋ถ๋๋ฌ์ด ๋ผ์ด๋ฉ ๊ฒฝํ
- SwiftUI - iOS ๋ค์ดํฐ๋ธ UI ํ๋ ์์ํฌ
- MVVM Architecture - ๊น๋ํ ์ฝ๋ ๊ตฌ์กฐ
- Dependency Injection - ์์กด์ฑ ์ฃผ์ ์ ํตํ ํ ์คํธ ๊ฐ๋ฅํ ๊ตฌ์กฐ
- ๋ค์ด๋ฒ ์ง๋ SDK (NMFMapView) - ๊ณ ์ฑ๋ฅ ์ง๋ ํ์ ๋ฐ ๋ด๋น๊ฒ์ด์
- NMap - ์ค์๊ฐ ์์น ์ถ์ ๋ฐ ๋์นจ๋ฐ ๊ธฐ๋ฅ
- Core Location - ์ ํํ GPS ์์น ์๋น์ค
- Custom Location Manager - ํจ์จ์ ์ธ ์์น ์ถ์ ๊ด๋ฆฌ
- ์นด์นด์ค ๋ก๊ทธ์ธ SDK - ์์ ๋ก๊ทธ์ธ
- Keychain Services - ์์ ํ ํ ํฐ ๋ฐ ์ฌ์ฉ์ ์ ๋ณด ์ ์ฅ
- App Storage - ์ฌ์ฉ์ ์ค์ ๋ฐ ์ํ ๊ด๋ฆฌ
- URLSession - ๋น๋๊ธฐ REST API ํต์
- JSON Codable - ํ์ ์์ ํ ๋ฐ์ดํฐ ์ง๋ ฌํ/์ญ์ง๋ ฌํ
- ์นด์นด์ค ๋ก์ปฌ API - ์ ํํ ์ฅ์ ๊ฒ์ ๋ฐ ์ ๋ณด ์ ๊ณต
- Retry Mechanism - ๋คํธ์ํฌ ์ค๋ฅ ์ ์๋ ์ฌ์๋
- Background Task Management - ๋ฐฑ๊ทธ๋ผ์ด๋์์์ ์์น ์ถ์
- Memory Management - ํจ์จ์ ์ธ ๋ฆฌ์์ค ๊ด๋ฆฌ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐฉ์ง
- State Recovery - ์ฑ ์ข ๋ฃ ํ ์ํ ๋ณต๊ตฌ
- Real-time Updates - ์ค์๊ฐ ๋ฐ์ดํฐ ๋๊ธฐํ
Tourding_FE/
โโโ App/ # ์ฑ ์ง์
์ ๋ฐ ์์กด์ฑ ์ฃผ์
โ โโโ Tourding_FEApp.swift # ๋ฉ์ธ ์ฑ ์ง์
์
โ โโโ DependencyProvider.swift # ์์กด์ฑ ์ฃผ์
๊ด๋ฆฌ
โโโ Views/ # SwiftUI ๋ทฐ ์ปดํฌ๋ํธ
โ โโโ Home/ # ํ ํ๋ฉด
โ โโโ Riding/ # ๋ผ์ด๋ฉ ํ๋ฉด (๋ค๋น๊ฒ์ด์
)
โ โโโ RecommendRoute/ # ์ถ์ฒ ์ฝ์ค ํ๋ฉด
โ โโโ SpotSearch/ # ์คํ ๊ฒ์ ๋ฐ ํํฐ๋ง
โ โโโ SpotAdd/ # ์คํ ์ถ๊ฐ (๋ผ์ด๋ฉ ์ค)
โ โโโ Detail/ # ์์ธ ์ ๋ณด ๋ฐ ๋ฐํ
์ํธ
โ โโโ Login/ # ๋ก๊ทธ์ธ ๋ฐ ์จ๋ณด๋ฉ
โ โโโ MyPage/ # ๋ง์ดํ์ด์ง
โ โโโ Components/ # ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ
โโโ ViewModels/ # MVVM ๋ทฐ๋ชจ๋ธ
โ โโโ Riding/ # ๋ผ์ด๋ฉ ๊ด๋ จ ๋ทฐ๋ชจ๋ธ
โ โ โโโ RidingViewModel.swift
โ โ โโโ RidingViewModel+API.swift
โ โ โโโ RidingViewModel+LocationTracking.swift
โ โ โโโ RidingViewModel+Utils.swift
โ โโโ RecommendRoute/ # ์ถ์ฒ ์ฝ์ค ๋ทฐ๋ชจ๋ธ
โ โโโ SpotSearch/ # ์คํ ๊ฒ์ ๋ทฐ๋ชจ๋ธ
โ โโโ Components/ # ๊ณตํต ์ปดํฌ๋ํธ ๋ทฐ๋ชจ๋ธ
โโโ Model/ # ๋ฐ์ดํฐ ๋ชจ๋ธ
โ โโโ Riding/ # ๋ผ์ด๋ฉ ๊ด๋ จ ๋ชจ๋ธ
โ โโโ RecommendRoute/ # ์ถ์ฒ ์ฝ์ค ๋ชจ๋ธ
โ โโโ Search/ # ๊ฒ์ ๊ด๋ จ ๋ชจ๋ธ
โ โโโ User/ # ์ฌ์ฉ์ ๊ด๋ จ ๋ชจ๋ธ
โโโ Network/ # ๋คํธ์ํฌ ๋ ์ด์ด
โ โโโ NetworkService.swift # ํตํฉ ๋คํธ์ํฌ ์๋น์ค
โ โโโ KakaoLocalService.swift # ์นด์นด์ค ๋ก์ปฌ API
โ โโโ NetworkMonitor.swift # ๋คํธ์ํฌ ์ํ ๋ชจ๋ํฐ๋ง
โโโ Repository/ # ๋ฐ์ดํฐ ์ ์ฅ์
โ โโโ RouteRepository.swift # ๊ฒฝ๋ก ๋ฐ์ดํฐ ๊ด๋ฆฌ
โ โโโ TourRepository.swift # ํฌ์ด ๋ฐ์ดํฐ ๊ด๋ฆฌ
โ โโโ UserRepository.swift # ์ฌ์ฉ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ
โ โโโ KakaoRepository.swift # ์นด์นด์ค API ์ฐ๋
โโโ Utils/ # ์ ํธ๋ฆฌํฐ
โ โโโ SafeAreaUtils.swift # ์์ ์์ญ ๊ด๋ฆฌ
โโโ Resources/ # ๋ฆฌ์์ค ํ์ผ
โโโ Assets.xcassets/ # ์ด๋ฏธ์ง ๋ฐ ์์ ๋ฆฌ์์ค
โโโ Font/ # ์ปค์คํ
ํฐํธ (Pretendard)
โโโ GIF/ # ์ ๋๋ฉ์ด์
๋ฆฌ์์ค
- iOS 17.0+ (์ต์ ๊ธฐ๋ฅ ํ์ฉ)
- Xcode 15.0+ (SwiftUI ์ต์ ํ)
- Swift 5.9+ (์ต์ ์ธ์ด ๊ธฐ๋ฅ)
- macOS 14.0+ (๊ฐ๋ฐ ํ๊ฒฝ)
-
์ ์ฅ์ ํด๋ก
git clone https://github.com/your-username/Tourding_FE.git cd Tourding_FE -
์์กด์ฑ ์ค์น
- Xcode์์ ํ๋ก์ ํธ ์ด๊ธฐ
- Swift Package Manager๋ฅผ ํตํด ์๋์ผ๋ก ์์กด์ฑ ์ค์น
-
API ํค ์ค์
Config.xcconfigํ์ผ์์ ๋ค์ ํค๋ค์ ์ค์ :NAVER_APP_KEY: ๋ค์ด๋ฒ ์ง๋ API ํคKAKAO_NATIVE_APP_KEY: ์นด์นด์ค ๋ค์ดํฐ๋ธ ์ฑ ํคKAKAO_REST_API_KEY: ์นด์นด์ค REST API ํคBASE_URL: ๋ฐฑ์๋ ์๋ฒ URL
-
๋น๋ ๋ฐ ์คํ
- Xcode์์ ํ๋ก์ ํธ ๋น๋
- ์๋ฎฌ๋ ์ดํฐ ๋๋ ์ค์ ๊ธฐ๊ธฐ์์ ์คํ
- ์ง๋ ๊ธฐ๋ฐ ๋ฉ์ธ ํ๋ฉด: ํ์ฌ ์์น ์ค์ฌ์ ์ธํฐ๋ํฐ๋ธ ์ง๋
- ์ฝ์ค ์์ฑ ์์์ : ์ถ๋ฐ์ง/๋์ฐฉ์ง ์ค์ ๋ฐ ๊ฒฝ๋ก ๊ณํ
- ๋น ๋ฅธ ์ก์ธ์ค: ์์ฃผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ๋ค์ ๋ํ ๋ฐ๋ก๊ฐ๊ธฐ
- ์ค์๊ฐ ๋ค๋น๊ฒ์ด์ : GPS ๊ธฐ๋ฐ ์ ํํ ๊ธธ ์๋ด
- ๋์นจ๋ฐ ๋ชจ๋: ์ฌ์ฉ์ ๋ฐฉํฅ์ ๋ฐ๋ฅธ ์นด๋ฉ๋ผ ์๋ ํ์
- ๋ง์ปค ์๋ ๊ด๋ฆฌ: ์ง๋๊ฐ ๊ฒฝ๋ก ๋ง์ปค ์๋ ์ ๊ฑฐ (30m ์๊ณ๊ฐ)
- ํธ์์์ค ํ ๊ธ: ํ์ฅ์ค, ํธ์์ ๋ฑ ์ฃผ๋ณ ์์ค ์ค์๊ฐ ํ์
- ๋์ ์นด๋ฉ๋ผ: ๋ฐํ ์ํธ ๋์ด์ ๋ฐ๋ฅธ ์นด๋ฉ๋ผ ์์ ์๋ ์กฐ์
- ๋ผ์ด๋ฉ ์ค ์คํ ์ถ๊ฐ: ์๋ก์ด ์ฅ์๋ฅผ ๊ฒฝ๋ก์ ์ฆ์ ์ถ๊ฐ
- ํ ๋ง๋ณ ๋ถ๋ฅ: ์์ฐ, ๋ฌธํ, ๋ง์ง, ํ๋ง ๋ฑ ๋ค์ํ ์นดํ ๊ณ ๋ฆฌ
- ์์ธ ์ ๋ณด: ๋์ด๋, ์์์๊ฐ, ์ฃผ์ ํฌ์ธํธ ์ ๋ณด ์ ๊ณต
- ์ํด๋ฆญ ์ ์ฉ: ์ถ์ฒ ์ฝ์ค๋ฅผ ๋ฐ๋ก ๋ด ์ฝ์ค๋ก ์ ์ฉ
- ์นด์นด์ค ๋ก์ปฌ API: ์ ํํ ์ฅ์ ๊ฒ์ ๋ฐ ์ ๋ณด ์ ๊ณต
- ์ค์๊ฐ ํํฐ๋ง: ์นดํ ๊ณ ๋ฆฌ๋ณ, ๊ฑฐ๋ฆฌ๋ณ ์คํ ํํฐ๋ง
- ์ต๊ทผ ๊ฒ์ ๊ธฐ๋ก: ์์ฃผ ์ฐพ๋ ์ฅ์ ๋น ๋ฅธ ์ฌ๊ฒ์
- ์ง๋ ์ฐ๋: ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ง๋์์ ๋ฐ๋ก ํ์ธ
- ๋ฐํ ์ํธ UI: ์ง๊ด์ ์ธ ์ ๋ณด ํ์
- ์ด๋ฏธ์ง ์ค: ์คํ ์ด๋ฏธ์ง ํ๋/์ถ์ ๊ธฐ๋ฅ
- ์์ธ ์ ๋ณด: ์ฃผ์, ์ ํ๋ฒํธ, ์ด์์๊ฐ ๋ฑ ์์ ํ ์ ๋ณด
- ์ฆ์ ์ถ๊ฐ: ์์ธ ์ ๋ณด์์ ๋ฐ๋ก ๊ฒฝ๋ก์ ์ถ๊ฐ
- ์ฌ์ฉ์ ์ ๋ณด: ํ๋กํ ๋ฐ ์ค์ ๊ด๋ฆฌ
- ์๋น์ค ์ ๋ณด: ์ฑ ์ ๋ณด ๋ฐ ๊ณ ๊ฐ ์ง์
- ๋ก๊ทธ์์: ์์ ํ ๊ณ์ ๊ด๋ฆฌ
-
๋ค์ด๋ฒ ์ง๋ API
- ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ์์ ๋ฐ๊ธ
-
์นด์นด์ค ๋ก๊ทธ์ธ API
- ์นด์นด์ค ๊ฐ๋ฐ์ ์ฝ์์์ ๋ฐ๊ธ
Config.xcconfig ํ์ผ์ API ํค๋ค์ ์ค์ ํ์ธ์:
# ๋ค์ด๋ฒ ์ง๋ API
NAVER_APP_KEY = your_naver_app_key
# ์นด์นด์ค ๋ก๊ทธ์ธ API
KAKAO_NATIVE_APP_KEY = your_kakao_native_key
KAKAO_REST_API_KEY = your_kakao_rest_key
# ๋ฐฑ์๋ ์๋ฒ URL
BASE_URL = your_backend_url
# ์นด์นด์ค ๋ก์ปฌ API URL (์ ํ์ฌํญ)
KAKAO_URL = https://dapi.kakao.com
- ์์น ๊ถํ:
Info.plist์์ ์์น ์ฌ์ฉ ๊ถํ ์ค๋ช ์ค์ - ๋คํธ์ํฌ ๋ณด์: HTTPS ํต์ ์ ์ํ ๋ณด์ ์ค์
- ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ชจ๋: ์์น ์ถ์ ์ ์ํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ํ์ฉ
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
ํ๋ก์ ํธ์ ๋ํ ๋ฌธ์์ฌํญ์ด ์์ผ์๋ฉด ์ด์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
ํฌ์ด๋ฉ๊ณผ ํจ๊ป ์ฆ๊ฑฐ์ด ์์ ๊ฑฐ ์ฌํ์ ๋ ๋๋ณด์ธ์! ๐ดโโ๏ธโจ