Дипломный проект в рамках курса "Веб-разработчик" от Яндекс Практикум. Проект представляет из себя бэкенд часть для проекта Навигатор фильмов. Проект призван закрепить навыки backend-разработки и способы развёртывания приложения на Node.js и Express, а также работе с БД MongoDB и ODM mongoose.
- В проекте созданы схемы и модели пользователей и карточек с контентом:
movie
— схема карточки с контентомuser
— схема пользователя
- В проекте созданы эндпоинты:
/movies
— обрабатывает:- GET запросы — отдаёт все карточки из БД
- POST запросы — создаёт новую карточку с контентом
/movies/:cardId
— обрабатывает DELETE запросы, удаляет карточку поcardId
/signin
— обрабатывает POST запросы, производит аутентификацию пользователя/signup
— обрабатывает POST запросы, производит регистрацию пользователя/signout
— обрабатывает POST запросы, производит выход пользователя/users/me
— обрабатывает:- GET запросы — отдаёт всех информацию о пользователе
- PATCH запросы — обновляет информацию о пользователе
- Созданы мидлвары:
- Авторизации пользователя
- Валидации поступающих в запросе данных
- Централизованной обработки ошибок
- Ограничитель количества запросов (защита от DDoS атак)
- Логирования
- Производится валидация поступающих данных:
- до передачи информации контроллерам с помощью celebrate
- на уровне схем с помощью validator и встроенных методов mongoose
- /controllers — директория с файлами контроллеров
- /errors — директория с файлами кастомных ошибок
- /middlewares — директория с мидлвэрами
- /models — директория с файлами описания схем и моделей
- /routes — директория с файлами роутера
- /utils — директория со вспомогательными файлами
npm run start
— запускает сервер
npm run dev
— запускает сервер с hot-reload
- Node.js
- nodemon
- Express
- MongoDB
- mongoose
- bcryptjs
- jsonwebtoken
- celebrate
- validator
- express-rate-limit
- helmet
- winston
- express-winston
- ESLint
- Разворачивать приложение на Node.js
- Использовать в работе фреймворк Express
- Работать с БД MongoDB
- Использовать в работе с БД ODM mongoose
- Создавать схемы и модели для работы с БД
- Обрабатывать различные виды запросов
- Обрабатывать ошибки некорректных запросов
- Валидировать приходящую в запросе информацию
- Работать с JWT токеном
- Базовой защите приложения
- Логированию
- Деплою проекта на реальный хостинг