March 12, 2020

Frontend тестовое задание

Есть проблема

Команда не может организованно вести список тасок. У каждого сотрудника есть свои хотелки к системе. Необходимо предоставить максимально приемлемый вариант реализации приложения, который устроит наибольшее количество пользователей.

Хотелки

Петя: Я хочу, чтобы можно было выгружать проект в файл, чтобы я мог прийти домой и открыть его там. Но я не хочу синхронизацию через клауд сервисы. Это небезопасно.

Вася: Я привык работать с тысячами открытых вкладок браузера. Если в самой вкладке будут еще вкладки (подпроекты) - это будет меня бесить. Хочу, чтобы каждая открытая вкладка приложения была отдельным новым проектом, чтобы я их мог менеджить как и все мои вкладки через вкладкоменеджер.exe

Коля: В одной популярной программе по работе с тасками очень плохо сделана фильтрация. Я хочу, чтобы когда я настраиваю фильтр - он, мать его, сохранялся при перезагрузке страницы! Было бы не плохо давать возможность создавать свой пресет фильтров для быстрого применения.

Иван: Вот что должно происходить, когда кликаешь по таске? правильно, должно открыться описание таски. Но другие сервисы посылают меня на новую страницу. Зачем? ведь есть модалки и их все любят! Максимум что я потерплю - выползающее нечто, которое не блокирует пользовательский интерфейс.

Максим: Мне мало платят и я не могу себе позволить мак бук. или любой другой бук. У меня дома стоит Pentium 3 и там XP и старый браузер, который я не могу обновить. Он говорит, что я должен сначала обновить систему. Но я ничего ему не должен! Короче, я работаю из дома и на плохом компе. Пусть не виснет и работает!

Марсель: Я ценитель прекрасного и хочу, чтобы любой софт, который я запускаю на своей машине обладал такими же восхитительными анимациями, как и моя любимая и самая крутая операционная система ♥

Дима: Я ненавижу клавиатуры. Зачем их придумали, если есть тач скрин? Я хочу все двигать пальцами с телефона или планшета. Запилите плиз тач саппорт (драг энд дроп).

Маша: Я хочу работать с коллегой над одним проектом. И было бы классно видеть в моей вкладке то, что делает он в своей.

ТЗ

Приложение для организации задач (Better TODO List).

Требования:

  • Возможность добавлять и удалять задачи [easy]
    • Опционально: Возможность добавлять подзадачи [medium]
  • Возможность помечать задачи сделанными и наоборот [easy]
  • Каждая новая открытая вкладка с приложением - новый проект [easy]
  • Возможность перемещать задачи из проекта в проект [medium]
  • Нельзя использовать LocalStorage, IndexedDb, Cookies [medium]
  • Импорт / Экспорт проекта в файл [medium]
    • Опционально: Реактивность данных между двумя вкладками с одним проектом (если произошел импорт одного и того же проекта в разных вкладках) [hard]
  • Использование Vue.js [easy]
    • Опционально: Использование Vue Composition API [medium]
    • Опционально: SSR [hard]
  • Внешний вид: Не имеет значения (Material, Bootstrap, ...) [easy]
  • Размер финального бандла или сумма всех чанков приложения, включая vendor не должен превышать 200 кб. [medium]
    • Опционально: 100 кб. [hard]

Всё, что не включено в вышеописанных требованиях - оставляется на усмотрение исполнителя.

Требования помечены специальной меткой сложности. medium и hard дают дополнительные очки. easy - базовый функционал, который ожидается от исполнителя в любом случае.

В medium и hard есть возможность получить дополнительные очки при использовании линтеров и Typescript.

Отдельно оценивается чистота кода.