Skip to content
This repository has been archived by the owner on Jun 15, 2024. It is now read-only.
/ PLUB-iOS Public archive
forked from PLUB2022/PLUB-iOS

PLUB [취미 생활, 소모임 커뮤니티 활동을 위한 플랫폼🎳🎠🥽⚽]

Notifications You must be signed in to change notification settings

WhiteHyun/PLUB-iOS

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PLUB

취미 생활, 소모임을 구하고 싶다면?

🎳🎠 Play our Club! Plubbing 하세요! 🥽⚽

🍎 Our Team

🧑‍💻 홍승현 🧑‍💻 이건준 👩‍💻 김수빈

⚙️ 개발환경 및 라이브러리

swift xcode rxswift firebase snapkit


🌟 프로젝트 주요 기능

🔑 로그인

Kakao, Google, Apple 계정으로 회원가입, 로그인을 할 수 있어요!

온보딩 화면 로그인 화면 로그인 시도 화면
Simulator Screenshot - iPhone 15 Pro Max - 2023-11-11 at 17 03 35 Simulator Screenshot - iPhone 15 Pro Max - 2023-11-11 at 17 03 42 IMG_96BB5A76E93A-1

🚪 모임 활동

관심사에 맞게 모임에 들어가거나 만들어보세요. 그리고 모임에서 여러 사람들과 소통하세요!

홈 화면 모임 생성 화면 댓글 작성 화면

🛠️ 아키텍쳐

image

MVVM

  • MVVM을 도입하여 뷰컨트롤러와 뷰는 화면을 그리는 역할에만 집중했고, 데이터 관리, 로직의 실행은 뷰모델에서 진행되도록 했습니다.
  • UIKit 요소가 없어도 뷰에 보여질 값들을 뷰모델을 단독으로 단위 테스트하여 확인하고 검증할 수 있게 했습니다.

UseCase

  • Service와 Router를 사용하여 네트워크 및 외부 프레임워크 요청을 처리, 레이어별 책임을 명확히 구분했습니다.
  • ViewModel의 일부 기능을 UseCase로 분리하고 Adapter패턴을 적용하여 뷰의 재사용성과 유지보수성을 높였습니다.

Input/Output Modeling

  • 뷰모델을 Input(AnyObserver)과 Output(AnyObservable)로 구상하여 뷰의 이벤트들을 Input에 바인딩하고, 뷰에 보여질 데이터를 Output에 바인딩했습니다.
  • 일관되고 직관적인 구조를 유지해 뷰모델의 코드 가독성이 높아졌습니다.

🔥 기술적 도전

RxSwift

  • 연속된 escaping closure를 피하고, 선언형 프로그래밍에서 제공하는 높은 가독성과 rx 오퍼레이터의 효율적인 비동기처리를 위해 RxSwift를 사용하게 되었습니다.
  • 데이터가 발생하는 시점에서부터 뷰에 그려지기까지 하나의 큰 스트림으로 데이터를 바인딩해주었습니다.

재사용 가능한 View & ViewController 상속

  • 기능에 따라 화면 구성이 조금씩 차이가 있어 공통적인 부분은 상위 View Controller로부터 상속 받고 다른 구성 요소에 대하여 재정의할 수 있도록 하였습니다.
  • 여러 화면에서 공통적으로 사용되는 UI 등은 별도의 Custom Class로 정의하여 View의 재사용성을 높이고자 하였습니다.

About

PLUB [취미 생활, 소모임 커뮤니티 활동을 위한 플랫폼🎳🎠🥽⚽]

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%