Spowift๋ Spotify์์ ์ ๊ณตํ๋ Web API ๋ฅผ ํ์ฉํ์ฌ ์ค๋์ ๊ฐ์ฅ ํซํ ๊ณก, ์ํฐ์คํธ ์ ๋ณด๋ฑ ์์
๊ด๋ จ ์ ๋ณด๋ฅผ ํ์ธํด ๋ณผ ์ ์๋ SwiftUI ์ฑ์
๋๋ค.
์ด ์ฑ์ ์ํคํ
์ฒ์ ํจํด ๊ทธ๋ฆฌ๊ณ ๋ค์ํ ๊ธฐ์ ๋ค์ ์ ์ฉํด๋ณด๊ณ Best Practice๋ฅผ ์ฐพ๊ธฐ ์ํ ๊ฐ์ธ ํ๋ก์ ํธ์
๋๋ค.
Report bug
ยท
Request feature
์ถํ ๋ด์ฉ ์ถ๊ฐ
Spowift๋ Clean Architecture๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ฃผ๋ก ๋ค ๊ฐ์ง ์ฃผ์ ๊ณ์ธต์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค:
- Core: ํ์ฅ ๊ธฐ๋ฅ๊ณผ ์์กด์ฑ ์ฃผ์ ์ฝ๋์ ๊ฐ์ด ์ฌ๋ฌ ๊ณ์ธต ๊ฐ์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ฝ๋๋ฅผ ํฌํจํฉ๋๋ค.
- Data: ์ ํ๋ฆฌ์ผ์ด์
์ด ํ์๋ก ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋์ ๊ฐ์ ธ์์ผ ํ ์ง, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ '์ค๊ฐ์' ์ญํ ์ ํฉ๋๋ค.
์ด๋ฅผ ํตํด ๋๋จธ์ง ๋ ์ด์ด์์๋ ๋ฐ์ดํฐ๊ฐ ์ด๋์ ์ค๋์ง ์ ๊ฒฝ ์ฐ์ง ์๊ณ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค. ํ์ฌ๋ REST API๋ก ์ธ๋ถ ๋ฐ์ดํฐ์๋ง ์ ๊ทผํ์ง๋ง ์ถํ Core Data๋ฅผ ์ถ๊ฐํ ๊ณํ์ ๋๋ค. - Domain: ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฑ ์์ด ์๋ UseCase(UC)๋ฅผ ํฌํจํฉ๋๋ค. UseCase๋ ์ฌ์ฉ์์ ํ๋(ex. getArtistUC)์ ๊ธฐ๋ฐํ์ฌ ์์ฑ๋ฉ๋๋ค. Data Mapping์ ํตํด Presentation ๋ ์ด์ด์์ ์ฌ์ฉ๋ Entity ๋ฐ์ดํฐ ๋ชจ๋ธ๋ ํฌํจํฉ๋๋ค.
- Presentation: ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ๋ ์ด์ด๋ก ๋ทฐ์ ์ ์ค ์ผ์ด์ค ์ฌ์ด ์ํธ์์ฉ์ ์ฒ๋ฆฌํ๋ ๋ทฐ๋ชจ๋ธ๋ ํฌํจ๋ฉ๋๋ค.
Tool | Used for |
---|---|
MVVM | ๋ทฐ์์ ๋ก์ง์ ๋ถ๋ฆฌํ๊ธฐ ์ํ ์ํคํ ์ฒ ๋์์ธ ํจํด |
Clean Architecture | ๊ณ์ธต์ ๋๋๊ณ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ์ฌ ๋์ ์์ง๋ ๋ฎ์ ๊ฒฐํฉ๋๋ก ์์ ์ฑ๊ณผ ์์ฐ์ฑ์ ๋์ฌ์ค ์ ์๋ ์ํคํ ์ณ |
Factory | Dependency Injection |
Arkana | clientKey, SecretKey ๋ก์ปฌ์ ์์ ํ๊ฒ ์ ์ฅ |
SpotifyAPI | Spotify ์ปจํ ์ธ ์์ฒญ |
Keychain Access | Swift Keychain api๋ฅผ ์ฝ๊ฒ ์ฌ์ฉ ํ ์ ์๊ฒ ํ๋ ๋ํผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
- Xcode 15.1
- Swift 5.9.2
- iOS Deployment Target 16.0
This project is licensed under the MIT License - see the LICENSE file for details