| ํฐ๋ชจ | ๋๋ | ๋ฒจ๋ผ |
|---|---|---|
![]() |
![]() |
|
| PL | FE | FE |
| GitHub | GitHub | GitHub |
ReMU๋ ์ฌํ ์ค ๋๋ ๊ฐ์ ๊ณผ ์๊ฐ์ ๊ธฐ๋กํ๊ณ , ์๊ฐ์ด ์ง๋๋ ๋ค์ ๊บผ๋ด๋ณผ ์ ์๋๋ก ์ค๊ณ๋ ๊ฐ์ ์ค์ฌ ์ฌํ ์ ๋ ์๋น์ค์ ๋๋ค.
- ์ ์ฒด ๊ธฐ๊ฐ:
2025.12.22. - 2026.02.20. - ๊ฐ๋ฐ ๊ธฐ๊ฐ:
2026.01.05. - 2026.02.20.
For building and running the application you need:
iOS 26.0
Xcode 26.0.1
Swift 5
- MVVM ๊ธฐ๋ฐ ๊ตฌ์กฐ
- Moya + Alamofire ๋คํธ์ํฌ ๋ ์ด์ด ๋ถ๋ฆฌ
- DIContainer ๊ธฐ๋ฐ ์์กด์ฑ ์ฃผ์
- Feature ๋จ์ ๋ชจ๋ํ ๊ตฌ์กฐ
|
|
|
- main (master) : ์ถ์ ๊ฐ๋ฅํ ์ํ์ ์ฝ๋๋ฅผ ๋ชจ์๋๋ ๋ธ๋์น (์ง์ push โ, PR๋ก๋ง ๋ณํฉ)
- develop : ๋ค์ ๋ฒ์ ์ ์ํด ๊ฐ๋ฐ ์ค์ธ ์ฝ๋๋ฅผ ๋ชจ์ผ๋ ๋ธ๋์น (๊ธฐ๋ณธ ๋ฒ ์ด์ค)
- feature : ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ๋ธ๋์น (develop์์ ๋ถ๊ธฐ)
- fix : ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ๋ธ๋์น
{ํ๊ทธ} / #{์ด์๋ฒํธ}-{๊ธฐ๋ฅ์ค๋ช }
- ํ๊ทธ๋ ์๋ฌธ์๋ก ์์ฑํฉ๋๋ค.
- ์ด์๋ฒํธ๋ Github Issues์ ๋ฑ๋ก๋ ๋ฒํธ๋ฅผ ์ ์ต๋๋ค. (์ถ์ ์ฉ์ด)
- ๊ธฐ๋ฅ์ค๋ช ์ ์งง์ ์์ด ๋จ์ด๋ก, ๋์ด์ฐ๊ธฐ๋ ํ์ดํ(-)์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค.
feat/#13-login-ui(13๋ฒ ์ด์์ธ ๋ก๊ทธ์ธ UI ๊ตฌํ)fix/#20-token-error(20๋ฒ ์ด์์ธ ํ ํฐ ์๋ฌ ์์ )refactor/#5-api-structure(5๋ฒ ์ด์์ธ API ๊ตฌ์กฐ ๊ฐ์ )
- ์์ | ์ด๋ชจ์ง ์ปค๋ฐ์ ํ: ์ด์ ๋ด์ฉ
- ์์ | ์ด๋ชจ์ง FEAT: ์ฌ์ฉ์ ๋ก๊ทธ์ธ API ๊ตฌํ
-
๋ณ์ & ์์
- ์นด๋ฉ ์ผ์ด์ค(camelCase) ์ฌ์ฉ
- ์๋ฏธ ์๊ณ ์ค๋ช ์ ์ธ ์ด๋ฆ ์ฌ์ฉ
- ๋๋ฌด ์งง๊ฑฐ๋ ๋ชจํธํ ์ด๋ฆ ํผํ๊ธฐ
-
ํจ์ & ๋ฉ์๋
- ๋์ฌ๋ก ์์
- ํจ์์ ์ญํ ์ ๋ช ํํ ์ค๋ช
-
ํด๋์ค & ๊ตฌ์กฐ์ฒด & ์ด๊ฑฐํ
- ๋๋ฌธ์๋ก ์์ (PascalCase)
-
ํ์ ์ถ๋ก
// Bad: ๋ถํ์ํ ํ์
๋ช
์
let explicitDouble: Double = 70.0
// Good: ํ์
์ถ๋ก ์ฌ์ฉ
let implicitDouble = 70.0
- ์ค๋ฅ ์ฒ๋ฆฌ
enum NetworkError: Error {
case badURL
case noData
}
func fetchData(from urlString: String) throws -> Data {
guard let url = URL(string: urlString) else {
throw NetworkError.badURL
}
// ... (์๋ต)
throw NetworkError.noData
}
// ์ฌ์ฉ ์์
do {
let data = try fetchData(from: "https://example.com")
print("Data fetched successfully")
} catch NetworkError.badURL {
print("Invalid URL")
} catch {
print("Unknown error")
}
-
๋ค์ฌ์ฐ๊ธฐ๋ tab ๋์ ๋์ด์ฐ๊ธฐ 4๊ฐ๋ก
-
์ฐ์ฐ์ ์ฃผ๋ณ ๊ณต๋ฐฑ
// ์ข์ ์
let result = 1 + 2
// ๋์ ์
let result=1+2
- ์ค๊ดํธ๋ ์ํฐ ์์ด ์ด๊ธฐ
// ์ข์ ์
func doSomething() {
// ...
}
// ๋์ ์
func doSomething()
{
// ...
}
- ์ฝ๋ก ๋ค์๋ง ๊ณต๋ฐฑ์ ๋ก๋๋ค.
let value: Int
- PR ์, ํ
ํ๋ฆฟ์ด ๋ฑ์ฅํ๋ค. ํด๋น ํ
ํ๋ฆฟ์์ ์์ฑํด์ผํ ๋ถ๋ถ์ ์๋์ ๊ฐ๋ค
PR ์ ํ ์์ฑ, ์ด๋ค ๋ณ๊ฒฝ ์ฌํญ์ด ์์๋์ง [] ๊ดํธ ์ฌ์ด์ x๋ฅผ ์ ๋ ฅํ์ฌ ์ฒดํฌํ ์ ์๋๋ก ํ๋ค.์์ ๋ด์ฉ ์์ฑ, ์์ ๋ด์ฉ์ ๋ํด ์์ธํ๊ฒ ์์ฑ์ ํ๋ค.์ถํ ์งํํ ์์, PR ์ดํ ์์ ํ ๋ด์ฉ์ ๋ํด ์์ฑํ๋ค๋ฆฌ๋ทฐ ํฌ์ธํธ, ๋ณธ์ธ PR์์ ๊ผญ ํ์ธํด์ผ ํ ๋ถ๋ถ์ ์์ฑํ๋ค.PR ํ๊ทธ ์ข ๋ฅ, PR ์ ๋ชฉ์ ํ๊ทธ๋ ์๋ ํ์์ ๋ฐ๋ฅธ๋ค.
Feat: ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐFix: ๋ฒ๊ทธ ์์ Design: CSS, UI/UX ๋์์ธ ๋ณ๊ฒฝ!BREAKING CHANGE: ์ปค๋ค๋ API ๋ณ๊ฒฝ์ ๊ฒฝ์ฐ!HOTFIX: ๊ธํ๊ฒ ์น๋ช ์ ์ธ ๋ฒ๊ทธ๋ฅผ ๊ณ ์ณ์ผ ํ๋ ๊ฒฝ์ฐStyle: ์ฝ๋ ํฌ๋งทํ , ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ, ์ฝ๋ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐRefactor: ์ฝ๋ ๋ฆฌํฉํ ๋ง (๊ธฐ๋ฅ ๋ณ๊ฒฝ ์์, ์ฝ๋ ๊ตฌ์กฐ ๊ฐ์ )Comment: ํ์ํ ์ฃผ์ ์ถ๊ฐ ๋ฐ ๋ณ๊ฒฝDocs: ๋ฌธ์ ์์ Test: ํ ์คํธ ์ฝ๋ ์ถ๊ฐ, ํ ์คํธ ๋ฆฌํฉํ ๋งChore: ๋น๋ ์ ๋ฌด ์์ , ํจํค์ง ๋งค๋์ ์์ , ํ๋ก์ ํธ ์ธํRename: ํ์ผ ํน์ ํด๋๋ช ์ ์์ ํ๊ฑฐ๋ ์ฎ๊ธฐ๋ ๊ฒฝ์ฐRemove: ํ์ผ์ ์ญ์ ํ๋ ๊ฒฝ์ฐ
๐ [Chore] ํ๋ก์ ํธ ์ด๊ธฐ ์ธํ
โจ [Feat] ํ๋กํ ํ๋ฉด UI ๊ตฌํ
๐ [Fix] iOS 17์์ ๋ฒํผ ํด๋ฆญ ์ค๋ฅ ์์
๐ [Design] ๋ก๊ทธ์ธ ํ๋ฉด ๋ ์ด์์ ์กฐ์
๐ [Docs] README์ ํ๋ก์ ํธ ์๊ฐ ์ถ๊ฐ
| ์์ด์ฝ | ์ฝ๋ | ์ค๋ช | ์๋ฌธ |
|---|---|---|---|
| ๐ | 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 | ๋ณด์ ์ด์ ์์ | Fix security issues |
| ๐ | bookmark | ๋ฆด๋ฆฌ์ฆ/๋ฒ์ ํ๊ทธ | Release / Version tags |
| ๐ | memo | ๋ฌธ์ ์ถ๊ฐ/์์ | Add or update documentation |
| ๐ง | wrench | ๊ตฌ์ฑ ํ์ผ ์ถ๊ฐ/์ญ์ | Add or update configuration files. |
| โก๏ธ | zap | ์ฑ๋ฅ ๊ฐ์ | Improve performance |
| ๐จ | art | ์ฝ๋ ๊ตฌ์กฐ ๊ฐ์ | Improve structure / format of the code |
| ๐ฆ | package | ์ปดํ์ผ๋ ํ์ผ ์ถ๊ฐ/์์ | Add or update compiled files |
| ๐ฝ | alien | ์ธ๋ถ API ๋ณ๊ฒฝ ๋ฐ์ | Update code due to external API changes |
| ๐ | truck | ๋ฆฌ์์ค ์ด๋, ์ด๋ฆ ๋ณ๊ฒฝ | Move or rename resources |
| ๐ | see_no_evil | .gitignore ์ถ๊ฐ/์์ | Add or update a .gitignore file |
Feat: ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐFix: ๋ฒ๊ทธ ์์ Design: ์ฌ์ฉ์ UI ๋์์ธ ๋ณ๊ฒฝ (CSS ๋ฑ)!BREAKING CHANGE: ์ปค๋ค๋ API ๋ณ๊ฒฝ์ ๊ฒฝ์ฐ!HOTFIX: ๊ธํ๊ฒ ์น๋ช ์ ์ธ ๋ฒ๊ทธ๋ฅผ ๊ณ ์ณ์ผ ํ๋ ๊ฒฝ์ฐStyle: ์ฝ๋ ํฌ๋งทํ , ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ, ์ฝ๋ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐRefactor: ์ฝ๋ ๋ฆฌํฉํ ๋ง (๊ธฐ๋ฅ ๋ณ๊ฒฝ ์์, ์ฝ๋ ๊ตฌ์กฐ ๊ฐ์ )Comment: ํ์ํ ์ฃผ์ ์ถ๊ฐ ๋ฐ ๋ณ๊ฒฝDocs: ๋ฌธ์ ์์ Test: ํ ์คํธ ์ฝ๋ ์ถ๊ฐ, ํ ์คํธ ๋ฆฌํฉํ ๋งChore: ๋น๋ ์ ๋ฌด ์์ , ํจํค์ง ๋งค๋์ ์์ , ํ๋ก์ ํธ ์ธํRename: ํ์ผ ํน์ ํด๋๋ช ์ ์์ ํ๊ฑฐ๋ ์ฎ๊ธฐ๋ ๊ฒฝ์ฐRemove: ํ์ผ์ ์ญ์ ํ๋ ๊ฒฝ์ฐ
๐ [Chore] ํ๋ก์ ํธ ์ด๊ธฐ ์ธํ
โจ [Feat] ํ๋กํ ํ๋ฉด UI ๊ตฌํ
๐ [Fix] iOS 17์์ ๋ฒํผ ํด๋ฆญ ์ค๋ฅ ์์
๐ [Design] ๋ก๊ทธ์ธ ํ๋ฉด ๋ ์ด์์ ์กฐ์
๐ [Docs] README์ ํ๋ก์ ํธ ์๊ฐ ์ถ๊ฐ
ReMU
โโโ App
โ โโโ AppDelegate.swift
โ โโโ ReMUApp.swift
โโโ Common
โ โโโ Enum
โ โโโ Protocol
โ โโโ UIComponents
โโโ Core
โ โโโ Actor
โ โโโ DIContainer
โ โโโ Image
โ โโโ Keychain
โ โโโ MediaPicker
โ โโโ Navigation
โ โโโ Notification
โ โโโ Utils
โ โโโ APIProviderStore.swift
โโโ Models
โ โโโ Domain
โ โโโ DTO
โโโ Modules
โ โโโ AppFlow
โ โโโ Tab
โโโ Resource
โ โโโ Extension
โ โโโ Font
โ โโโ Modifier
โ โโโ UIConstants
โ โโโ Assets.xcassets
โโโ Service
โ โโโ Feedback
โ โโโ Galaxy
โ โโโ Manager
โ โโโ NetworkCore
โ โโโ Notification
โ โโโ Pledge
โ โโโ Result
โ โโโ Social
โ โโโ AccessTokenRefresher.swift
โโโ ContentView.swift
โโโ Info.plist
โโโ NextView.swift
โโโ testView.swift
โโโ ReMU_Tests




