Skip to content

Files

Latest commit

 

History

History
89 lines (68 loc) ยท 4.94 KB

README.md

File metadata and controls

89 lines (68 loc) ยท 4.94 KB

Spowift ๐ŸŽต

Platform License: MIT Star on Github
Spowift๋Š” Spotify์—์„œ ์ œ๊ณตํ•˜๋Š” Web API ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์˜ค๋Š˜์˜ ๊ฐ€์žฅ ํ•ซํ•œ ๊ณก, ์•„ํ‹ฐ์ŠคํŠธ ์ •๋ณด๋“ฑ ์Œ์•… ๊ด€๋ จ ์ •๋ณด๋ฅผ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” SwiftUI ์•ฑ์ž…๋‹ˆ๋‹ค.
์ด ์•ฑ์€ ์•„ํ‚คํ…์ฒ˜์™€ ํŒจํ„ด ๊ทธ๋ฆฌ๊ณ  ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ๋“ค์„ ์ ์šฉํ•ด๋ณด๊ณ  Best Practice๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.
Report bug ยท Request feature

Screenshots


Quick start

์ถ”ํ›„ ๋‚ด์šฉ ์ถ”๊ฐ€

Project Structure

Spowift๋Š” Clean Architecture๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ฃผ๋กœ ๋„ค ๊ฐ€์ง€ ์ฃผ์š” ๊ณ„์ธต์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค:

  • Core: ํ™•์žฅ ๊ธฐ๋Šฅ๊ณผ ์˜์กด์„ฑ ์ฃผ์ž… ์ฝ”๋“œ์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๊ณ„์ธต ๊ฐ„์— ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • Data: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š”๋กœ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋””์„œ ๊ฐ€์ ธ์™€์•ผ ํ• ์ง€, ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” '์ค‘๊ฐœ์ž' ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
    ์ด๋ฅผ ํ†ตํ•ด ๋‚˜๋จธ์ง€ ๋ ˆ์ด์–ด์—์„œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋””์„œ ์˜ค๋Š”์ง€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” REST API๋กœ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ์—๋งŒ ์ ‘๊ทผํ•˜์ง€๋งŒ ์ถ”ํ›„ Core Data๋ฅผ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.
  • Domain: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์ฑ…์ž„์ด ์žˆ๋Š” UseCase(UC)๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. UseCase๋Š” ์‚ฌ์šฉ์ž์˜ ํ–‰๋™(ex. getArtistUC)์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. Data Mapping์„ ํ†ตํ•ด Presentation ๋ ˆ์ด์–ด์—์„œ ์‚ฌ์šฉ๋  Entity ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • Presentation: ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ๋ ˆ์ด์–ด๋กœ ๋ทฐ์™€ ์œ ์Šค ์ผ€์ด์Šค ์‚ฌ์ด ์ƒํ˜ธ์ž‘์šฉ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ทฐ๋ชจ๋ธ๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Folder Structure

Tools & Frameworks Used

Tool Used for
MVVM ๋ทฐ์—์„œ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ๋””์ž์ธ ํŒจํ„ด
Clean Architecture ๊ณ„์ธต์„ ๋‚˜๋ˆ„๊ณ  ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋†’์€ ์‘์ง‘๋„ ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„๋กœ ์•ˆ์ •์„ฑ๊ณผ ์ƒ์‚ฐ์„ฑ์„ ๋†’์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ณ
Factory Dependency Injection
Arkana clientKey, SecretKey ๋กœ์ปฌ์— ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅ
SpotifyAPI Spotify ์ปจํ…์ธ  ์š”์ฒญ
Keychain Access Swift Keychain api๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ž˜ํผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Development Environment

  • Xcode 15.1
  • Swift 5.9.2
  • iOS Deployment Target 16.0

License

This project is licensed under the MIT License - see the LICENSE file for details