Приложение: клиент продает на конференции экраны. Он хочет создать CMS для управления контентом для экранов. Необходимо создать RESTful API с авторизацией для организатора конференций.
- пользователь
- ивент
- экран
- плейлист
Один пользователь может иметь множество ивентов. Один ивент может иметь множество экранов, один экран может иметь один плейлист, один плейлист может иметь множество контента. Контент может быть видео/аудио/картинка/html. Контент можно переиспользовать между плейлистами. Порядок контента в плейлисте можно менять. Длительность воспроизведения контента в плейлисте можно менять. Контент может быть использован во множестве плейлистов.
- Спроектировать структуру БД при помощи dbdiagram.io.
- Создать авторизацию пользователя через Auth0 (email + password/sms/google).
- Подключаем базу данных PostgreSQL.
- Создать модели и реляционные связи между ними.
- Создать CRUD.
- Интеграция AWS S3 сервиса. Файл с клиента должен быть загружен в aws s3 bucket. Ссылка полученная от aws должна быть сохранена у нас в контенте. При удалении контента с клиента, должны так же удалять файл на S3 bucket-e.
- Должны валидировать все данные которые отправляет нам пользователь. Валидация на емейл, строку, число, количество символов и т.д.
- Если API метод возвращает данные, то это обязательно должен быть json объект или массив, а не просто строка или просто цифра.
- Должны проверять имеет ли право пользователь менять/удалять сущности (является ли владельцем этой сущности). Используем gem cancancan.
- Для эмуляции запросов с клиента использовать postman.
- Создаем seeds для наполнения БД тестовыми данными.
- Собираем все через Docker.