Репозиторий для бэкенд-части приложения с API-сервером
Приложение Movies Explorer - сервис, в котором можно найти фильмы по запросу и сохранить в личном кабинете.
Это дипломный проект Яндекс.Практикума по специальности "Веб-разработчик".
Полностью приложение состоит из двух частей:
- Movies Explorer (бэкенд-часть) ⬅ этот репозиторий
- Movies Explorer (фронтенд-часть)
API-сервер доступен по адресу: https://movies-explorer-api.onrender.com
(Ранее был задеплоен на отдельный виртаульный сервер. Сейчас: часть с Node.js - на render.com, база данных - на Mongo Atlas)
POST /signup - создаёт пользователя с переданными в теле email, password и name
POST /signin - проверяет переданные в теле почту и пароль и возвращает JWT-токен
GET /users/me - возвращает информацию о пользователе (email и имя)
PATCH /users/me - обновляет информацию о пользователе (email и имя)
GET /movies - возвращает все сохранённые текущим пользователем фильмы
POST /movies - создаёт фильм с переданными в теле country, director, duration, year, description, image, trailer, nameRU, nameEN и thumbnail, movieId
DELETE /movies/_id - удаляет сохранённый фильм по id
Доступ к роутам /users и /movies закрыт без JWT-токен. Токен должен содержаться в каждом запросе к защищенным роутам:
- заголовок
Authorization - значение вида
Bearer eyJh...Xbhc
- работа с базой данной приложения через роуты
- регистрация и аутентификация пользователя
- часть роутов защищена авторизацией через JWT-токен
- валидация данных в запросе до передачи контроллеру и перед записью в базу данных
- сбор логов сервера в формате JSON (запросы и ошибки)
- централизованный обработчик ошибок
- хранение пароля пользователя в виде хэша с солью
- поддержка работы с доступом по https
- безопасное хранение на сервере ключа для генерации JWT-токенов
- обеспечение безопасности заголовков запросов
- конфигурация и константы приложения в отдельных файлах
- ограничение числа запросов с одного IP
- сервер на
Ubuntuв Яндекс.Облаке - ssh-ключи для доступа к серверу
- API-сервер на
Node.js+express.js - база данных на
MongoDB+Mongoose - обновление кода на сервере через
Git - менеджер процессов на сервере
pm2 - раздача фронтенда через
nginx - обратный прокси-сервер на
nginx - файрвол
ufw - SSL-сертификаты от
Letsencrypt
✅ Завершена