Требования к коду

Суть этого тестового - решить поставленную задачу минимально необходимым набором сущностей. Вам не нужно писать собственный фреймворк. Чересчур сложная архитектура не приветствуется, хотя и не штрафуется. Фактически, хватит пары контроллеров, одной модели (Task или ToDoItem. При желании можно также заявить User), нескольких шаблонов и роутера.

Протокол тестирования