Skip to content

Team-UniVoice/UniVoice_iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

704 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

UniVoice_iOS

β€œλ‹€μ–‘ν•œ λͺ©μ†Œλ¦¬λ₯Ό 톡해 더 λ‚˜μ€ 학생 μ‚¬νšŒ, 더 λ‚˜μ€ λŒ€ν•™ μƒν™œμ„ λ§Œλ“€κΈ° μœ„ν•΄μ„œβ€

유나보아스_브ᄅᅒᆫ당ᄀα…ͺα„Œα…¦

ν•™μƒνšŒμ™€ ν•™μƒλ“€μ˜ λͺ©μ†Œλ¦¬λ‘œ ν•¨κ»˜ λ§Œλ“€μ–΄κ°€λŠ” λŒ€ν•™ μƒν™œ ν•„μˆ˜ μ•±, μœ λ‹ˆλ³΄μ΄μŠ€ μž…λ‹ˆλ‹€.

  • 34κΈ° NOW SOPT APPJAM (2024.06.15 ~ )

πŸŽ₯ μ‹œμ—° μ˜μƒ

KakaoTalk_Video_2024-07-20-00-00-28.mp4

🍎 iOS Developer

λ°•λ―Όμ„œ μ™•μ •λΉˆ 이자민 μ˜€μ—°μ„œ
λ―Όμ„œ μ •λΉˆ 자민 μ—°μ„œ
[Team Leader]
둜그인
ν€΅μŠ€μΊ”
μ €μž₯ νŽ˜μ΄μ§€
[Team Member]
νšŒμ›κ°€μž…(학생증 ν›„)
API ꡬ쑰 섀계 ν›„ κ΅¬ν˜„
[Team Member]
νšŒμ›κ°€μž…(학생증 μ „)
곡지사항 등둝
[Team Member]
메인 ν™ˆ
세뢀곡지 확인
마이 νŽ˜μ΄μ§€

πŸ“¦ Libraries

Library Version Description
SnapKit 5.7.1 λ ˆμ΄μ•„μ›ƒ μ½”λ“œμ˜ 직관성, κ°„κ²°μ„± κ°•ν™”, UI Constraint μ„€μ • 간단화
Then 3.0.0 객체λ₯Ό μ΄ˆκΈ°ν™”ν•œ ν›„ ν”„λ‘œνΌν‹°λ₯Ό μ„€μ •ν•˜λŠ” κ³Όμ • 간단화, 가독성 증가
Moya 15.0.3 λ„€νŠΈμ›Œν¬ 둜직의 좔상화, ꡬ쑰화, ν™•μž₯μ„± 증가
KingFisher 7.12.0 이미지 캐싱, 이미지 처리 κ°„νŽΈμ„±
RxSwift 6.7.1 비동기 μž‘μ—… 관리 및 λ‹€μ–‘ν•œ μ—°μ‚°μžλ₯Ό ν™œμš©ν•œ 데이터 슀트림 처리
RxDataSource 5.0.2 ν…Œμ΄λΈ” 뷰와 μ»¬λ ‰μ…˜ 뷰의 데이터 μ†ŒμŠ€λ₯Ό λ°˜μ‘ν˜•μœΌλ‘œ 관리 및 데이터 바인딩을 κ°„νŽΈν•˜κ²Œ 처리
RxMoya 15.0.3 Moyaλ₯Ό μ‚¬μš©ν•˜μ—¬ λ„€νŠΈμ›Œν¬ μš”μ²­μ„ κ΄€λ¦¬ν•˜κ³ , RxSwiftλ₯Ό 톡해 비동기 λ„€νŠΈμ›Œν¬ μž‘μ—…μ„ 처리
Lottie 4.5.0 JSON 기반의 μ• λ‹ˆλ©”μ΄μ…˜μ„ μ‰½κ²Œ κ΅¬ν˜„

πŸ“– Coding Convention

1. Base Rule

  • StyleShare 의 Swift Style Guideλ₯Ό 기본으둜 ν•©λ‹ˆλ‹€.
  • 세뢀적인 사항은 μ•„λž˜ 원칙을 λ”°λ₯Έλ‹€.

2. Naming

- ν•¨μˆ˜, λ©”μ„œλ“œ :Β lowerCamelCaseΒ μ‚¬μš©ν•˜κ³ , λ™μ‚¬λ‘œ μ‹œμž‘ν•œλ‹€.
- λ³€μˆ˜, μƒμˆ˜ :Β lowerCamelCaseΒ μ‚¬μš©ν•œλ‹€.
- 클래슀, ꡬ쑰체, enum, extension λ“± :Β UpperCamelCaseΒ μ‚¬μš©ν•œλ‹€.
- 파일, 클래슀 λͺ… μ•½μ–΄ μ‚¬μš©. 단, UI μ„ μ–Έ ꡬ문과 λ©”μ†Œλ“œμ—μ„œλŠ” μ•½μ–΄λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
    - μ˜ˆμ‹œ) ViewController β†’Β `VC`
    - μ˜ˆμ‹œ) CollectionViewCell β†’Β `CVC`
