Репозиторий для бэкенд-части приложения с 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
✅ Завершена