Git Product home page Git Product logo

spowift's Introduction

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.