Для запуска потребуется Node.js и Docker.
Скопируй .env.example в .env.
docker compose up -dАвторизация описана в файле /docs/auth.md.
Приложение представляет собой API-сервер на Node.js с MariaDB и предоставляет функциональность авторизации и CRUD.
Преподаватель может создать группу: ID, название и описание. Название и описание группы валидируются разумным образом. Описание может быть пустым. Каждая группа имеет владельца-преподавателя. Преподаватель может изменить название или описание группы.
Преподаватель может пригласить в свою группу пользователя (по его ID). Преподаватель может отозвать отправленное приглашение.
Пользователь может принять или отклонить приглашение в группу. Пользователь может покинуть группу, в которой числится.
Преподаватель может отвязать пользователя от своей группы. Преподаватель может удалить свою группу.
Преподаватель может создать колоду:
- ID;
- Название;
- Описание (может быть пустым);
- Язык лицевой стороны;
- Язык оборотной стороны;
- Озвучка лицевой стороны (да/нет);
- Озвучка оборотной стороны (да/нет).
Поддерживаются языки: ru, en, es, de, fr, it, pt. Постоянно будут добавляться новые языки.
Каждая колода имеет владельца-преподавателя. Преподаватель может изменить название или описание колоды. Преподаватель может выдавать/забирать доступ своим группам к своим колодам.
Преподаватель может удалить свою колоду. В этом случае выданные группам доступы к этой колоде снимаются.
Преподаватель может создать карту в колоде:
- ID;
- ID колоды;
- Предварительный текст (может быть пустым);
- Основной текст;
- Заключительный текст (может быть пустым);
- Размер шрифта.
Тексты являются массивами строка. Основной текст от одной до трёх строк. Остальные от нуля до двух.
Преподаватель может отредактировать свою карту: сохранить новое содержимое под прежним ID.
Преподаватель может удалить свою карту.
Клиентское приложение предоставляет функциональность ученика.
Преподаватель может войти в клиентское приложение на правах ученика, состоящего во всех группах, владельцем которых он является.
При входе в клиентское приложение пользователь получает все данные в формате JSON одним запросом:
- Свой ID;
- Своё имя;
- Приглашения в группы;
- Группы в которых он состоит;
- Вложенные в них колоды;
- Вложенные в них карты.
Или null, если запрос не прошёл авторизацию.
Это является сигналом клиентскому приложению, что необходимо войти.
Панель администратора предоставляет функциональность преподавателя.
При входе в панель администратора пользователь получает одним запросом:
- Свой ID;
- Своё имя;
- Список поддерживаемых языков;
- Свои группы (ID, название, количество учеников и приглашений).
Или null, если запрос не прошёл авторизацию.
Это является сигналом панели администратора, что необходимо войти.
Когда преподаватель переходит в конкретную группу, запрашивается подробная информация о ней по ID:
- ID группы (дубликат, но может быть полезен);
- Название;
- Список учеников в группе (ID, имя);
- Список отправленных приглашений;
- Список колод, предоставленных группе (ID, название, количество карт).
Преподаватель может перейти в интерфейс управления колодами. Запрашивается список всех колод преподавателя, в каждой:
- ID колоды;
- Название;
- Количество карт;
- Количество групп, которым выдан доступ.
Когда преподаватель переходит в конкретную колоду, запрашивается подробная информация о ней по ID:
- ID колоды (дубликат, но может быть полезен);
- Название;
- Список карт со всеми данными каждой карты;
- Список групп, которым выдан доступ (ID, название).