Dependencies in this project are provided via Cocoapods. Please install all dependecies with
pod install
Remember to place youself inside the TheCalendarApp folder via terminal first.
View
- delegates user interaction events to thePresenter
and displays data passed by thePresenter
- All
UIViewController
,UIView
,UITableViewCell
subclasses belong to theView
layer - It shouldn't contain any complex logic.
- All
Presenter
- contains the presentation logic and tells theView
what to present- Usually we have one
Presenter
per scene (view controller) - It doesn't reference the concrete type of the
View
, but rather it references theView
protocol that is implemented usually by aUIViewController
subclass - It should be a plain
Swift
class and not reference anyiOS
framework classes - this makes it easier to reuse it maybe in amacOS
application - It should be covered by Unit Tests
- Usually we have one
Configurator
- injects the dependency object graph into the scene (view controller)Coordinator
- contains navigation / flow logic from one scene to another- Tt might be referred to as a
FlowCoordinator
- It should be referenced only by the
Presenter
.
- Tt might be referred to as a
- Unit Tests are missing at the moment.
- Code comments can be found in several classes highlighting different design decisions or referencing followup resources
- The project structure tries to follow clean code concept that can be found in the references section
- [iOS Swift : MVP Architecture] (https://saad-eloulladi.medium.com/ios-swift-mvp-architecture-pattern-a2b0c2d310a3)
- [iOS : Coordinator pattern in Swift] (https://saad-eloulladi.medium.com/ios-coordinator-pattern-in-swift-39a15aa3b01b)
- [What is Clean Code ?] (https://garywoodfine.com/what-is-clean-code/)