High-level design
This section explains the high-level design of the frontend and backend.
Frontend
Application design follows a slightly different version of the Model-View-Controller (MVC) pattern, with the addition of the Actions, Store, State, and Communication layers to simplify the controller layer of the traditional iOS application MVC pattern. All application layers are explained in the following sections.
Models
Plain old model structures. These models do not have any logic and only consist of properties. There are four types of model:
TodoRequest: This is astructthat is used in backend request calls and conforms toRequestProtocolTodo: This is astructthat representsTododata, and uses theArgoandCurrylibraries to decode the object from JSONTodoViewModelandTodosViewModel: These structs represent data and are used in views and shown to the userTodoLens: These lenses modify theTodomodel
All the aforementioned models are immutable value types.
Views
We have two View subclasses...