KazanExpress Frontend test task
Каждая новая вкладка с приложением - отдельный проект со своим списком задач;Редактируемое название проекта в качестве заголовка страницы;Список с задачами:Добавление новой задачи в список;Удаление любой задачи из списка;Возможность пометить любую задачу сделанной и возможность убрать эту пометку (mark as done/not done);
Вся информация (название проекта, список задач, состояние задач) должна сохраняться при перезагрузке страницы;
Опционально:
Возможность добавлять подзадачи в любую задачу (с потенциально бесконечной глубиной);Поле ввода для поиска/фильтрации задач в списке (фильтр должен сохраняться после перезагрузки страницы);Возможность редактирования названия задачи после её создания;
Все требования easy, включая опциональные. А также:
Возможность перемещать любые задачи (со всем списком подзадач) из любого открытого проекта в любой другой открытый проект;Нельзя использоватьLocalStorage
,Cookies
,IndexedDB
иWebSQL
хранилища;- Экспорт проекта в файл / импорт проекта из файла;
- Имя сохраняемого файла должно соответствовать названию проекта.
- Drag-n-drop для перемещения задач в списке;
- Сохранение текущего фильтра для возможности его быстрого применения потом;
Итоговое приложение должно весить не более 200 KB (сумма всех загружаемых браузером файлов, включая сторонние библиотеки, gzipped);
Опционально:
- Наличие CSS-анимаций для drag-n-drop и фильтрации задач;
Использовать TypeScript для 100% кодовой базы (исключая вёрстку и стили);- Использовать Vue Composition API или vue@next;
Использовать ESLint/TSLint для контроля качества кода (приветствуется использование настройки KazanExpress/TSLint);Использовать сборщик/бандлер (например, webpack) для сборки приложения в SPA;
Все требования medium, включая опциональные, а также:
- Итоговое приложение должно весить не более 100 KB (сумма всех загружаемых браузером файлов, включая сторонние библиотеки, gzipped);
- Drag-n-drop с поддержкой тач-скрина;
Масштабируемость на мобильные устройства до 320*480px (iPhone 4);Возможность быстрого просмотра и редактирования описания у любой задачи;
Опционально:
SSR;- PWA;
- Опция фильтрации задач по RegExp;
- Если в двух вкладках открыт один и тот же проект (например, совершён импорт из одного и того же файла),
все действия в этих вкладках/проектах должны синхронизироваться без задержки.
Включая (но не ограничиваясь):- Название проекта;
- Список, состояния, описания, порядок и названия всех задач
(например, при добавлении задачи в одной вкладке - она должна появиться и в другой); - Список сохранённых фильтров;
- Возможность добавлять/удалять именованные списки для задач, между которыми их можно перетаскивать (как в trello)
# install dependencies
$ npm install
# serve with hot reload at localhost:3000
$ npm run dev
# build for production and launch server
$ npm run build
$ npm run start
# generate static project
$ npm run generate
For detailed explanation on how things work, check out Nuxt.js docs.