Вкратце
Есть уже написанный веб-редактор для гитарных нот (на React.js). Требуется разработать для него сайт. Кроме того, нужно написать некоторую функциональность для управления коллекцией: поиск/редактирование/удаление и т.д. Кроме того, нужно сделать единый дизайн для сайта и редактора. Весь код хранится на BitBucket. Редактор взаимодействует с сервером, написанным на C++ и работающим под Linux.
Подробности
Сайт должен быть на двух языках: англ/рус. По умолчанию выбираются в соответствии с локалью браузера; в верхней части экрана должна быть кнопочка для переключения.
В верхней части экрана горизонтальное меню. Пункты меню:
* Главная
* Глобальная коллекция
* Локальная коллекция
* Помощь
* О проекте
В самом низу Условия использования.
Главная страница:
10 новых треков из Глобальной коллекции (ссылки для редактирования).
Раздел новости.
Комментарии FB/VK? (TODO: обсудить; проще всего было бы просто транслировать страницу коммьюнити со всеми новостями и комментариями).
Регистрация:
Кнопки Войти/Регистрация, альтернативно кнопки для логина FB/VK/Twitter/Google. Чтобы зарегистрироваться, нужен уникальный логин, email и пароль. Проверка капчи; галочки "Подписаться на рассылку" и "Согласен с условиями использования" (ссылка на страницу Условия использования), вторая обязательна для регистрации. Ссылка "Восстановить пароль" генерирует новый пароль и отправляет его на email из базы.
Вся функциональность должна работать и без авторизации, за исключением следующего:
Если юзер не авторизован, локальная коллекция будет пустой.
При попытке сохраниться из приложения ему покажется диалог логина. Пока юзер не авторизован, он не может сохраниться. Однако, независимо от этого, он может сделать Экспорт в текстовый файл (уже сделано в редакторе, см. ниже).
Коллекция (любая из):
В левой части экрана список Исполнители, в правой список Треки.
Исполнители:
Все исполнители
Исполнитель 1
...
На исполнителе можно кликнуть мышкой, тогда треки отфильтруются по этому критерию.
Треки
Показываются треки, относящиеся к данному исполнителю, или все треки, если выбрано "Все исполнители".
Внизу кнопки: Создать, Редактировать, Переименовать, Удалить.
Внутри обе коллекции реализованы как одна БД, где у каждого трека есть флажок "public/private". Когда юзер редактирует свою опубликованную запись, она обновляется в обеих коллекциях.
По кнопкам Создать/Переименовать открывается диалог, где можно редактировать:
* Название трека,
* Исполнителя,
* поле Дополнительно,
* флажок Опубликовать
-- и есть кнопки ОК, Отмена. Для локальной коллекции Исполнитель может быть пустым. Сочетание Название+Исполнитель+Дополнительно должно быть уникальным в каждой коллекции; нельзя опубликовать, если есть конфликт имён.
В режиме "Создать" все поля являются необязательными; есть дополнительная кнопка Опции конвертирования, которая вызывает диалог "mp3 conversion settings" из редактора (его надо убрать из редактора вместе с кнопкой шестерёнки).
Двойной щелчок на треке или кнопка Редактировать вызывает редактор для данного файла.
Кнопка Удалить открывает окно подтверждения, по ОК удаляет трек из коллекции
Все строки должны сохраняться в Unicode.
Редактор
Редактор должен остаться отдельной страницей, его не надо встраивать в сайт.
Параметры файла должны преобразовываться в приемлемые для URL, и редактор должен иметь читаемое URL, например, ?artist=beatles&song=yesterday&other=solo.
По нажатию Save трек сохраняется, если у него есть валидные параметры, и если юзер аутентифицирован. Иначе сначала показывается диалог аутентификации, потом диалог редактирования параметров, точно такой же, как описано выше.
Надо добавить кнопку "Save as…", по которой будет всегда показываться диалог.
По нажатию Export появляется окно Сохранить как, юзер выбирает имя файла для сохранения (*.txt); если выбрал, то файл сохраняется на диск. Если нет разрешений это сделать, то сохраняется в папку Downloads, как это сейчас там и сделано.