ShareIt
📌 Описание проекта
ShareIt — это сервис для шеринга вещей, где пользователи могут делиться ими и бронировать их друг у друга.
Проект решает проблему рационального использования ресурсов: у многих есть вещи, которые используются редко (дрель, велосипед, палатка). В ShareIt можно разместить такую вещь, чтобы другие пользователи могли её взять в аренду.
Архитектурно проект состоит из двух модулей:
● shareIt-gateway — отвечает за контроллеры и валидацию входящих запросов (например, корректность формата данных, длину строк, непустые значения). Работает с пользователем напрямую.
● shareIt-server — содержит бизнес-логику, работу с БД, валидацию, которая требует обращений к хранилищу (например, проверка существования пользователя или вещи).
⚙️ Функционал
Пользователи
● Создание нового пользователя.
● Обновление данных пользователя.
● Получение информации обо всех пользователях.
● Получение пользователя по id.
● Удаление пользователя.
Вещи и комментарии
● Добавление новой вещи.
● Редактирование вещи владельцем.
● Получение вещи по id (с учётом бронирований и комментариев).
● Получение всех вещей конкретного пользователя.
● Поиск вещей по тексту (по названию/описанию).
● Добавление комментариев к вещам (только если пользователь арендовал вещь ранее).
Запросы вещей
● Создание запроса вещи (например: «нужен велосипед на выходные»).
● Получение списка своих запросов с ответами.
● Получение запросов других пользователей (с пагинацией).
● Получение конкретного запроса с ответами.
Бронирования
● Создание бронирования вещи другим пользователем.
● Подтверждение или отклонение бронирования владельцем вещи.
● Получение бронирования по id (доступ только владельцу или бронирующему).
● Получение всех бронирований пользователя с фильтрацией по статусу
(ALL, CURRENT, PAST, FUTURE, WAITING, REJECTED).
● Получение всех бронирований вещей владельца с фильтрацией по статусу.
🔄 Жизненный цикл бронирования
1. Пользователь создаёт бронирование → статус WAITING.
2. Владелец подтверждает или отклоняет → статус APPROVED или REJECTED.
🛠️ Стек технологий
● Java
● Spring Framework (Boot, MVC, Data JPA)
● Hibernate
● JUnit, Mockito (тестирование)
● Spring Test
● PostgreSQL
● H2
● Git
● Postman (тестирование API)
● Docker / Docker Compose
● REST
● Maven