-
Project code on Drive + Video of app working : https://drive.google.com/drive/folders/1Stlm5bkvqWdL-LLpe_mWQSWYrK5u0FG5
-
Minimum Deployment target :
iOS 14 -
iOS target :
iOS 15 -
UI FrameWork :
SWIFTUI -
Design architecture :
TCA+Combine -
Dependencies :
- clone the app, or download the from Drive
- resolve package versions
- run the app on a simulator or phone
- give app location permission to be able to see the distance between you and jobs (
choose always allow location while using the app) - you may need to restart the app after giving location permission
-
if all jobs distanc show 12.km this means app did not get your location try :
- Restart the app
- select
always allow while using appon location pop - Restart the app again , then enjoy
-
if packages not resolved try the following
File -> Packages -> Reset Package cacheFile -> Packages -> resolve Package versions- if still not building, try to remove the Reference of
ServiceFrameWorkand its containerPackages - re-add
ServiceFrameWorkagain - make sure to link it to the main target by selecting
Target - > under General tab -> Frameworks , Libraries and Embedded Content -> plus icon
SDK Networking service, and it has the following sub Folders
Shared: have common helpers for all modules e.g Client, EndPoint
Modules: have each module services and stores, for now, it has only ShiftsListModule
it has the following structure
Utilities: has all helpers for the projects, like :
- Extention : has all classes extensions e.g
Date+ - Refreshable : helper to support `iOS 15 list refreshable modifier for iOS 14
- ImageLoader : image loader class to mimic
iOS 15 AsyncImageclass for iOS 14 - ReusableViews : has General UI component e.g
ActionButton , PrimaryButtonView
Resources: Centralized place for all resources that are required by all views.
- Styling : has fonts , colors , spacing
- Images: has system images, and custom images used
- Localization: has all strings localized, now it's only English
Modules: App Scences Modules.
- AppModule: App Parent module in which dependencies are initialized and injected to child module
- ShiftsListModule: The only Module for now, has all presentation logic for shiftsList Scene