Учебный проект выполненный в рамках курса "Веб-разработчик" от Яндекс Практикум. Проект представляет из себя веб-приложение в сборе, имеющие бэкенд часть, основой для которой послужил проект также выполненный в рамках учебного курса, а также фронтенд часть, основой для которого послужил ещё один проект выполненный в рамках указанного выше учебного курса.
Проект призван закрепить вре ранее полученные в рамках учебного курса знания. Создать полностью рабочее веб-приложение, и разместить его на хостинге.
- Backend:
- В проекте созданы схемы и модели пользователей и карточек с контентом:
card— схема карточки с контентомuser— схема пользователя
- В проекте созданы эндпоинты:
/cards— обрабатывает:- GET запросы — отдаёт все карточки из БД
- POST запросы — создаёт новую карточку с контентом
/cards/:cardId— обрабатывает DELETE запросы, удаляет карточку поcardId/cards/:cardId/likes— обрабатывает:- PUT запросы — добавляет лайк карточке с контентом
- DELETE запросы — удаляет лайк карточке с контентом
/signin— обрабатывает POST запросы, производит аутентификацию пользователя/signup— обрабатывает POST запросы, производит регистрацию пользователя/users— обрабатывает:- GET запросы — отдаёт всех пользователей из БД
- POST запросы — создаёт нового пользователя
/users/:userId— обрабатывает GET запросы, отдаёт пользователя поuserId/users/me— обрабатывает:- GET запросы — отдаёт информацию о текущем пользователе
- PATCH запросы — обновляет информацию о пользователе
- DELETE запросы — производит выход пользователя, с удалением JWT-токена из Cookie
/users/me/avatar— обрабатывает PATCH запросы, обновляет аватар пользователя
- Созданы мидлвары:
- Централизованной обработки ошибок
- Авторизации пользователя
- Ограничитель количества запросов (защита от DDoS атак)
- Поддержки CORS запросов, включая обработку предварительных запросов
- Логирования запросов и ошибок
- Производится валидация поступающих данных:
- до передачи информации контроллерам с помощью joi и celebrate
- на уровне схем с помощью validator и встроенных методов mongoose
- В проекте созданы схемы и модели пользователей и карточек с контентом:
- Frontend:
- Возможность регистрации и аутентификации пользователя
- Возможность редактировать информацию о пользователе (установить имя пользователя, информацию «о себе», аватар)
- Возможность создавать карточки мест (добавить\удалить карточку места, поставить\снять лайк карточке)
- Возможность просматривать детальную фотографию карточки
- Реализована валидация форм с помощью кастомного хука
/backend— директория с файлами бэкенд части проекта/controllers— директория с файлами контроллеров/errors— директория с файлами кастомных ошибок/middlewares— директория с мидлварами/models— директория с файлами описания схем и моделей/routes— директория с файлами роутера/utils— директория со вспомогательными файлами
/frontend— директория с файлами фронтенд части проектаsrc/blocks— директория с CSS файламиsrc/components— директория с компонентамиsrc/contexts— директория с элементами контекстаsrc/fonts— директория со шрифтамиsrc/images— директория с файлами изображенийsrc/utils— директория со вспомогательными файламиsrc/vendor— директория с файлами библиотек
- Backend:
npm lint— запускает проверку линтеромnpm run start— запускает серверnpm run dev— запускает сервер с hot-reload
- Frontend:
npm run build— запуск проекта в режиме продакшн, с формированием файлов подготовленных к деплою в директории/buildnpm start— запуск проекта в режиме разработки
- Node.js
- nodemon
- Express
- cookie-parser
- MongoDB
- mongoose
- bcryptjs
- jsonwebtoken
- celebrate
- validator
- express-rate-limit
- helmet
- winston
- express-winston
- ESLint
- Разворачивать сервер на Node.js
- Использовать в работе фреймворк Express
- Работать с БД MongoDB
- Использовать в работе с БД ODM mongoose
- Создавать схемы и модели для работы с БД
- Обрабатывать различные виды запросов
- Обрабатывать ошибки некорректных запросов
- Валидировать приходящую в запросе информацию
- Работать с JWT-токеном
- Работать с Cookies
- Базовой защите приложения
- Логированию
- Работе с CORS
- Деплою проекта на реальный хостинг
Данила Легкобытов
- e-mail: legkobytov-danila@yandex.ru
- Telegram: @danila_legkobytov
- LinkedIn: in/danila-legkobytov
