Bright is meant as a little demonstration application showcasing several aspect of iOS development.
- SwiftUI
- MVVM & Coordinator
- Big usage of protocols oriented dev
- Uses latest Apple's Combine
- Use dependency injection
- Embarks Cache / Image lazy loading / Network / Some animation
- Pure Swift
- iOS 13 compitible
- Search page
- Implement Linters (swiftlint/ swiftformat)
- Implement Testing
- Implement new feature
- Use dependency injection further
- Documentation
- Crash logger (firebase)
- Refined caching system
- Paginated network call
- Infinite scrolling in pages
I wanted to try a achieve the implementation of this project using only SwiftUI. This is quite a challenge about of the iOS backward compatibility going back to iOS13 and SwitUI 1.0. This version of SwiftUI is limited compared to the new versions. Therefor I had to try and find or build workarounds for some of the difficulties I encountered.
The project in build around the MVVM & Coordinator
pattern. It is a well known and shoudl be easy to comprehend.
To keep a Clean and SOLID architecture
all the networking is done in repositories that are injected through dependency injection
to the viewModel.
The communication between the element of the project is mainly done throught Combine Publishers
. The data flow come from single soruces of trouth that are the repositories.
The Cache system is based on a very simple Generic NSCache implementation.
The Network implementation is based on a small networking library I created based around the new combine publisher integrated into URLSession Data tasks. I enables us to easily create network services using the power of swift generics. Jolt
The Depency injection tool is a simplyfied version of Resolver. Resolver