Profile
Back to NewsBack
GitHub Trending 2 min
Reader Mode
sopt-makers/SOPT-iOS: SOPT 공식 어플리케이션

sopt-makers/SOPT-iOS: SOPT 공식 어플리케이션

7 hours ago

SOPT 공식 앱

2022.09 ~ Now

💫 솝트 활동을 더욱 알차고 즐겁게 !

SOPT는 IT와 벤처 창업에 뜻이 있는 대학생들이 모인 국내 최대 규모의 대학생 연합 IT 벤처 창업 동아리입니다.

SOPT에서 활동하고 있는 회원들도, SOPT의 열정이 되고 싶은 분들도 모두 SOPT에 대해서 더 알아갈 수 있는 서비스예요.

!깃헙 프로젝트 소개 페이지

앱스토어에서 다운 받기


기능 소개

출석

  • SOPT 활동 기수 회원들을 위한 출석 기능을 제공하고 있어요
  • 나의 출석 점수와 출결 현황을 확인하고, 실시간으로 출석을 인증해요

공식 홈페이지

  • SOPT의 열정이 되고 싶은 분들은 ‘비회원'으로 로그인해서 둘러볼 수 있어요
  • 공식 홈페이지와 더불어 활동 후기, 프로젝트 내용, FAQ까지 쉽고 빠르게 확인할 수 있어요

플레이그라운드

  • SOPT 회원들만을 위한 플레이그라운드에도 쉽게 접근할 수 있어요
  • 활동 멤버와 프로젝트, 그리고 모임 생성과 참여까지 한 번에 가능해요

미션과 랭킹

  • SOPT를 제대로 즐기기 위한 ‘솝탬프'도 참여할 수 있어요
  • 달성할 수 있는 미션이 있다면 사진과 메모를 업로드하고, 도장을 받을 수 있어요
  • 완료한 미션을 모아보고 랭킹을 비교하며 SOPT에서의 추억을 쌓아가봐요!

오늘의 솝마디

  • 매일 도착하는 창업 운세, 오늘의 솝마디로 즐거운 하루를 시작해보세요
  • 오늘의 창업운을 높여줄 행운의 파트너를 콕 찌르고, 커피챗을 신청해보세요. SOPT인의 여정에 뜻밖의 인연을 가져다 줄지도 몰라요!

콕 찌르기

  • 콕 찌르기로 솝트 회원과 더욱 가까워져요
  • 나와 공통점이 있는 친구를 찾아 친한 친구, 단짝 친구, 그리고 천생연분이 되어보아요


솝탬프 자세히 보기


> 📮 미션 - 솝트를 제대로 즐겨본 사람들이 엄선한 솝트 관련 미션을 확인해 보세요. - 달성 가능한 미션이 있다면 사진과 메모를 업로드해 보세요. 귀여운 도장도 받을 수 있어요! - 완료한 미션을 모아보며 솝트에서의 추억을 간직해 보세요.


> 💪 랭킹 - 달성한 미션 난이도에 따라 랭킹을 결정하는 점수가 부여돼요. - 랭킹 내에서 다른 사람들의 미션 현황, 한마디도 확인할 수 있어요.


오늘의 솝마디 자세히 보기


> 🍀 오늘의 솝마디 - 매일 도착하는 창업 운세, 오늘의 솝마디로 즐거운 하루를 시작해보세요. - 오늘의 창업운을 높여줄 행운의 파트너를 콕 찌르고, 커피챗을 신청해보세요! - 나의 하루를 더욱 빛내줄 부적과 함께, 잊지 못할 특별한 하루를 만들어보세요.



문의사항 및 서비스 의견제안은 언제든지 환영합니다 :)

  • 서비스 의견제안 : https://forms.gle/L2HpRCvFMh9VvcA57
  • e-mail : [email protected]
  • 솝트가 더 궁금하다면? : https://sopt.org


📱 App Version

| 날짜 | 버전 | 날짜 | 버전 | |:--|:--|:--|:--| | 23.01 | v1.0.0 | 24.10 | v2.6.1 | | 23.01 | v1.0.1 | 24.11 | v2.6.2 | | 23.02 | v1.0.2 | 25.01 | v2.6.3 | | 23.04 | v2.0.0 | 25.01 | v2.6.4 | | 23.04 | v2.1.0 | 25.03 | v3.0.0 | | 23.04 | v2.1.1 | 25.04 | v3.0.1 | | 23.05 | v2.1.2 | 25.05 | v3.0.2 | | 23.05 | v2.1.3 | 25.05 | v3.0.3 | | 23.09 | v2.2.0 | 25.05 | v3.0.4 | | 23.10 | v2.2.1 | 25.06 | v3.0.5 | | 23.12 | v2.2.2 | 25.06 | v3.0.6 | | 24.01 | v2.3.0 | 25.09 | v4.0.0 | | 24.06 | v2.4.0 | | | | 24.08 | v2.5.0 | | | | 24.10 | v2.6.0 | | |


🛠 개발 환경 및 라이브러리

