An application for crypto lovers. You can browse through coins, share them and access their details easily.
| Home Screen | Detail Screen |
|---|---|
![]() |
![]() |
- Explore the Crypto world
- The Crypto datas are fetching from an Mock API so they are not real-time.
- Learn more about coins with graphs and additional informations
- Share your favorite coins with your friends
- UIKit
- MVVM
- Programmatic UI
- SafariServices
- Alamofire
- SDWebImage
- Xcode: Version 15.3
- Language: Swift 5.10
- Minimum iOS Version: 17.4
- Dependency Manager: SPM
| MVVM Architecture |
|---|
![]() |
In developing CoinCo App, the programmatically approuch and MVVM (Modal-View-ViewModel) architecture are being used for these key reasons:
- Separation of Concerns: MVVM cleanly separates the UI (View) from business logic and data (ViewModel), promoting code clarity and ease of maintenance.
- Testability: MVVM enables easy unit testing of ViewModel logic independently of the UI, leading to more robust and reliable code.
- Code Reusability: ViewModel classes in MVVM can be reused across different views, reducing duplication and promoting modular development.
- UI Responsiveness: MVVM's data binding mechanisms ensure that the UI updates automatically in response to changes in underlying data, enhancing user experience.
- Maintainability and Scalability: With its modular design, MVVM simplifies maintenance and enables the addition of new features without disrupting existing functionality.
- Support for Data Binding: MVVM aligns well with data binding frameworks, reducing boilerplate code and improving developer productivity.
- Enhanced Collaboration: MVVM's clear separation of concerns allows developers with different skill sets to work concurrently on different parts of the application.
- Adaptability to Platform Changes: MVVM provides a flexible architecture that can easily adapt to changes in platform requirements or UI frameworks, ensuring long-term viability.
Before you begin, ensure you have the following:
- Xcode installed
Also, make sure that these dependencies are added in your project's target:
- Alamofire: Alamofire is an elegant HTTP networking library for Swift that simplifies network requests and handling responses.
- SDWebImage: SDWebImage is a widely-used library for asynchronously downloading and caching images in iOS and macOS applications, providing a seamless and efficient way to manage image loading.
- Clone the repository:
git clone https://github.com/guraygul/CoinCo.git
- Open the project in Xcode::
cd CoinCo
open CoinCo.xcodeproj- Add required dependencies using Swift Package Manager:
Alamofire
SDWebImage
- Build and run the project.
- Learn more button has no padding for the bottom of the screen in IPhone SE due to Scroll View hierarchy
- Decentraland (MANA) image is bad due to the url of the API
- It would be better if we were fetching the data from a real-time API
- Localization for other languages can be added to be able to reach more user.
- More refactoring could be done for the Controllers.


