Решение

Вариант решения задачи, если еще актуальна данная позиция.
Начал делать еще в августе, затем не мог делать долгое время по личным обстоятельствам, смог вернуться к выполнению и доделать только недавно (октябрь).

По времени заняло в сумме приблизительно 25 часов чистого времени, но точно хронометража я не вел. Тратил в среднем по 2 часа в дни когда выполнял.
Build директория содержит собранный проект. Project - рабочее окружение + конфигурация сборщика используется grunt.

В решении в качестве хранилища используется local storage.
Для удобства просмотра функционала при просмотре решения, в хранилище по клику кнопки test, можно добавить тестовые данные, прописанные в самой странице index.html (объект app.testData).
  
Правила валидации определил самостоятельно.

В описании задания не было указанно нужно ли иметь возможность запомнить состояние приложения в роуте, тут я упростил себе задачу и не затрагивал роутинг.