![swift]() ![xcode]() ![tuist]() ![Moya]() ![Then]() ![Kingfisher]() ![Snapkit]() ![Quick]() ![Nimble]() ![Lottie]() ![Inject]() ![Sentry]()


⛳️ 로드맵

  • [x] Tuist 기반 Clean Architecture Project 세팅
  • [x] Fastlane, Makefile 세팅
  • [x] 로그인 플로우
  • [x] SOPT-AMP
  • [x] 마이페이지
  • [x] 앱 메인
  • [x] 웹 프로덕트 라우팅
  • [x] 출석
  • [x] 푸시 알림
- [x] 딥링크, 웹링크 라우팅
  • [ ] Makers Design System
- [x] Toast - [ ] Dialog - [x] Color - [x] Typography
  • [x] 콕 찌르기
  • [x] 솝트로그
  • [x] 인증중앙화(인증 방식 변경)
  • [x] Coordinator 리팩토링
- [x] Coordinator의 Router 의존성 제거 - [x] Coordinator의 deinit 방식 변경
  • [ ] WKWebView로 전환

🏡 Skills

Clean Architecture + MVVM Pattern

!MVVM
  • Presentation, Data, Domain Layer를 분리하여 계층 내외의 의존성을 효율적으로 관리합니다.
  • MVVM Pattern으로 UI와 비즈니스 로직을 분리합니다.

Combine Reactive Programming

  • 애플의 기본 API인 Combine을 이용하여 반응형 프로그래밍을 구현합니다.
  • 비동기 처리를 직관적이고 편리하게 구현합니다.

Factory Pattern과 Dependency Injection

image
  • 각 Feature의 Builder가 Factory의 역할을 수행하여 뷰와 뷰모델을 추상화한 Presentable을 생성합니다.
  • 이 과정에서 VC, ViewModel, UseCase, Repository를 주입합니다.

Coordinator

!image
  • 화면 전환을 Coordinator가 책임집니다.
  • Coordinator는 UINavigationController로 직접 화면전환을 수행합니다.
  • VC → ViewModel → Coordinator의 참조 관계에 따라 VC가 해제되면 Coordinator도 메모리에서 해제됩니다.
  • 대신 Coordinator가 Factory를 참조하여 Presentable을 생성하고 런타임에 클로저 주입으로 화면 전환 시 액션을 지정합니다.

Modular Architecture

!graph_after_web_2024 10 28
  • SOPT-iOS 앱은 Makers App 팀과 Makers 운영 서비스 팀의 공동 작업물입니다.
  • 목적조직의 형태이기 때문에, 각 Feature 간의 독립적인 개발 환경을 보장하기 위해 Feature Interface를 도입했습니다.
  • 모듈을 분리하여 응집도 높고 결합도가 낮은 코드를 작성할 수 있는 환경을 구현합니다.
  • Demo 타겟을 통해 개발 환경과 테스트 환경을 분리합니다.

Tuist

  • Tuist를 이용하여 다양한 모듈을 Mono Repo에서 구현합니다. 모듈 및 개발 환경을 편리하게 관리할 수 있습니다.

Testability

  • 전반적으로 Testable한 코드를 지향합니다.
  • 이러한 이점을 살려, Unit Test를 작성하고 신뢰성 및 유지보수성을 확보합니다.


🚙 Getting Started

Fastlane과 Makefile을 활용하여 번거로운 개발 환경 세팅을 자동화하고 있습니다.

공개하지 않아야 하는 파일들과 배포를 위한 인증서들은 Private 레포지토리에 있으며 이 곳에 초대를 받은 사람이라면 명령어 1줄을 입력하면 자동으로 모든 환경이 세팅됩니다.

사전 준비

설치

  1. 현재 레포지토리를 Fork 합니다.
  2. Fork한 레포지토리를 Clone 합니다.
git clone https://github.com/your_username_/Project-Name.git
  1. 프로젝트 경로로 이동하고 다음과 같이 입력합니다.
fastlane start_project
  1. 이제 터미널에서 입력을 요청하는 정보를 입력하고 기다리면 모든 세팅이 완료됩니다.

프로젝트에 기여하고 싶다면?

  1. 현재 레포지토리에 Issue를 생성합니다.
  2. Fork 한 레포지토리에서 브랜치를 생성합니다.
  3. 해당 브랜치에서 작업을 진행합니다.
  4. Push 및 Pull Request를 작성합니다.
  5. 1명 이상 코드 리뷰 및 Approve를 받은 뒤 develop 브랜치에 Merge 합니다.


🍏 Contributors

| | | | | | |--|--|--|--|--|--| | 윤수빈| 이세진 | 이준호| 양수빈| 김영인| 이승호 | | 1, 2, 3기 | 1, 2, 3, 4기 | 1, 2기 | 1기 | 2, 3기 | 2, 3, 4기 | | | | | | | | | 김민재 | 강윤서 | 김승찬 | 이재현 | 장석우 | 최주리 | | 4기 | 5, 36, 37, 38기 | 5기 | 5, 36, 37기 | 5, 36기 | 37, 38기 | | image | | | | | | | 성현주 | 권석기 | | | | | | 37기 | 38기 | | | | |


Chat with me