The architecture was built using the concepts of Clean Architecture and the SOLID principles. The modularization was composed by:
- CounterCore: Domain layer composed by counter model and all use cases.
- CounterAPI: Data layer composed by remote implementation of domain use cases.
- CounterStore: Data layer composed by local implementation of domain use cases.
- CounterPresentation: Presentation layer composed by the presenters and view models.
- CounterUI: UIKit interfaces that interact with presentation layer.
- CounterTests: Add extra behaviours specific for unit tests.
- CounterApp: The main module, that create features and inject the dependencies, control the navigation flow, add new behaviours trough decorators and adapters.
counters-ios.mov
- Install Xcode.
- Clone this repository.
- Open Counters.xcworkspace:
open Counters.xcworkspace
Xcode will do all the hard work for you 👨💻
- Load counters
- Cache Counters
- Create Counter
- Increment Counters
- Decrement Counters
- Search Counters
- Erase Counters
- Share Counters
- Clean Architecture
- SOLID Principles
- Unit Tests using TDD
- Modularity using Swift Package
- Design Patterns (Strategy, Proxy, Decorator and Adapter)
- UITableViewDiffableDataSource
- View Code
- Dark Mode
- HTTP requests
- Error Handling
- CoreData
- CI using GitHub Actions