Планер задач
Тестовое задание для itprojects.management. Товарищи из этой конторы оказались сомнительными личностями, с сомнительными ценностями. Не рекомендовал бы там работать.
Реализация
- Модальное окно сделано глобальным компонентом, а вот его реализации со слотами для TODO являются локальными.
- Компонент TODO имеет свой стор которые импортируется модулем в стор приложения делая модуль легко встраиваемым.
- Дизайн TODO адаптивен.
- Протестировано в chrome и ff последних версий.
- На незадействованные маршруты стоит заглушка 404.
- Используется 2 шрифта. Merriweather для основного текста и жирное начертание для заголовков и иконочный шрифт с сайта icomoon
ТЗ
Средствами Vue.js реализуйте небольшое SPA приложение для заметок. Каждая заметка имеет название и список задач (todo list), далее - Todo. Каждый пункт Todo состоит из чекбокса и относящейся к нему текстовой подписи. Приложение состоит всего из 2х страниц. На главной странице отображается список всех заметок. Для каждой заметки отображается заголовок и Todo, сокращенный до нескольких пунктов, без возможности отмечать.
Действия на главной:
- перейти к созданию новой заметки
- перейти к изменению
- удалить (необходимо подтверждение)
Страница изменения заметки позволяет определенную заметку отредактировать, отметить пункты Todo, а после сохранить изменения.
Действия с заметкой:
- сохранить изменения
- отменить редактирование (необходимо подтверждение)
- удалить (необходимо подтверждение)
- отменить внесенное изменение
- повторить отмененное изменение
Действия с пунктами Todo:
- добавить
- удалить
- отредактировать текст
- отметить как выполненный
Требования к функционалу:
- Все действия на сайте должны происходить без перезагрузки страницы.
- Подтверждение действий (удалить заметку) выполняется с помощью диалогового окна.
- Интерфейс должен отвечать требованиям usability.
- После перезагрузки страницы состояние списка заметок должно сохраняться.
- Можно пренебречь несоответствием редактирования текста с помощью кнопок отменить/повторить и аналогичным действиям с помощью комбинацией клавиш (Ctrl+Z, Command+Z, etc.).
Технические требования:
- Диалоговые окна должны быть реализованы без использования “alert”, “prompt” и “confirm”.
- В качестве языка разработки допускается использовать JavaScript или TypeScript.
- В качестве сборщика, если это необходимо, используйте Webpack.
- Верстка должна быть выполнена без использования UI библиотек (например Vuetify).
- Адаптивность не обязательна, но приветствуется.
- Логика приложения должна быть разбита на разумное количество самодостаточных Vue-компонентов.
Особое внимание стоит обратить на следующие моменты:
- Код должен быть написан понятно и аккуратно, с соблюдением табуляции и прочих элементов написания, без лишних элементов и функций, не имеющих отношения к функционалу тестового задания, снабжен понятными комментариями.
- Читабельность и наличие элементарной архитектуры.
- Чистота и оформление кода — не менее важный фактор. Код должен быть написан в едином стиле (желательно в рекомендуемом для конкретного языка). Также к чистоте относятся отсутствие копипаста и дублирования логики.
Улучшения
- Опциональное хранение заметок на удаленном хранилище, скажем бесплатная версия firebase.
- Нужна абстракция на внешним хранением данных заметки. Скажем network, которая уже будет обращаться в сеть, локал стор или куда бы то ни было за рамками приложения. Решил не делать, чтобы не усложнять код для этого задания.
- При переходе браузером назад предлагать сохранить изменения заметки. popstate
- Добавить кастомные алерты для отзывчивости приложения.
- Мне для того приложения хотелось бы иметь возможность объединять списки по группам, например в папки. Скажем, рабочие, паутинки и так далее.