Одностраничное приложение - Серверная часть в директории "backend/", пользовательский интерфейс - в "frontend/".
Функционал:
реализована возможность регистрации, авторизации, редактирование профиля пользователя(имя, о себе, аватар), карточка с изображением(добавление, удаление только собственных, постановка и снятие "лайка")
Особенности проекта:
- Eslint - отлавливает ошибка + кодстайл Airbnb.
- 12 роутов - регистрация, авторизация, действия с пользователем, действия с карточками.
- Часть роутов имеет предварительную валидацию для снижения нагрузки на сервер - celebrate, Joi.
- Обработка ошибок путём вылавливания на каждом этапе блоками .catch и логиривания
- Все роуты, кроме '/signup', '/signin' защищены необходимостью авторизации.
- При регистрации создается JWT token, который хранится в localStorage.
- Авторизированный пользователь может "ставить лайк" всем карточка, находящимся в Базе данный проекта, но удалять может только созданные им.
Особенности проекта:
- React - функциональные и классовые компоненты, защищенные маршруты, createContext, useEffect, useState.
- Запросы отправляются на собственное API, в процессе отправки пользователь получает обратную связь от приложения - на время отправки данных на сервер кнопки submit изменяются c "Сохранить" на "Сохранение...", чтобы у него было понимание, что сервер не завис, а работает с его запросом.
- Вёрстка - Flexbox + Grid layout.
- Адаптивный дизайн от 320px до 1280px с помощью медиа-запросов.
- Валидация введенных данных встроенными средствами HTML-5.
- Переиспользование элементов верстки.
- Файлы структурированы по БЭМ(Nested).
Для проведения ревью осуществлялся деплой данного проекта через Yandex.Cloud(ВМ: Ubuntu 20.04 + Nginx), сейчас остается возможность запуска локально(Frontend - порт 3000, Backend - порт 3001). Необходимо скопировать проект и установить зависимости с помощью npm install.