- Notifications
You must be signed in to change notification settings - Fork54
Three different architectures (Model-View, Redux, MVVM) for using SwiftUI implemented at the example of a chat app
License
QuickBirdEng/SwiftUI-Architectures
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This repository contains implementations of a simple chat client called QBChat. Each implementation uses SwiftUI while applying a different architecture (Model-View, Redux & ViewState MVVM).More explanation about each SwiftUI architecture example can be found inthis blog article.Currently, QBChat is implemented using the following app architectures:
The Model-View architecture does not enforce abstraction of business logic from Views similar to the MVC architecture pattern with UIKit.
InRedux-like architectures, a global state is used to ensure consistency across all Views being kept in Stores. View components can trigger Actions which are interpreted into state changes by a reducer.
ViewState MVVM uses separate ViewModels for each View (if required). Instead of a global state and global actions, ViewState MVVM creates a separate ViewModel interface for each View containing a State and different Inputs.
SwiftUI-Architectures is created with ❤️ byQuickBird Studios.
To get more information on the different app architectures check outour blog post.
Open an issue if you need help, if you found a bug, or if you want to discuss a feature request.
Open a PR if you want to add other SwiftUI app architectures to the repository or make changes to the different implementations.
SwiftUI-Architectures is released under an MIT license. SeeLicense.md for more information.
About
Three different architectures (Model-View, Redux, MVVM) for using SwiftUI implemented at the example of a chat app
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Contributors3
Uh oh!
There was an error while loading.Please reload this page.


