Skip to content

TeamHappic/happic-iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation


happic:

ํ•˜๋ฃจ ํ•œ ์ปท์˜ ์‚ฌ์ง„๊ณผ ํ‚ค์›Œ๋“œ ๋ถ„์„์ด ์•Œ๋ ค์ฃผ๋Š” ๋‚˜์˜ ํ–‰๋ณต, ํ•ดํ”ฝ

30th THE SOPT APP JAM
ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ : 2022.07.02 ~ 2022.07.23



happic



Team happic iOS Developers

์ด์„ธ์ง„ ์œค์ˆ˜๋นˆ ๊ฐ•์Šนํ˜„
lsj8706 devxsby ZaidKang


Development Environment and Using Library

  • Development Environment



  • Library
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ๋ชฉ์  Version Management Tool
Alamofire ์„œ๋ฒ„ ํ†ต์‹  5.6.1 SPM
SnapKit UI Layout 5.0.0 SPM
Then UI ์„ ์–ธ 3.0.0 SPM
Kingfisher ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ 7.2.4 SPM
Tabman ๋ทฐ ํŽ˜์ด์ € ์ปค์Šคํ…€ 2.12.0 SPM
pageboy ๋ทฐ ํŽ˜์ด์ € ์ปค์Šคํ…€ 3.6.2 SPM

  • framework
ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ ๋ชฉ์ 
UIKit UI ๊ตฌํ˜„


Coding Convention

โœจ Git Branch Convention

  • Branch Naming Rule
    • Issue ์ž‘์„ฑ ํ›„ ์ƒ์„ฑ๋˜๋Š” ๋ฒˆํ˜ธ์™€ Issue์˜ ๊ฐ„๋žตํ•œ ์„ค๋ช… ๋“ฑ์„ ์กฐํ•ฉํ•˜์—ฌ Branch ์ด๋ฆ„ ๊ฒฐ์ •
    • <Prefix>/<#IssueNumber>-<Description>
  • Commit Message Rule
    • [Prefix] : <Description>
  • Code Review Rule
    • ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋Š” ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ํ•œ๋‹ค.
    • ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋Š” ์ตœ๋Œ€ํ•œ ์ •์„ฑ๊ป ํ•œ๋‹ค.

โœจ Git Flow

1. ์ž‘์—… ๋‹จ์œ„๋ณ„ Issue ์ƒ์„ฑ : ๋‹ด๋‹น์ž, ๋ผ๋ฒจ, ํ”„๋กœ์ ํŠธ ์—ฐ๊ฒฐ 

2. Fork ๋ฐ›์€ ๋กœ์ปฌ ๋ ˆํฌ์—์„œ develop ๋ธŒ๋žœ์น˜ ์ตœ์‹ ํ™” : git pull (origin develop) 

3. Branch ์ƒ์„ฑ : git switch -c Prefix/#IssueNumber-description 
  > ์˜ˆ์‹œ) chore/#3-Project-Setting

4. ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์ž‘์—… ํ›„ Add -> Commit -> Push -> Pull Request์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.
  
  Prefix์˜ ์˜๋ฏธ
  > [Feat] : ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ตฌํ˜„
  > [Chore] : ๊ทธ ์ด์™ธ์˜ ์žก์ผ/ ๋ฒ„์ „ ์ฝ”๋“œ ์ˆ˜์ •, ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ, ํŒŒ์ผ ์ด๋™, ํŒŒ์ผ์ด๋ฆ„ ๋ณ€๊ฒฝ
  > [Add] : ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†๋Š” ๋‹จ์ˆœ ํŒŒ์ผ ์ถ”๊ฐ€, ์—์…‹ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€
  > [Fix] : ๋ฒ„๊ทธ, ์˜ค๋ฅ˜ ํ•ด๊ฒฐ, ์ฝ”๋“œ ์ˆ˜์ •
  > [Style] : ์ฝ”๋“œ ํฌ๋งทํŒ…, ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์—†๋Š” ๊ฒฝ์šฐ, ์ฃผ์„ ์ˆ˜์ •
  > [Docs] : README๋‚˜ WIKI ๋“ฑ์˜ ๋ฌธ์„œ ๊ฐœ์ •
  > [Refactor] : ์ „๋ฉด ์ˆ˜์ •์ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
  > [Test] : ํ…Œ์ŠคํŠธ ๋ชจ๋“œ, ๋ฆฌํŽ™ํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€

