👉🏻 This repo is created to introduce the implementation of the clean architecture concepts over MVVM.
👉🏻 In this repo I'm following the approach of using the different branches and each branch contains some specific updates.
👉🏻 More design patterns can be added but I thought it's better to be like this for now, as they are not being used in the project and it's not a good thing to add more design patterns even if they are not being used or not needed at this time (You can do that only in practicing/educational purposes).
- Clean architecture with the below diagram.
- Design patterns like a repository to manage the network responses and the cache (If exists)
- Design patterns like dataSource to manage the variables that exist in business logic.
- Using SwiftUI in the UI layer.
- Network layer from scratch.
- Depending on modern concurrency (Async, Await)
- Unit tests for two modules.
- Dependency injection using Resolver.
- Dependency injection using Factory.
This is the branch that contains the basic implementation for a couple of modules, You can consider it as your starter project.
I have implemented the normal (The most commonly used MVVM) with some files/folders organization with the base layers needed, You can consider it as your (MVVM) starter project.
This branch is to show how to achieve the diagram mentioned before but I have completed only two modules -> Users & UserDetails with most of the needed layers but other modules are the same in this branch.
Instead of using the normal dependency injection, I have chosen to use one of the third-party libraries that can support and facilitate the process which is Resolver & I completed implementing it for all the needed, and this branch now contains all the modules completed with all the needed layers.
As Resolver may not be supported in the future and all the support will go to the factory which is created by the same author, I thought that this is gonna be a good opportunity to have a look at Factory and the differences between it and the resolver it an opportunity in this branch DI-Factory
Will be implemented soon OR Feel free to implement any of them ✊🏻
- Coordinator pattern.
- Add caching.
- Logger in the Network layer.
- Combine.
- Implement template design for the profile page. (For now, it is left empty for you to attach the suitable design you need to talk about yourself, Maybe I can set a template for it as a portfolio to facilitate the process.
📳 You can find me on: