https://github.com/lamnguyen17/swiftui-clean-architecture
β‘οΈ Architecture IOS app with SwiftUI β‘οΈ. π Clean Architecture - πΈ Reactive Programming (RxSwift) - π€SOLID - π Resolver (DI) - π₯ MVVM - π° MVI
https://github.com/lamnguyen17/swiftui-clean-architecture
alamofire architecture clean-architechture clean-code kingfisher mvi mvi-architecture mvvm mvvm-architecture reactive-programming resolver rxswift solid
Last synced: about 1 month ago
JSON representation
β‘οΈ Architecture IOS app with SwiftUI β‘οΈ. π Clean Architecture - πΈ Reactive Programming (RxSwift) - π€SOLID - π Resolver (DI) - π₯ MVVM - π° MVI
- Host: GitHub
- URL: https://github.com/lamnguyen17/swiftui-clean-architecture
- Owner: LamNguyen17
- Created: 2024-05-22T03:04:51.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-22T05:01:15.000Z (over 1 year ago)
- Last Synced: 2025-01-22T09:11:32.967Z (9 months ago)
- Topics: alamofire, architecture, clean-architechture, clean-code, kingfisher, mvi, mvi-architecture, mvvm, mvvm-architecture, reactive-programming, resolver, rxswift, solid
- Language: Swift
- Homepage:
- Size: 1020 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SwiftUI Architectures: Clean Architecture, MVVM / MVI
This guide encompasses best practices and recommended architecture for building robust, high-quality apps
- [Guide to app architecture](https://developer.android.com/topic/architecture?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-architecture%3Fhl%3Dvi%23article-https%3A%2F%2Fdeveloper.android.com%2Ftopic%2Farchitecture)## π Introduction
### β‘οΈ Dependencies
- [RxSwift](https://github.com/ReactiveX/RxSwift) : Rx is a generic abstraction of computation expressed through Observable interface, which lets you broadcast and subscribe to values and other events from an Observable stream
- [Alamofire](https://github.com/Alamofire/Alamofire) : Alamofire is an HTTP networking library written in Swift
- [Kingfisher](https://github.com/onevcat/Kingfisher) : Kingfisher is a powerful, pure-Swift library for downloading and caching images from the web. It provides you a chance to use a pure-Swift way to work with remote images in your next app.
- [Resolver](https://github.com/hmlongco/Resolver) : An ultralight Dependency Injection / Service Locator framework for Swift 5.x on iOS## π Module Structure

There are 3 main modules to help separate the code. They are Data, Domain, and Presentaion.
- **Data** contains Local Storage, APIs, Data objects (Request/Response object, DB objects), and the
repository implementation.
- **Domain** contains UseCases, Domain Objects/Models, and Repository Interfaces
- **Presentaion** contains UI, View Objects, Widgets, etc. Can be split into separate modules itself
if needed. For example, we could have a module called Device handling things like camera,
location, etc.## π Screenshoots
| Default Search | Search keyword (ex: flo) |
|:------------------------------------------:|:-------------------------------------------:|
|  |  |