Skip to content
 
 

Repository files navigation

Rodi

1 2 3 4 5

Rodi는 초보 운전자와 장롱면허 운전자를 위한
맞춤형 운전 연습 장소 및 코스 탐색 서비스입니다.

현 위치를 기준으로 주변 운전 연습 코스, 공영 주차장, 경유지가 포함된 경로를 확인하고
카카오맵·카카오내비와 연동해 바로 길안내를 시작할 수 있습니다.

Download on the App Store


서비스 소개

Rodi는 운전 연습이 막막한 초보 운전자에게 주변 연습 코스와 주차 연습 장소를 지도 기반으로 제공합니다.

  • 카카오·Apple 소셜 로그인 및 비회원 둘러보기
  • 운전 경험·선호 정보 기반 온보딩과 운전 레벨, 추천 연습 유형 안내
  • 현재 위치 또는 지도 화면 범위 기반 코스·주차장 탐색과 재검색
  • 줌 단계별 마커 클러스터링, 코스·주차장 상세 정보 및 경로 미리보기
  • 출발지, 경유지, 도착지를 포함한 코스 경로와 카카오맵·카카오내비 길안내 연동
  • 직접 찾은 장소를 기반으로 한 사용자 코스 등록
  • 연습기록, 후기 작성·수정, 북마크·저장 목록·운전 목표를 관리하는 마이페이지

Rodi는 운전 연습에 참고할 수 있는 코스 정보를 제공하는 서비스이며, 실제 도로 상황과 안전을 보장하지 않습니다. 사용자는 항상 교통 법규와 현장 상황을 우선해야 합니다.

이 README는 공개 서비스 소개와 개발 진입점 안내를 위한 문서입니다. 구현 구조·API 계약·배포 정책의 원본은 각각 Docs/Architecture/ARCHITECTURE.md, Docs/API/API_SWAGGER.md, Docs/Release/RELEASE.md와 현재 코드에서 확인합니다.


폴더 구조

|-- Rodi
    |-- App                         # 앱 진입점, RootView·RootReducer·RootRoute, 의존성 조합
    |
    |-- Core                        # 공통 인프라 및 기반 코드
    |   |-- Analytics               # Firebase Analytics 이벤트 경계
    |   |-- Architecture            # MVICore
    |   |-- Components              # 공통 UI 컴포넌트
    |   |-- Coordinator             # typed NavigationStack 경로 관리
    |   |-- Extension               # Swift / SwiftUI 공통 Extension
    |   |-- Network                 # 네트워크 매니저, 인터셉터, Keychain 토큰 저장
    |   |-- Service                 # Logger, 네트워크·앱 설정 등 공통 서비스
    |
    |-- Data                        # 외부/로컬 데이터 구현 레이어
    |   |-- Local                   # UserDefaults 기반 온보딩 초안, 최근 로그인 제공자 저장
    |   |-- Remote                  # Auth, Course, Member, Place, Practice, RecentSearch, Review 서버 API 연동 구현
    |
    |-- Domain                      # 앱 핵심 도메인 계약 및 모델
    |   |-- Auth, Member            # 인증, 회원 프로필 및 온보딩 도메인
    |   |-- Place, Practice, Review # 장소·연습기록·후기 도메인
    |   |-- Course                  # 사용자 코스 등록·관리 도메인
    |
    |-- Presentation                # 화면 및 사용자 인터랙션 레이어
    |   |-- Home                    # 지도, BottomSheet, Search, 장소 상세
    |   |-- CourseRegistration      # 사용자 코스 등록, 장소 선택, 핀 수정
    |   |-- DrivePractice           # 위치 기반 연습 측정과 Live Activity
    |   |-- Review                  # 후기 작성·수정, 미방문 사유
    |   |-- Login                   # 소셜 로그인, 둘러보기, 탈퇴 계정 복구
    |   |-- Onboarding              # 약관, 프로필, 권한 단계
    |   |-- MainTab                 # 탭 상태와 Feature 간 이동 intent
    |   |-- My                      # 프로필, 연습기록, 내 게시글, 저장·차단 목록
    |
    |-- Resources                   # 앱 리소스
        |-- Assets.xcassets         # 이미지, 아이콘 에셋
        |-- Fonts                   # Pretendard 폰트
        |-- PrivacyInfo.xcprivacy   # 앱 개인정보 매니페스트

아키텍처

Rodi는 SwiftUI를 기반으로 하되, 지도 SDK가 UIKit 중심이라는 점을 분리해 다룹니다.

  • RootReducer와 RootRoute는 세션·온보딩·메인 탭의 최상위 전환과 로그인 필요 화면을 관리합니다.
  • MainTabReducer는 탭 선택과 Feature 간 intent만 소유하며 Home/My 화면은 탭 전환 뒤에도 유지됩니다.
  • Home은 Map, BottomSheet, Search 영역을 합성하며, 지도 SDK adapter와 화면 상태·API Effect의 책임을 분리합니다.
  • Onboarding은 NavigationStack 기반 RouterView 위에서 Login, Terms, Profile, Permission Feature가 각자 입력·검증·비동기 처리를 담당합니다.
  • AppDependencies에서 Repository를 한 번 만들고 명시적으로 주입해, View나 Reducer가 전역 container를 직접 참조하지 않습니다.
  • Home/My 탭은 숨겨져도 유지하며, 지도 좌표 요청은 취소와 revision으로 늦은 응답이 최신 상태를 덮지 못하게 합니다.
  • access/refresh token은 하나의 Keychain 세션 레코드로 원자적으로 저장하고 기존 분리 저장값은 첫 읽기 때 이전합니다.

개발 환경

  • Rodi Dev / Debug: com.dororong.rodi.dev, 내부 개발·디버깅·TestFlight 검증
  • Rodi / Release: com.dororong.rodi, 운영 배포·App Store 제출
  • 환경별 Firebase, Clarity, 앱 아이콘, 표시명, 버전 값은 Config/Dev.xcconfig, Config/Prod.xcconfig에서 관리합니다.
  • 실제 키와 Firebase plist는 local config 및 Git ignore로 관리합니다.

About

초보 운전자를 위한 맞춤형 연습 장소 및 코스 탐색

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages