Skip to content

AhmedMenaim/GitHubFullApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 

Repository files navigation

GitHubFullApp

👉🏻 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).

Simulator Screen Recording - iPhone 15 Pro - 2023-12-03 at 21 32 40

Approaches followed

  1. Clean architecture with the below diagram.

MVVM-Clean-Diagram

  1. Design patterns like a repository to manage the network responses and the cache (If exists)
  2. Design patterns like dataSource to manage the variables that exist in business logic.
  3. Using SwiftUI in the UI layer.
  4. Network layer from scratch.
  5. Depending on modern concurrency (Async, Await)
  6. Unit tests for two modules.
  7. Dependency injection using Resolver.
  8. Dependency injection using Factory.

Branches

Main Branch

This is the branch that contains the basic implementation for a couple of modules, You can consider it as your starter project.

MVVM Branch

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.

MVVM-Clean branch

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.

DI-Resolver 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.

DI-Factory branch

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

What could be improved?

Will be implemented soon OR Feel free to implement any of them ✊🏻

  1. Coordinator pattern.
  2. Add caching.
  3. Logger in the Network layer.
  4. Combine.
  5. 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.

Communication

📳 You can find me on:

Linkedin: Ahmed Menaim YT-Logo