Skip to content

boostcampwm-2022/iOS01-Capsule

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💬 프로젝트 소개

타임캡슐에서 공간적 제약을 강조하면 어떨까? 라는 아이디어에서 착안했습니다.

사용자는 사진, 글 등의 추억을 캡슐에 담아 특정 장소에 묻어둘 수 있습니다.

이후 사용자가 해당 장소를 방문할 때에만 해당 캡슐을 열어볼 수 있습니다.

👨‍👨‍👧‍👦 팀원 소개

S004 김민중 S019 박영준 S049 장재훈 S060 홍지수

📲 주요 기능

User Flow

캡슐 홈

  • 3D Carousel CollectionView로 구성하였습니다.
  • 좌우로 무한 스크롤이 가능합니다.
  • 특정 기준에 맞는 캡슐을 보여줍니다.
    • 생성한지 가장 오래된 캡슐
    • 가장 최근에 생성한 캡슐
    • 가장 오래된 추억이 담긴 캡슐
    • 가장 최근 추억이 담긴 캡슐
    • 가장 가까운 위치의 캡슐
    • 가장 먼 위치의 캡슐
    • 열어본 횟수가 가장 적은 캡슐
    • 열어본 횟수가 가장 많은 캡슐

캡슐 추가

  • 사용자의 추억이 담긴 캡슐을 추가할 수 있습니다.
  • 이미지, 이름, 위치, 날짜, 내용으로 이루어진 정보를 추가할 수 있습니다.
    • PHPickerViewController 를 이용해 이미지 추가 기능을 구현했습니다.
    • 지도를 움직여 중심부에 위치한 어노테이션으로 원하는 위치를 선택할 수 있도록 구현했습니다.
    • DatePicker 를 이용해 날짜를 선택할 수 있도록 구현했습니다.

캡슐 지도

  • 묻어둔 캡슐들을 지도 위에서 확인할 수 있습니다.
  • 사용자 위치 반경 100m 이내의 캡슐은 개봉이 가능합니다.
  • 개봉 가능한 캡슐은 초록색, 불가능한 캡슐은 회색으로 표시하였습니다.
  • 사용자가 이동할 때마다 캡슐 가능 여부는 실시간으로 화면에 업데이트 됩니다.

캡슐 목록

  • 캡슐들을 목록 형태로 확인할 수 있습니다.
  • 가까운 순, 멀리있는 순, 최신 순, 오래된 순의 정렬 방식을 제공합니다.
  • 개봉 불가능한 캡슐은 자물쇠 이미지와 블러 효과를 적용했습니다.

캡슐 상세

  • 개봉된 사용자의 캡슐 정보를 확인할 수 있습니다.
  • 해당 캡슐이 묻혀있는 위치를 지도에서 확인할 수 있습니다.

🛠 사용 기술

MVVM

  • View 와 Model 간의 의존성을 줄이고자 MVVM 패턴을 사용했습니다.
  • ViewModel 과 View 의 데이터 바인딩을 이용해 ViewController 의 부담을 덜어주었습니다.
  • MVVM 패턴을 직접 구현해보며 학습해보고자 했습니다.

Coordinator

  • 앱의 계층 구조를 명확하게 하기 위해 Coordinator 패턴을 사용했습니다.
  • 화면 전환 로직을 ViewController 에서 분리하고자 했습니다.
  • ViewController 가 내부에서 ViewModel 을 직접 생성해서 가지고 있는 것이 역할에서 벗어난다고 생각해 Coordinator 를 통해 문제를 해결하고자 했습니다.

RxSwift

  • 비동기 작업을 더 간결하게 처리하기 위해 RxSwift 를 사용했습니다.
  • 이벤트 처리를 간결하고 일관성 있게 처리하기 위해 RxCocoa 를 사용했습니다.
  • 현업에서 많이 쓰이는 비동기 라이브러리라고 알고 있기에, 학습 차원에서 도입했습니다.

Firebase

  • 짧은 기간 내에 구현할 수 있는 사용자 인증, 데이터베이스 등의 기능이 필요해 Firebase 를 사용했습니다.
  • NoSQL 데이터베이스로 수정과 확장이 용이해 사용하게 되었습니다.

🤝 협업 방식

Git

  • 변형된 Git Flow 모델을 사용하여 협업을 진행했습니다.
  • feature_기능이름 과 같은 이름의 브랜치에서 작업을 진행하고 develop 브랜치에 PR 을 생성하는 방식으로 진행했습니다.
  • 한명 이상의 리뷰와 승인이 있을 시 Merge 할 수 있도록 했습니다.
  • 아래는 저희 팀의 Github 룰이 담긴 Wiki 페이지입니다.

GitHub 룰

Figma

🎤 추가 자료

발표 자료

발표 영상

시연 영상