Skip to content

Сервис для шеринга вещей, где пользователи могут делиться ими и бронировать их друг у друга

Notifications You must be signed in to change notification settings

AndreyMMGH/java-shareit

Repository files navigation

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

About

Сервис для шеринга вещей, где пользователи могут делиться ими и бронировать их друг у друга

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published