Skip to content

Clean Architecture and MVVM + Coordinator and Combine

License

Notifications You must be signed in to change notification settings

mehrankmlf/EasyCrypto

Repository files navigation

GitHub Cards Preview

EasyCrypto

This project Contains An iOS app designed using Clean Architecture and MVVM wich implemented with SwiftUI.

Description of The App

EasyCrypto is a simple crypto market app, built with SwiftUI and Combine framework, retrieved data from CoinGecko free APIs that allows developers to access the market data and functionality by making requests with specific parameters to a URL. Conceptual project to present MVVM with new SwiftUI, Combine + Clean approach.

Concepts Used Here

  • Core Data
  • Clean Architecture
  • MVVM
  • Coordinator Pattern
  • Dependency Injection
  • Caching images
  • SwiftLint
  • UnitTest

How to run

EasyCrypto requires iOS 15.0 or later. If you are developer, you can set its deployment target to lower iOS version if needed.

If your XCode 12.0 is not available, you can change deployment target to lower iOS version.

API

Requirements

  • iOS 15.0+
  • Swift +5

Usage

I have explained about EasyCrypto in the form of a post on Medium.

https://medium.com/@mehran.kmlf/clean-architecture-combine-for-swiftui-caf252c0f10c

Style and conventions - SwiftLint

A script runs when building the app that executes SwiftLint to enforce style & conventions to the code.

You can install SwiftLint with Homebrew: brew install swiftlint

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/YourFeatureName)
  3. Commit your Changes (git commit -m 'Add some YourFeatureName')
  4. Push to the Branch (git push origin feature/YourFeatureName)
  5. Open a Pull Request

Thank you!