5. Pull Request ์ž‘์„ฑ 
  - closed : #IssueNumber๋กœ ์ด์Šˆ ์—ฐ๊ฒฐ, ๋ฆฌ๋ทฐ์–ด ์ง€์ •

6. Code Review ์™„๋ฃŒ ํ›„ Pull Request ์ž‘์„ฑ์ž๊ฐ€ develop Branch๋กœ mergeํ•˜๊ธฐ
  - Develop Branch protection rules : Merge ์ „ ์ตœ์†Œ 1 Approve ํ•„์š”

7. ์ข…๋ฃŒ๋œ Issue์™€ Pull Request์˜ Label๊ณผ Project๋ฅผ ๊ด€๋ฆฌ

โœจ Naming & Code Convention

  • ํ•จ์ˆ˜, ๋ฉ”์„œ๋“œ : lowerCamelCase ์‚ฌ์šฉํ•˜๊ณ , ๋™์‚ฌ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
  • ๋ณ€์ˆ˜, ์ƒ์ˆ˜ : lowerCamelCase ์‚ฌ์šฉํ•œ๋‹ค.
  • ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, enum, extension ๋“ฑ : UpperCamelCase ์‚ฌ์šฉํ•œ๋‹ค.
  • ๊ธฐ๋ณธ MVC ํด๋”๋ง ๊ตฌ์กฐ์— ๋”ฐ๋ผ ํŒŒ์ผ์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํŒŒ์ผ, ๋ฉ”์„œ๋“œ, ํด๋ž˜์Šค ๋ช… ์•ฝ์–ด ์‚ฌ์šฉ ์ง€์–‘ํ•œ๋‹ค.
    • ์˜ˆ์‹œ) ViewController โ†’ VC (โŒ)
    • ์˜ˆ์‹œ) CollectionViewCell โ†’ CVC (โŒ)
    • ์˜ˆ์‹œ) loginButtonDidTap: UIButton -> loginBtnTapped (โŒ)
  • ์ดˆ๊ธฐ UI ๋ ˆ์ด์•„์›ƒ ์žก์•„์ค„๋•Œ๋งŒ configure ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ด์™ธ๋Š” set ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • ์˜ˆ์‹œ) func configureUI โ†’ func setUI (โŒ)
    • ์˜ˆ์‹œ) func setDelegate ... โ†’ func configureDelegate (โŒ)
  • ์ด์™ธ ๊ธฐ๋ณธ ๋ช…๋ช…๊ทœ์น™์€ Swift Style Guide, API Design Guidelines , Swift Style Guide๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.
  • ์ƒ์†๋ฐ›์ง€ ์•Š๋Š” ํด๋ž˜์Šค๋Š” final ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์ธ๋‹ค.
  • ๋‹จ์ผ ์ •์˜ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ํŠน์ • ๊ธฐ๋Šฅ ๊ตฌํ˜„์€ private ์ ‘๊ทผ ์ œํ•œ์ž๋ฅผ ์ ๊ทน ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ€ตํ—ฌํ”„๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•œ ๋งˆํฌ์—… ๋ฌธ๋ฒ•์„ ํ™œ์šฉํ•œ ์ฃผ์„์„ ์ ๊ทน ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ด์™ธ๋Š” ์ปค์Šคํ…€ํ•œ SwiftLint Rule์„ ์ ์šฉํ•œ๋‹ค.
    • ์ œ์™ธ์‚ฌํ•ญ
    • trailing_whitespace
    • identifier_name
    • line_length
    • type_name

โœจ Project Foldering

