Skip to content

About

디프만 17기 6팀 iOS파트

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

두런두런 (DoRunDoRun)

친구와 함께 뛰고, 인증하고, 피드로 응원하는 소셜 러닝 iOS 앱

[디프만(Depromeet) 17기 Team 6]의 iOS 프로젝트입니다.

📱 소개

두런두런은 혼자 뛰는 러닝을 "함께 뛰는 경험"으로 바꿔주는 소셜 러닝 메이트 앱입니다. 러닝 코스와 기록을 추적하고, 러닝이 끝나면 인증 셀카를 피드에 올려 친구들과 서로의 운동을 확인하고 응원할 수 있습니다.

  • 지도 기반으로 실시간 경로 · 거리 · 페이스를 기록하는 러닝 트래커
  • 러닝 종료 후 인증 셀카를 업로드하는 피드
  • 친구 코드로 친구를 추가하고, 서로의 러닝 현황을 확인
  • 친구의 피드 업로드 · 반응 · 러닝 독촉 등을 알려주는 푸시 알림

✨ 주요 기능

영역 설명
Running 네이버 지도 기반 실시간 경로 기록, 카운트다운 후 러닝 시작, 러닝 중 거리/시간/페이스 측정, 러닝 종료 후 상세 결과 확인
Feed 러닝 인증 셀카 업로드/수정/삭제, 친구 피드에 리액션, 오늘 인증한 친구 목록 확인, 과거 러닝 세션으로부터 피드 업로드
Friend 친구 코드 입력으로 친구 추가, 친구 목록/프로필 조회, 친구의 러닝 상태 확인
My 내 프로필, 내가 올린 피드/러닝 세션 모아보기, 프로필 수정
Notification 친구 반응, 피드 업로드, 러닝 독촉 등 알림 목록 및 푸시 알림(FCM) 수신
Onboarding 약관 동의, 휴대폰 본인 인증, 프로필 생성, 계정 찾기
Setting 계정 정보, 알림 설정, 로그아웃/회원 탈퇴

🛠 기술 스택

분류 사용 기술
UI SwiftUI
아키텍처 The Composable Architecture (TCA)
네트워킹 Moya + Alamofire
지도/위치 NMapsMap (Naver Map SDK)
이미지 로딩 Kingfisher
푸시/분석 Firebase (Analytics, Cloud Messaging)
광고 Google Mobile Ads (AdMob)
프로젝트 관리 Tuist
최소 지원 버전 iOS 16.0

🏗 아키텍처

Clean Architecture를 기반으로 레이어를 분리하고, 각 Presentation 화면은 TCA의 Reducer(Feature)로 구성합니다.

DoRunDoRun/Sources
├── App              # 앱 진입점(DoRunDoRunApp), AppDelegate, 루트 AppFeature
├── Presentation     # 화면별 Feature(View + Reducer) - Running/Feed/Friend/My/Notification/Onboarding/Setting/Splash
│   └── _Dependencies  # 각 Feature에서 사용하는 TCA DependencyKey 정의
├── Domain           # Entity, Repository 프로토콜, UseCase (화면/서버 구현에 독립적인 비즈니스 로직)
├── Data             # API(Moya), DTO, Network, RepositoryImpl(실제 구현)/RepositoryMock(테스트용)
├── DesignSystem     # 컬러, 폰트, 타이포그래피, 아이콘/그래픽 리소스, 공용 컴포넌트
├── Common           # Analytics, Manager(토큰/FCM/광고 등), Extension, PropertyWrapper, Utility
└── Resources        # Assets, Fonts, GoogleService-Info.plist
  • 하나의 루트 AppFeature가 로그인 여부에 따라 온보딩 플로우와 메인 탭(Running / Feed / My)을 전환합니다.
  • 각 탭은 독립적인 StackState 기반 네비게이션 스택(runningPath, feedPath, myPath)을 가지며, 화면 간 이동은 delegate 액션으로 상위 Feature에 위임합니다.
  • 서버 통신은 Domain의 UseCase/Repository 인터페이스를 Data의 RepositoryImpl이 구현하며, TCA @DependencyClient로 주입합니다.

About

디프만 17기 6팀 iOS파트

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages