SwiftUIBootstrap Project
This project provides an insight on how to write start a project with SwiftUI
Below are the items that are covered in this project
- SwiftUI Basic UI for Login and Profile Display
- MVVM Architecture
- Realm Database
- Alamofire Network Layer
- Repository Pattern to handle server and local data
- Unit Testing on all layers
Project Structure
- SwiftUIBootStrap
- SwiftUIBootStrap
- SwiftUIBootStrapApp
- AppDelegate
- Base
- Base contains all the base protocols and implementations for network and database layers
- Extensions
- All extensions are placed with proper file name of the extension type are placed in this folder
- Constants
- All constants including Strings, Colors, Fonts and other constants that are being used in the application are placed in this folder
- Custom View Modifiers
- While using SwiftUI we might need to entertain some custom modifiers so these modifiers are placed in this folder
- Configurations
- Envoirnments are configured in this folder and descision will be taken on runing schemes
- Modules
- Project is divided into smallers modules based on their bussiness logic like Authentication, Home Screens, Profile etc and placed inside this folder.
- Views
- All views in a modules are placed in this folder forexample authentication contains login screen, sign up screen, forgot password screen so all of them are considered as one module
- ViewModel
- Every views view model is placed in here and is responsible of interacting with Repository
- Models
- Models of that module are placed in here
- Repository
- Repo
- Repository is responsible of comminucating with Service and Database and response back to View Model
- Service
- Service is responsible of communicating with the remote server and returned mapped data back
- Database
- Database is responsible of communicating with local database and returned response back to repo
- Repo
- Views
- Project is divided into smallers modules based on their bussiness logic like Authentication, Home Screens, Profile etc and placed inside this folder.