Happic-iOS
โ”ฃ Base.lproj
โ”ƒ โ”— Main.storyboard
โ”ฃ Global
โ”ƒ โ”ฃ Literal
โ”ƒ โ”ฃ Base
โ”ƒ โ”ฃ Protocols
โ”ƒ โ”ฃ Util
โ”ƒ โ”ฃ Extension
โ”ƒ โ”ฃ Resource
โ”ƒ โ”ƒ โ”ฃ Assets.xcassets
โ”ƒ โ”ƒ โ”ƒ โ”ฃ AccentColor.colorset
โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— Contents.json
โ”ƒ โ”ƒ โ”ƒ โ”ฃ AppIcon.appiconset
โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— Contents.json
โ”ƒ โ”ƒ โ”ƒ โ”— Contents.json
โ”ƒ โ”ƒ โ”— Base.lproj
โ”ƒ โ”ƒ โ”ƒ โ”— LaunchScreen.storyboard
โ”ƒ โ”ฃ Supports
โ”ƒ โ”ƒ โ”ฃ AppDelegate.swift
โ”ƒ โ”ƒ โ”— SceneDelegate.swift
โ”ƒ โ”— UIComponent
โ”ฃ Network
โ”ƒ โ”ฃ APIService
โ”ƒ โ”ฃ Foundation
โ”ƒ โ”— Model
โ”ฃ Screens
โ”ƒ โ”ฃ Auth
โ”ƒ โ”ฃ CreateCharacter
โ”ƒ โ”ฃ CreateContents
โ”ƒ โ”ฃ HappicCapsule
โ”ƒ โ”ฃ HappicReport
โ”ƒ โ”ฃ HaruHappic
โ”ƒ โ”ฃ Home
โ”ƒ โ”ฃ Setting
โ”ƒ โ”— Tabbar
โ”— Info.plist



Task

๋Œ€๋ถ„๋ฅ˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์—ฌ๋ถ€ ๋‹ด๋‹น์ž
์˜จ๋ณด๋”ฉ ๋Ÿฐ์น˜์Šคํฌ๋ฆฐ ์œค์ˆ˜๋นˆ
ย  ์˜จ๋ณด๋”ฉ - ์œค์ˆ˜๋นˆ
ํšŒ์›๊ฐ€์ž… ์†Œ์…œ๋กœ๊ทธ์ธ ์œค์ˆ˜๋นˆ
ย  ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๋ทฐ ๊ฐ•์Šนํ˜„
ย  ์บ๋ฆญํ„ฐ ์„ ํƒ ๊ฐ•์Šนํ˜„
ํ™ˆ ์บ๋ฆญํ„ฐ ๋ทฐ ์ด์„ธ์ง„
ํ•˜๋ฃจํ•ดํ”ฝ ์‚ฌ์ง„, ํƒœ๊ทธ ๋ทฐ ์œค์ˆ˜๋นˆ
ย  ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ์œค์ˆ˜๋นˆ
ย  ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ธ๋ณด๊ธฐ ์œค์ˆ˜๋นˆ
ํ•ดํ”ฝ์บก์Š ์บก์Š๋ฝ‘๊ธฐ ๋ทฐ ์ด์„ธ์ง„
ย  ํ‘ธ์‹œ ์•Œ๋ฆผ ์ด์„ธ์ง„
ํ•ดํ”ฝ๋ ˆํฌํŠธ ์ „์ฒด๋ณด๊ธฐ ์ด์„ธ์ง„
ย  ํ‚ค์›Œ๋“œ ์ˆœ์œ„ ์ด์„ธ์ง„
ย  ์นดํ…Œ๊ณ ๋ฆฌ ์ˆœ์œ„ ์ด์„ธ์ง„
ย  ์›” ๊ธฐ๋ก ํšŸ์ˆ˜ ์ด์„ธ์ง„
์„ค์ • ์„ค์ • ๋ทฐ ์ด์„ธ์ง„



Be happy, Take a happic:


Group 2325@3x

Releases

No releases published

Packages

No packages published

Languages