Skip to Content
⚙️ Сайт находится в стадии разработки.

Бэкенд приложения

Ссылка на Github-репозиторий с бэкендом проекта

Файловая структура

  • .gitignore
  • .editorconfig
  • .eslintrc
  • package.json
  • package-lock.json

API

Схемы и модели API-ресурсов

База данных содержит 2 сущности в формате JSON:

  1. user - зарегистрированный пользователь:
ПолеОписаниеВалидация
emailПочта пользователя. Обязательное поле, уникальное значение.Регулярное выражение
passwordХеш пароля пользователя. Обязательное поле, уникальное значение.-
nameИмя пользователя. Обязательное поле, неуникальное значение, 2-30 символов-
  1. movie- избранный фильм:
ПолеОписаниеЗначениеОбязательное поле
countryСтрана создания фильмаstringда
directorРежиссер фильмаstringда
durationДлительность фильмаnumberда
yearГод выпуска фильмаstringда
descriptionОписание фильмаstringда
imageСсылка на постер к фильмуURLда
trailerLinkСсылка на трейлер фильмаURLда
thumbnailИконка постера к фильмуURLда
owner_id пользователя, добавившего фильм в избранное-да
moeieIdid фильмаnumberда
nameRUназвание фильма по-русскиstringда
nameENназвание фильма по-английскиstringда

Роуты и контроллеры

# возвращает информацию о пользователе (email и имя) GET /users/me # обновляет информацию о пользователе (email и имя) PATCH /users/me # возвращает все сохранённые текущим пользователем фильмы GET /movies # создаёт фильм с переданными в теле # country, director, duration, year, description, image, trailer, nameRU, nameEN и thumbnail, movieId POST /movies # удаляет сохранённый фильм по id DELETE /movies/_id

Контоллеры для каждого роута. Защита роута авторизацией: если пользовать не прислал JWT, доступ к роутам запрещен.

Аутентификация и авторизация

2 дополнительных роута для регистрации и логина

# создаёт пользователя с переданными в теле # email, password и name POST /signup # проверяет переданные в теле почту и пароль # и возвращает JWT POST /signin

Защита роутов авторизацией не требуется.

Внимание: если сохранять JWT в cookies, то необходим дополнительный роут POST /signout. При обращении к нему JWT удаляется из cookies.

Логирование

Файлы для хранения логов:

  • request.log – хранит информацию обо всех обращениях к API;
  • error.log – хранит информацию об обшибках, которые возвращает API.

Логи в формате JSON. Файлы логовор в Github-репозиторий не добавляются.

Деплой

Для размещения веб-приложения в сети необходимо:

  1. Создать сервер
  • Обращение к API по публичному IP-адресу.
  • Разместить сервер можно в Яндекс Облаке.
  1. Создать и прикрепить домен
  • Зарегистрировать домен у любого регистратора доменных имен.
  • Настроить DNS на стороне регистратора.
  • API можно вынести на поддомен api.* или использовать префикс пути ~/api/.
  1. Установить SSL-протокол
  • Выпустить и подключить SSL-сертификаты, чтобы обращаться к серверу по протоколу https.
  1. Создать .env-файл на сервере

Переменные окружения:

  • NODE_ENV=production;
  • JWT_SECRET.

Внимание: проверить, что .env-файл добавлен в .gitignore и в репозиторий не публикуется.

Обновлено