์ด ๋ฌธ์๋ ํ์ฌ ์ฝ๋๋ฒ ์ด์ค์ ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ๋ค. ์ธ๋ถ ๊ตฌํ๋ณด๋ค ์์คํ ๋ชจ์, ๊ฒฝ๊ณ, ์ฑ ์ ๋ถ๋ฆฌ๋ฅผ ์ฐ์ ํ๋ค.
์ด ๋ฌธ์ ๊ตฌ์ฑ์ matklad์ ARCHITECTURE.md์ rust-analyzer์ architecture ๋ฌธ์์ฒ๋ผ, ํฐ ๊ทธ๋ฆผ๊ณผ ๋ณ๊ฒฝ ๋น์ฉ์ด ํฐ ๊ฒฝ๊ณ๋ฅผ ๋จผ์ ์ค๋ช
ํ๋ ๋ฐฉ์์ ๋ฐ๋ฅธ๋ค.
AGENTS.md๊ฐ ์ฝ๊ธฐ ์์์ ๋ฌธ์ ๊ณ์ฝ์ ์ ์ํ๋ค๋ฉด, ์ด ๋ฌธ์๋ ๊ทธ ๊ณ์ฝ ์๋์์ ์์คํ
๊ตฌ์กฐ๋ฅผ ์ค๋ช
ํ๋ค. ์ธ๋ถ ๊ท์น๊ณผ ์ด์ ๊ธฐ์ค์ docs/ ํ์ ๋ฌธ์๋ก ๋ถ๋ฆฌํ๊ณ , ์ฌ๊ธฐ์๋ ์ ๊ทธ๋ฐ ๊ฒฝ๊ณ๊ฐ ํ์ํ์ง์ ์ง์คํ๋ค.
Dori-iOS๋ TCA ๊ธฐ๋ฐ iOS ํด๋ผ์ด์ธํธ๋ค. ์ฑ์ ์ธ์ฆ ์ํ๋ฅผ ํ์ธํ ๋ค ์จ๋ณด๋ฉ ๋๋ ๋ฉ์ธ ๊ฒฝํ์ผ๋ก ์ง์ ํ๊ณ , ๊ฐ ํ๋ฉด์ ๋ ๋ฆฝ Feature๊ฐ ์ํ๋ฅผ ์์ ํ๋ค.
๊ณ ์์ค ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
User intent
-> View
-> Feature Action
-> Reducer
-> State / Effect
-> Client boundary
-> Platform or Infra
-> Result
-> Reducer
-> Updated state
-> View
ํ์ฌ ๋ฃจํธ ๊ตฌ์กฐ๋ ์ธ ๋จ๊ณ๋ค.
AppFeature
-> splash
-> intro
-> mainTab
Splash๋ ์ง์ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ค.Intro๋ ๋ก๊ทธ์ธ ์์์ ๋ด๋นํ๋ค.MainTab์ ์ค์ ์ฑ ๊ธฐ๋ฅ์ ์กฐํฉํ๋ค.
์ด ๊ตฌ์กฐ์์ ์ธ์ฆ ์ฌ๋ถ ํ๋จ๊ณผ ๋ฉ์ธ ๊ฒฝํ ์ง์ ์ ๋ฃจํธ๊ฐ ์์ ํ๋ค.
ํ์ฌ ํ๋ก์ ํธ๋ ํ ๊ฐ์ง ํจํด๋ง ๊ณ ์งํ์ง ์๊ณ ํ๋ฉด ์ฑ๊ฒฉ์ ๋ฐ๋ผ ์์ด ์ด๋ค.
- ๋ฃจํธ ์ ํ์ ๋ช ์์ route ์ํ๋ก ์ ์ดํ๋ค.
- History ํญ์ stack navigation์ ์ฌ์ฉํ๋ค.
- Calendar๋ ์์ฑ ํ๋ฆ์ presentation ์ํ๋ก ๋์ด๋ค.
- MyPage๋ ์์ฒด navigation path๋ฅผ ๊ฐ์ง๋ค.
- MainTab์ ์์คํ
TabView๋์ ์ฑ ์ ์ฉ ํญ๋ฐ ์ปดํฌ๋ํธ๋ก ํ๋ฉด์ ๊ต์ฒดํ๋ค.
์ค์ํ ์ ์, ์ด๋ค ๋ค๋น๊ฒ์ด์ ๋๊ตฌ๋ฅผ ์ฐ๋ ์ ํ ๊ฒฐ์ ์ด Feature ์ํ์์ ์ค๋ช ๊ฐ๋ฅํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
- ์ฑ ๋ถํธ์คํธ๋ฉ
- dependency ์กฐํฉ
- ๋ฃจํธ route ์์
- ์ฌ์ฉ์ ํ๋ฆ
- ํ๋ฉด ์ํ
- ํ๋ฉด ๊ฐ delegate์ path ์กฐํฉ
- ๋๋ฉ์ธ ๋ชจ๋ธ
- ๊ณตํต ์์กด์ฑ ํค
- ๋์์ธ ์์คํ
- Kakao SDK
- Keychain
- iOS ๋ฐํ์์ ๊ฐ๊น์ด ์ด๋ํฐ
- ๋คํธ์ํฌ ์๋น์ค ๊ตฌํ
- ์ธ์ฆ ์ธํฐ์ ํฐ
- ๋ก๊น ๊ณผ ์์ฒญ ํ์ดํ๋ผ์ธ
- Feature๋
@Dependency๋ฅผ ํตํด ์ธ๋ถ ๊ธฐ๋ฅ์ ์ ๊ทผํ๋ค. - ์ธ๋ถ ์ฐ๋์ feature-specific client๋ก ๋ ธ์ถ๋ ์ ์๊ณ , ๊ณตํต ๋คํธ์ํฌ ํ์ดํ๋ผ์ธ์ Infra์์ ๋ด๋นํ๋ค.
- ์ฑ ์กฐํฉ ์์ ์์ live ๊ตฌํ์ ์ฃผ์ ํ๋ค.
์ด ํ๋ก์ ํธ์์ ์ค์ํ ๊ฒ์ "ํด๋ผ์ด์ธํธ ์ด๋ฆ ํต์ผ"์ด ์๋๋ผ "์ธ๋ถ ์์คํ ์ธ๋ถ๊ฐ Feature ์์ผ๋ก ์์ง ์๋ ๊ฒ"์ด๋ค.
์ธ์ฆ์ ํ๋ฉด ํ๋์ ์ฑ ์์ด ์๋๋ผ ์ฑ ์ ์ญ ์ ์ฑ ์ด๋ค.
- Splash๋ ํ ํฐ ์กด์ฌ ๊ธฐ๋ฐ ์ง์ ํ๋จ์ ๋ด๋นํ๋ค.
- Intro๋ Kakao ๋ก๊ทธ์ธ๊ณผ ์๋ฒ ๋ก๊ทธ์ธ ์์์ ๋ด๋นํ๋ค.
- ํ ํฐ ๋ณด๊ด์ ์ ์ฅ์ ๊ฒฝ๊ณ์์ ์ํํ๋ค.
- ๋คํธ์ํฌ ์ธ์ฆ ์คํจ์ refresh ์ฌ์๋๋ ์ธํฐ์ ํฐ๊ฐ ๋ด๋นํ๋ค.
- refresh ์คํจ ์ ๊ฐ์ ๋ก๊ทธ์์์ ๋ฃจํธ๋ก ์ ํ๋๋ค.
์ฆ, ์ธ์ฆ์ UI, ์ ์ฅ์, ๋คํธ์ํฌ๊ฐ ํ ํ๋ฆ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ๋ค.
- View๋ ์ธ๋ถ ์์คํ ์ธ๋ถ๋ฅผ ์ง์ ๋ค๋ฃจ์ง ์๋๋ค.
- Feature ๊ฐ ์ง์ ๊ฒฐํฉ๋ณด๋ค ๋ถ๋ชจ ์กฐํฉ์ ์ฐ์ ํ๋ค.
- ์ธ์ฆ ์คํจ ์ฒ๋ฆฌ๋ ์ค์ ๊ฒฝ๊ณ์์ ์ค๋ช ๊ฐ๋ฅํด์ผ ํ๋ค.
- ํ์ฌ ํ๋ฉด ๊ตฌ์กฐ๋ ๋ชจ๋ ๊ฒฝ๊ณ๋ฅผ ํ๋ฆฌ์ง ์๋ ์ ์์๋ง ํ์ฅํ๋ค.
- ๋ฌธ์๋ ๊ตฌํ ์์๋ณด๋ค ๊ตฌ์กฐ ๊ท์น์ ์ฐ์ ํ๋ค.
- ์คํํ ์์
์
plan/์์ ์์ํ๊ณ , ์๋ฃ ๊ธฐ๋ก์plan/history.md๋ก ๋์ ํ๋ค.