Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

soeun11/iOS_Front

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

26 Commits

Repository files navigation

📋 목차

  1. 개발 환경
  2. 사용 라이브러리
  3. 기술 스택

1. 개발 환경

  • Front : SwiftUI, Swift UIkit
  • 버전 및 이슈 관리 : Github, Github Issues
  • 협업 툴 : Discord, Notion, Github Wiki

2. 사용 라이브러리

API

  • Alamofire
    • HTTP 네트워킹 작업을 간소화하고 효율적으로 처리할 수 있도록 하기 위함
    • Moya에 네트워크 계층의 기본엔진으로 사용하며, 인터셉터 기능을 통해 요청/응답을 중간에 가로채어 로깅, 인증 토큰 자동 개신 작업을 수행하기 위함
  • Moya
    • API 요청의 구조화와 코드의 가독성을 높이기 위해 사용
    • Combine과 함께 사용하여 반응형 프로그래밍 처리를 위함
    • Moya에서 Combine을 활용하여 네트워크 호출을 Publisher로 처리 할 것이다.
    • 데이터 스트림 기반으로 요청과 응답을 처리하고, 오류 처리 및 데이터 바인딩
    • Alamofire의 인터셉터를 활용하여 네트워크 요청의 전/후처리 쉽게 추가할 수 있도록 한다

Image

  • Kingfisher
    • 취향 데이터 및 이미지 캐시 처리를 위해 사용

Social

UI

  • FloatingButton
    • 그룹 기능 내부의 투표 시스템을 사용하기 위해 사용한다.

3. 기술 스택

프로그밍 언어

  • Swift
    • iOS 앱 개발을 위해 Swift 언어로 개발

아키텍처 패턴

  • MVC(Model - View - Controller)
    • UIKit 기반 화면에서는 MVC 패턴을 활용하여 데이터 로직과 UI 계층을 분리
    • 사용자 프로필, 그룹 관리, 코스 관리에서 사용
  • MVVM(Model-View-ViewModel)
    • SwiftUI 기반 화면에서는 MVVM 패턴을 사용하여 데이터 상태 관리와 UI 분리
    • 데이터 바인딩 기능을 활용하여 뷰와 상태 간의 간결한 데이터 흐름을 구현
  • Dependency Injection
    • DIContainer를 활용하여 SwiftUI와 UIKit 간 상태를 공유하고 데이터 흐름을 원활하게 유지

비동기 프로그래밍

  • Combine
    • Moya와 결합하여 API 요청을 Combine의 Publisher로 처리하여 데이터 스트림 관리하기 위함
    • 네트워크 요청, 데이터 스트림, 사용자 입력 등 다양한 비동기 작업을 선언적으로 관리하기 위함

데이터 관리

  • Keychain
    • 유저의 토큰을 안전하게 보호하기 위해 사용
  • UserDefaults
    • 유저의 입력 데이터를 빠르게 불러오기 위해 사용

의존성 관리

  • Swift Package Manager
    • Xcode와 완벽히 통합되어 별도의 플러그인 없이도 의존성을 간편하게 관리 가능하기 떄문

4. 브랜치 컨벤션

  • main - 제품 출시 브랜치
  • develop - 출시를 위해 개발하는 브랜치
  • feat/xx - 기능 단위로 독립적인 개발 환경을 위해 작성
  • refac/xx - 개발된 기능을 리팩토링 하기 위해 작성
  • hotfix/xx - 출시 버전에서 발생한 버그를 수정하는 브랜치

5. 코딩 컨벤션

  • 파라미터 이름을 기준으로 줄바꿈 한다.
let actionSheet = UIActionSheet(
 title: "정말 계정을 삭제하실 건가요?",
 delegate: self,
 cancelButtonTitle: "취소",
 destructiveButtonTitle: "삭제해주세요"
)

  • if let 구문이 길 경우에 줄바꿈 한다
if let user = self.veryLongFunctionNameWhichReturnsOptionalUser(),
 let name = user.veryLongFunctionNameWhichReturnsOptionalName(),
 user.gender == .female {
 // ...
}
  • 나중에 추가로 작업해야 할 부분에 대해서는 // TODO: - xxx 주석을 남기도록 한다.
  • 코드의 섹션을 분리할 때는 // MARK: - xxx 주석을 남기도록 한다.
  • 함수에 대해 전부 주석을 남기도록 하여 무슨 액션을 하는지 알 수 있도록 한다.

6. 이슈 컨벤션

  • 본인이 개발하고 있는 부분에 대해, 추후 다시 수정 작업이 필요하거나 어려움을 겪고 있는 부분에 대해서는 Github ISSUE 항목에 작성해두도록 한다.

7. PR 컨벤션

  • PR 시, 템플릿이 등장한다. 해당 템플릿에서 작성해야할 부분은 아래와 같다
    1. PR 유형 작성, 어떤 변경 사항이 있었는지 [] 괄호 사이에 x를 입력하여 체크할 수 있도록 한다.
    2. 작업 내용 작성, 작업 내용에 대해 자세하게 작성을 한다.
    3. 추후 진행할 작업, PR 이후 작업할 내용에 대해 작성한다.
    4. 리뷰 포인트, 본인 PR에서 꼭 확인해야 할 부분을 작성한다.

8. 커밋 컨벤션

아이콘 코드 설명 원문
🐛 bug 버그 수정 Fix a bug
sparkles 새 기능 Introduce new features.
💄 lipstick: UI/스타일 파일 추가/수정 Add or update the UI and style files.
♻️ recycle 코드 리팩토링 Refactor code.
heavy_plus_sign 의존성 추가 Add a dependency.
🔀 twisted_rightwards_arrows 브랜치 합병 Merge branches.
💡 bulb 주석 추가/수정 Add or update comments in source code
🔥 fire 코드 파일 삭제 Remove code or files.
🚑 ambulance 긴급 수정 Critical hotfix.
🎉 tada 프로젝트 시작 Begin a project.
🔒 lock 보안 이슈 🔒

9. 폴더 컨벤션

📦Catchy
 ┣ 📂API
 ┃ ┣ 📂APITarget
 ┃ ┣ 📂Protocol
 ┃ ┣ 📂Repository
 ┃ ┣ 📂Service
 ┃ ┣ 📂UseCase
 ┃ ┗ 📂Util
 ┃ ┃ ┣ 📂TokenRefresher
 ┣ 📂APP
 ┣ 📂Common
 ┃ ┣ 📂Enum
 ┃ ┣ 📂Protocol
 ┃ ┗ 📂UIComponents
 ┣ 📂Core
 ┃ ┣ 📂DIContainer
 ┃ ┗ 📂Util
 ┃ ┃ ┗ 📂Navigation
 ┣ 📂Model
 ┃ ┣ 📂Request
 ┃ ┣ 📂Response
 ┣ 📂Modules
 ┣ 📂Preview Content
 ┃ ┗ 📂Preview Assets.xcassets
 ┣ 📂Resources
 ┃ ┣ 📂Assets.xcassets
 ┃ ┃ ┣ 📂AccentColor.colorset
 ┃ ┃ ┣ 📂AppIcon.appiconset
 ┃ ┣ 📂Color.xcassets
 ┃ ┣ 📂Fonts
 ┃ ┣ 📂Image
 ┃ ┣ 📂Keyboard
 ┃ ┣ 📂Keychain
 ┃ ┣ 📂Modifier
 ┃ ┗ 📂Shadow
 ┗ 📜ContentView.swift

About

Catch:y iOS 레포짓입니다~~

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • Swift 100.0%

AltStyle によって変換されたページ (->オリジナル) /