- λ·° 섀정을 μœ„ν•œ ν•¨μˆ˜μ—μ„œλŠ”Β setΒ ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€.
    - μ˜ˆμ‹œ) func configureUI β†’Β `func setUI`
    - μ˜ˆμ‹œ) func setDelegate ... β†’Β `func configureDelegate`
- 이외 κΈ°λ³Έ λͺ…λͺ…κ·œμΉ™μ€Β [Swift Style Guide]λ₯Ό μ°Έκ³ ν•œλ‹€.
- 상속받지 μ•ŠλŠ” ν΄λž˜μŠ€λŠ”Β final ν‚€μ›Œλ“œλ₯Ό 뢙인닀.
- 단일 μ •μ˜ λ‚΄μ—μ„œλ§Œ μ‚¬μš©λ˜λŠ” νŠΉμ • κΈ°λŠ₯ κ΅¬ν˜„μ€Β private μ ‘κ·Ό μ œν•œμžλ₯Ό 적극 μ‚¬μš©ν•œλ‹€.
- 퀡헬프기λŠ₯을 ν™œμš©ν•œ λ§ˆν¬μ—… 문법을 ν™œμš©ν•œ 주석을 적극 μ‚¬μš©ν•œλ‹€.
- μ΄μ™ΈλŠ” μ»€μŠ€ν…€ν•œΒ SwiftLint Rule을 μ μš©ν•œλ‹€.
- image asset μΆ”κ°€ μ‹œ img_{name}의 μ΄λ¦„μœΌλ‘œ μž‘μ„±ν•œλ‹€. snakecase둜 μž‘μ„±
- color asset μΆ”κ°€ μ‹œ Figma 넀이밍을 따름.

3. κ°œν–‰

  • λͺ¨λ“  νŒŒμΌμ€ 빈 μ€„λ‘œ λλ‚˜λ„λ‘ ν•©λ‹ˆλ‹€.

  • MARK ꡬ문의 μœ„μ—λ§Œ ν•œ 쀄 μ€„λ°”κΏˆ ν•©λ‹ˆλ‹€.

    // MARK: - Layout
    override func layoutSubviews() {
      // doSomething()
    }
    
    // MARK: - Actions
    override func menuButtonDidTap() {
      // doSomething()
    }
  • ν•¨μˆ˜ μ€„λ°”κΏˆμ€ λ‹€μŒκ³Ό 같이 ν•©λ‹ˆλ‹€.

    override func layoutSubviews() {
      // doSomething()
    }
  • ν•¨μˆ˜ μ •μ˜κ°€ λ„ˆλ¬΄ κΈΈμ–΄μ§€λ©΄ λ‹€μŒκ³Ό 같이 μ€„λ°”κΏˆν•©λ‹ˆλ‹€.

    νŒŒλΌλ―Έν„° κΈ°μ€€μœΌλ‘œ μ€„λ°”κΏˆν•˜λ©°, 리턴은 λ”°λ‘œ μ€„λ°”κΏˆν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

    func collectionView(_ collectionView: UICollectionView,
                        cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
      // doSomething()
    }
  • ν•¨μˆ˜ μ•„λž˜ ν•œ μΉΈ, 클래슀 μ•„λž˜ ν•œ 칸을 μ€„λ°”κΏˆν•˜λ©° μ˜λ―Έμ—†λŠ” 곡백을 λ§Œλ“€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

    func ν•¨μˆ˜1() {
    
    }
    
    func ν•¨μˆ˜2() {
    
    }
  • μ½”λ“œκ°€ 짧아도 쀄을 λ°”κΏ‰λ‹ˆλ‹€.

    switch ~~ {
    	case 0:
                print("")
    }

guard문

  • guard문이 짧을 μ‹œ ν•œ 쀄에 λ‹€ μ„ μ–Έν•œλ‹€.
  • guard문이 κΈΈ μ‹œ, μ•„λž˜μ™€ 같이 guard 문을 κ°œν–‰ν•œλ‹€.
  • κ°œν–‰ μ‹œ, elseλŠ” guard와 같은 λ“€μ—¬μ“°κΈ°λ₯Ό μ μš©ν•œλ‹€.
guard let user = self.veryLongFunctionNameWhichReturnsOptionalUser(),
      let name = user.veryLongFunctionNameWhichReturnsOptionalName(),
      user.gender == .female 
else { return }

πŸ™Œ Git Convention / Branch Strategy

1. Git-flow

