prography-team8 / gwasuwon-ios

과수원(과외 수업을 원하는 학생들)
0 stars 1 forks source link
clean-architecture composable-architecture modularization swiftui tuist

Gwasuwon iOS

[Project Description]
과수원 : 과외 수업을 원하는 학생들
과외 선생님과 학생을 매칭 및 모니터링 서비스 제공 앱.


Development Environment

Minimum Deployments: iOS 16.0
Xcode Version: 15.0.1
Tuist Version: 4.12.1
mise Version: 2024.3.9 macos-x64
git Version: 2.39.3 (Apple Git-145)


External Dependency


Skill Stack

Skill: TCA + Tuist + SwiftUI
Architecture: Clean Architecture + Modular Architecture

기술 스택 선정 이유

  1. 단방향 패턴

TCA를 사용한 것은 MVVM 패턴보단 단방향 패턴인 MVI를 사용하고 싶었고, TCA가 MVI와 유사했기 때문에 사용함.
TCA는 action 하나 하나를 다 컨트롤할 수 있어 side effect까지 다 핸들링할 수 있는 장점이 있었음.

  1. SwiftUI + MVI

SwiftUI는 @State, @StateObject 등 View에서 상태 관리 및 데이터 바인딩으로 View를 새로 그려주는 작업이 쉬워졌다.
View에서 자체적으로 데이터 바인딩을 수행해주는 녀석들이 있어 View가 참조할 State 데이터 관리가 되므로 MVVM의 ViewModel 패턴이 필요없게 된다. (물론 business logic 분리는 view로부터 분리하긴 해야함)
따라서, MVVM보단 MVI 패턴과 유사한 TCA가 적합하다 생각했다.

  1. Tuist

많은 사람들과 협업할 때, Tuist로 프로젝트 관리를 하면 되게 큰 이점이 됨을 회사에서 느꼈다.
또한, 모듈화를 하기 위해서도 Tuist를 사용하여 관리하면 매우 편하다는 것을 알게 되어, Tuist를 더 공부해보고자 사용함.

  1. Trendy

최신 기술들을 왕창 써보며 최신 트렌드를 따라가보고 싶었음.

  1. AtoZ 개발

구조 설계부터 앱 개발까지 협업 + 개발을 프로젝트 처음부터 끝까지 전담해보고 싶었음.


TCA

TCA(The Composable Architecture)

tca-architecture


Clean Architecture

Clean Architecture + TCA

clean-architecture


Modularization With Tuist

Tuist Graph

Tuist Graph

이점


App Images

로그인 메인 선생님 홈 학생 홈 수업 추가하기 수업 추가하기
수업 생성 완료 수업 목록 수업 정보 보기 수업 정보 수정 수업 정보 삭제
수업 초대 QR 학생 방 입장(QR) 학생 출석체크(QR) 수업 인증 생성(QR) 선생님 전체 Flow

Resources