https://github.com/matsoftware/matfm
Test application for the LastFM API written in Swift for iOS.
https://github.com/matsoftware/matfm
Last synced: about 1 year ago
JSON representation
Test application for the LastFM API written in Swift for iOS.
- Host: GitHub
- URL: https://github.com/matsoftware/matfm
- Owner: matsoftware
- Created: 2017-07-26T11:48:19.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-09-13T17:40:59.000Z (over 8 years ago)
- Last Synced: 2025-02-03T14:47:23.985Z (about 1 year ago)
- Language: Objective-C
- Homepage:
- Size: 5.55 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MatFM
Test application for the LastFM API.
# Install notes
The project has been developed using Swift 3.1 on Xcode 8.3.3 and Carthage as dependency management framework. It runs on both iPhone and iPad.
# Architecture
The project is built using a layered architecture where components on the lower levels have no knowledge of the ones on the upper level to avoid coupling.
The layers are identified with a specific class prefix and group in the Xcode project, and they can be easily moved to separate frameworks if the project grows up.
Starting from the bottom, the layers are:
- **Utility**: Foundation layer to put low level components (in this case, it contains a wrapper around DispatchQueue to improve the stability of tests)
- **Networking**: The core networking layer of the app, containing the logic to perform URL request to retrieve data and parse JSON responses; depends on Utility
- **MusicService**: It's the lowest business logic layer, containing the service responsible to provide the list of tracks using a query text; depends on Networking
- **MusicLibrary**: UI module built with a simplified version of VIPER responsible of presenting the main functionalities of the app to the user; depends on MusicService
# Third party libraries
For convenience and time constraints it has been made use of SDWebImage to fetch UIImages asynchronously and avoid the implementation of a tedious caching mechanism for thumbnails; same reasons stands for PKHUD library, while the choice of SwiftlyJSON comes from the necessity of a solid, handy and easy to use JSON parser in Swift (until Swift 4 becomes stable and it will be possible to make use of the Codable functionalities).
# Known issues
- the caching and timeout settings can be improved
- the async image fetching from the ViewController might constitute a violation of the VIPER approach, but it provides the best trade-off in terms of code complexity and efficiency
- finalize test coverage of the routing component
- improve the look and feel :)
----
Mattia Campolese - info@matsoftware.net - 26th of July 2017.