Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/denissimon/cryptocurrency-info
Example iOS app designed using MVVM-C and Layered Architecture. Uses Swift Concurrency.
https://github.com/denissimon/cryptocurrency-info
app architecture async-await clean-code coordinator cryptocurrency demo-app ios ios-app layered-architecture mvvm mvvm-architecture mvvm-c swift swift-concurrency viewmodel xcode
Last synced: about 1 month ago
JSON representation
Example iOS app designed using MVVM-C and Layered Architecture. Uses Swift Concurrency.
- Host: GitHub
- URL: https://github.com/denissimon/cryptocurrency-info
- Owner: denissimon
- License: mit
- Created: 2021-02-09T08:38:49.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-10-16T18:11:08.000Z (2 months ago)
- Last Synced: 2024-10-18T11:38:47.456Z (2 months ago)
- Topics: app, architecture, async-await, clean-code, coordinator, cryptocurrency, demo-app, ios, ios-app, layered-architecture, mvvm, mvvm-architecture, mvvm-c, swift, swift-concurrency, viewmodel, xcode
- Language: Swift
- Homepage:
- Size: 4.08 MB
- Stars: 4
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Cryptocurrency Info
[![Swift Version](https://img.shields.io/badge/Swift-5-F16D39.svg?style=flat)](https://swift.org)
[![Platforms](https://img.shields.io/badge/platform-iOS-lightgrey.svg)](https://developer.apple.com/swift/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/denissimon/Cryptocurrency-Info/blob/master/LICENSE)Example iOS app designed using MVVM-C and Layered Architecture. Uses Swift Concurrency.
The app shows cryptocurrency prices and other related info. Built with Messari API.
It has two modules: AssetsList and AssetDetails. The list of cryptocurrencies is loaded in batches.
### Architecture concepts used here
- [Layered Architecture][LayeredArchitectureLink]
- [MVVM][MVVMLink]
- [Flow coordinator][FlowCoordinatorLink]
- [Dependency Injection][DIContainerLink], DIContainer
- [Data Binding][DataBindingLink] using the lightweight Observable\
- [Closure-based delegation][ClosureBasedDelegationLink] using the lightweight Event\
- [Reusable data sources][DataSourceLink][LayeredArchitectureLink]: https://en.wikipedia.org/wiki/Multitier_architecture
[MVVMLink]: https://github.com/denissimon/Cryptocurrency-Info/tree/master/CryptocurrencyInfo/Modules/AssetsFeature/AssetDetails
[FlowCoordinatorLink]: https://github.com/denissimon/Cryptocurrency-Info/tree/master/CryptocurrencyInfo/Coordinator
[DIContainerLink]: https://github.com/denissimon/Cryptocurrency-Info/blob/master/CryptocurrencyInfo/Coordinator/DIContainer/DIContainer.swift
[DataBindingLink]: https://github.com/denissimon/Cryptocurrency-Info/blob/master/CryptocurrencyInfo/Modules/AssetsFeature/AssetsList/ViewModel/AssetsListViewModel.swift
[ClosureBasedDelegationLink]: https://github.com/denissimon/Cryptocurrency-Info/blob/master/CryptocurrencyInfo/Modules/AssetsFeature/AssetsList/View/AssetsListDataSource.swift
[DataSourceLink]: https://github.com/denissimon/Cryptocurrency-Info/blob/master/CryptocurrencyInfo/Modules/AssetsFeature/AssetsList/View/AssetsListDataSource.swift### Includes
- [async/await][AsyncAwaitLink] with the existing Infrastructure remaining unchanged
- [Shared events service][SharedEventsLink]
- Advanced using of [Codable][CodableLink]
- Localization
- Unit tests[AsyncAwaitLink]: https://github.com/denissimon/Cryptocurrency-Info/tree/master/CryptocurrencyInfo/Data/Repositories
[SharedEventsLink]: https://github.com/denissimon/Cryptocurrency-Info/blob/master/CryptocurrencyInfo/Common/Utils/SharedEvents.swift
[CodableLink]: https://github.com/denissimon/Cryptocurrency-Info/blob/master/CryptocurrencyInfo/Modules/AssetsFeature/AssetDetails/Models/Profile.swift### Built with
- [SwiftEvents](https://github.com/denissimon/SwiftEvents) - The easiest way to implement data binding and notifications. Includes Event\ and Observable\. Has a thread-safe version.
- [URLSessionAdapter](https://github.com/denissimon/URLSessionAdapter) - A Codable wrapper around URLSession for networking.
- [Toast-Swift](https://github.com/scalessec/Toast-Swift) - A Swift extension that adds toast notifications to the UIView object class.
- [UAObfuscatedString](https://github.com/UrbanApps/UAObfuscatedString) - A simple category to hide sensitive strings from appearing in your binary.The dependency manager is [CocoaPods](https://cocoapods.org). Run `pod update` to update pods.
### Requirements
iOS version support: 15.0+. Xcode 13.0+, Swift 5.5+