Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/behrad-kzm/spotifyexplorer
A sample over The Clean Architecture + RxSwift + MVVMC uses the Spotify APIs + Custom Dark Mode+ Unit Tests
https://github.com/behrad-kzm/spotifyexplorer
mvvmc nimble oauth2 rxswift spotify spotify-api swift the-clean-architecture
Last synced: about 2 months ago
JSON representation
A sample over The Clean Architecture + RxSwift + MVVMC uses the Spotify APIs + Custom Dark Mode+ Unit Tests
- Host: GitHub
- URL: https://github.com/behrad-kzm/spotifyexplorer
- Owner: behrad-kzm
- License: mit
- Created: 2020-01-15T18:29:36.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-07T11:23:46.000Z (6 months ago)
- Last Synced: 2024-07-07T12:38:08.300Z (6 months ago)
- Topics: mvvmc, nimble, oauth2, rxswift, spotify, spotify-api, swift, the-clean-architecture
- Language: Swift
- Homepage:
- Size: 20.2 MB
- Stars: 18
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SpotifyExplorer
# A sample over The Clean Architecture + RxSwift + MVVMC uses the Spotify APIs
### Demo
1- Splash
2- Login & Following
3- Albums List
### Installing and build
Dependencies in this project are provided via Cocoapods. Please install all dependecies with
`
pod install
`#### Build sequence:
`
Domain > NetworkPlatform > Application
`## High level overview
![](https://raw.githubusercontent.com/sergdort/CleanArchitectureRxSwift/master/Architecture/Modules.png)#### Domain
The `Domain` is basically what is the App about and what it can do (Entities, UseCase etc.) **It does not depend on UIKit or any persistence framework**, and it doesn't have implementations apart from entities
#### Platform
The `Platform` is a concrete implementation of the `Domain` in a specific platform like iOS. It does hide all implementation details.
#### Application
`Application` is responsible for delivering information to the user and handling user input. It can be implemented with any delivery pattern e.g (in SpotifyExplorer app is MVVM). This is the place for `UIView`s and `UIViewController`s. As you will see from the SpotifyExplorer app, `ViewControllers` are completely independent of the `Platform`. The only responsibility of a view controller is to "bind" the UI to the Domain to make things happen.### Refrences
* [RxSwift](https://github.com/ReactiveX/RxSwift)
* [RxSwift Book](https://store.raywenderlich.com/products/rxswift)
* [Robert C Martin - Clean Architecture and Design](https://www.youtube.com/watch?v=Nsjsiz2A9mg)
* [Cycle.js](https://cycle.js.org)
* [ViewModel](https://medium.com/@SergDort/viewmodel-in-rxswift-world-13d39faa2cf5#.qse37r6jw) in Rx world### Contact me
* feel free to contact by [Email](mailto://[email protected])
* or send me message on [Telegram](https://t.me/berad)