git-flow에 μ‚¬μš©λ˜λŠ” λΈŒλžœμΉ˜λŠ” 총 5개 μž…λ‹ˆλ‹€. πŸ–οΈΒ (mainκ³Ό develop, feature ν•„μˆ˜ λ‚˜λ¨Έμ§€λŠ” optional)
- **main(master)**: 
    μ œν’ˆμœΌλ‘œ μΆœμ‹œλ  수 μžˆλŠ” 브랜치    
- **develop(개발)**:    
    λ‹€μŒ μΆœμ‹œ 버전을 κ°œλ°œν•˜λŠ” 브랜치    
- **feature(κΈ°λŠ₯)**:    
    κΈ°λŠ₯을 κ°œλ°œν•˜λŠ” 브랜치  
- **release(배포)**:  
    이번 μΆœμ‹œ 버전을 μ€€λΉ„ν•˜λŠ” 브랜치(보톡 QAλ₯Ό μ—¬κΈ°μ„œ 함)   
- **hotfix(빨리 고치기)**:   
    μΆœμ‹œ λ²„μ „μ—μ„œ λ°œμƒν•œ 버그λ₯Ό μˆ˜μ • ν•˜λŠ” 브랜치

2. Prefix Convention

  • [Feat] :Β μƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€ β€’ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€. 이전에 μ‘΄μž¬ν•˜μ§€ μ•Šμ•˜λ˜ μƒˆλ‘œμš΄ κΈ°λŠ₯μ΄λ‚˜ κΈ°λŠ₯의 ν™•μž₯을 ν¬ν•¨ν•©λ‹ˆλ‹€.
  • [Fix] : 버그 μˆ˜μ • β€’ κΈ°μ‘΄ κΈ°λŠ₯의 였λ₯˜λ₯Ό μˆ˜μ •ν•˜λŠ”λ° μ‚¬μš©λ©λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ κΈ°λŠ₯ λ˜λŠ” λ™μž‘μ΄ μ˜λ„ν•œ λŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•Šμ„ λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
  • [Docs] :Β λ¬Έμ„œ μž‘μ„± β€’ λ¬Έμ„œλ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ λ³€κ²½ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€. 주둜 README 파일, μ‚¬μš© μ„€λͺ…μ„œ, 주석 λ“±μ˜ 변경을 μ˜λ―Έν•©λ‹ˆλ‹€.
  • [Setting] : ν”„λ‘œμ νŠΈ μ„ΈνŒ…
  • [Chore] : κ·Έ μ΄μ™Έμ˜ 작일/ 버전 μ½”λ“œ μˆ˜μ •, νŒ¨ν‚€μ§€ ꡬ쑰 λ³€κ²½, 파일 이동, νŒŒμΌμ΄λ¦„ λ³€κ²½
  • [Add] :Β νŒŒμΌμΆ”κ°€, 에셋좔가 β€’ μƒˆλ‘œμš΄ νŒŒμΌμ΄λ‚˜ μ½”λ“œμ˜ 좔가에 μ‚¬μš©λ©λ‹ˆλ‹€. μƒˆλ‘œμš΄ νŒŒμΌμ΄λ‚˜ μ½”λ“œλ₯Ό ν”„λ‘œμ νŠΈμ— μΆ”κ°€ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
  • [Design] : UI λ””μžμΈμ„ λ³€κ²½ν–ˆμ„ λ•Œ
  • [Refactor] : μ „λ©΄ μˆ˜μ •μ΄ μžˆμ„ λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€

πŸ“‚ Project Foldering Convention

β”œβ”€β”€ ci_scripts
β”‚   β”œβ”€β”€ .swiftlint
β”œβ”€β”€ Application
β”‚   β”œβ”€β”€ AppDelegate
β”‚   β”œβ”€β”€ SceneDelegate
β”‚   β”œβ”€β”€ LaunchScreen
β”œβ”€β”€ Global
β”‚   β”œβ”€β”€ Extension
β”‚   β”œβ”€β”€ Literals
β”‚   β”‚   β”œβ”€β”€ Font
β”‚   β”œβ”€β”€ Resources
β”‚   β”‚   β”œβ”€β”€ Assets
β”‚   β”‚   β”œβ”€β”€ Lottie Animation
β”‚   β”œβ”€β”€ Utility
β”‚   β”‚   β”œβ”€β”€ Info.plist
β”‚   β”‚   β”œβ”€β”€ Config.xcconfig
β”œβ”€β”€ Domain
β”œβ”€β”€ Data
β”‚   β”œβ”€β”€ DTO
β”‚   β”œβ”€β”€ Router
β”‚   β”œβ”€β”€ Base
β”œβ”€β”€ Presentation
β”‚   β”œβ”€β”€ Scene1
β”‚   β”‚   β”œβ”€β”€ View
β”‚   β”‚   β”‚   β”œβ”€β”€ Cell
β”‚   β”‚   β”œβ”€β”€ ViewController
β”‚   β”‚   β”œβ”€β”€ ViewModel


πŸ“Έ 우리의 사진

Untitled


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors