Третье задание. CMS для управления контентом для экранов.

Идея

Приложение: клиент продает на конференции экраны. Он хочет создать CMS для управления контентом для экранов. Необходимо создать RESTful API с авторизацией для организатора конференций.

Сущности

  • пользователь

  • ивент

  • экран

  • плейлист

  • контент

Один пользователь может иметь множество ивентов. Один ивент может иметь множество экранов, один экран может иметь один плейлист, один плейлист может иметь множество контента. Контент может быть видео/аудио/картинка/html. Контент можно переиспользовать между плейлистами. Порядок контента в плейлисте можно менять. Длительность воспроизведения контента в плейлисте можно менять. Контент может быть использован во множестве плейлистов.

Требования

  1. Спроектировать структуру БД при помощи dbdiagram.ioarrow-up-right.

  2. Создать авторизацию пользователя через Auth0arrow-up-right (email + password/sms/google).

  3. Подключаем базу данных PostgreSQL.

  4. Создать модели и реляционные связи между ними.

  5. Создать CRUD.

  6. Интеграция AWS S3arrow-up-right сервиса. Файл с клиента должен быть загружен в aws s3 bucket. Ссылка полученная от aws должна быть сохранена у нас в контенте. При удалении контента с клиента, должны так же удалять файл на S3 bucket-e.

  7. Должны валидировать все данные которые отправляет нам пользователь. Валидация на емейл, строку, число, количество символов и т.д.

  8. Если API метод возвращает данные, то это обязательно должен быть json объект или массив, а не просто строка или просто цифра.

  9. Должны проверять имеет ли право пользователь менять/удалять сущности (является ли владельцем этой сущности). Используем gem cancancanarrow-up-right.

  10. Для эмуляции запросов с клиента использовать postmanarrow-up-right.

  11. Создаем seeds для наполнения БД тестовыми данными.

  12. Собираем все через Docker.

Last updated