Thanks to visit codestin.com
Credit goes to github.com

Skip to content

russuAV/java-shareit

Repository files navigation

ShareIt

Java Spring Boot Build Tests

ShareIt — сервис для шеринга вещей. Пользователи могут публиковать предметы, бронировать их на время, оставлять комментарии и создавать запросы на недостающие вещи. Проект демонстрирует многомодульную архитектуру (Gateway → Server → DB), валидацию входящих данных и использование Spring Boot с JPA.

Возможности

  • Управление пользователями: регистрация, обновление, получение по ID.
  • Вещи: добавление, редактирование, поиск по названию и описанию, фильтрация по доступности.
  • Бронирование: создание заявок, подтверждение владельцем, получение бронирований по пользователю/владельцу.
  • Комментарии: возможность оставить отзыв о вещи после завершённой аренды.
  • Запросы на вещи: публикация запросов на недостающие предметы и отклик на них.
  • Валидация: проверка входных данных на уровне Gateway.
  • Тестирование: юнит- и интеграционные тесты.

Используемые технологии

  • Java 21
  • Spring Boot: Web, Data JPA, Validation
  • PostgreSQL / H2 (тесты)
  • Maven
  • Lombok
  • JUnit 5, MockMvc
  • Docker Compose (подъём сервиса с БД)

Архитектура

  • Gateway — принимает внешние запросы, валидирует их и проксирует в Server.
  • Server — основная бизнес-логика (пользователи, вещи, бронирования, комментарии, запросы).
  • Common — общие DTO и утилиты.

Запуск

  1. Склонировать репозиторий:
git clone https://github.com/russuAV/java-shareit.git
cd java-shareit
  1. Собрать:

mvn clean install

  1. Запустить через Maven:
mvn --projects server spring-boot:run

или с Docker:

docker-compose up
  1. Приложение будет доступно по адресу: http://localhost:8080

API (основные эндпоинты)

Пользователи
  • POST /users — создать
  • GET /users/{id} — получить
  • PATCH /users/{id} — обновить
  • DELETE /users/{id} — удалить
Вещи
  • POST /items — добавить
  • PATCH /items/{id} — обновить
  • GET /items/{id} — получить по ID
  • GET /items/search?text={query} — поиск по названию/описанию
Бронирования
  • POST /bookings — создать
  • PATCH /bookings/{bookingId}?approved={true|false} — подтверждение владельцем
  • GET /bookings/{id} — получить бронирование
  • GET /bookings?state={ALL|CURRENT|PAST|FUTURE|WAITING|REJECTED} — список по пользователю
  • GET /bookings/owner?state=... — список по владельцу вещей
Комментарии
  • POST /items/{itemId}/comment — добавить отзыв (после аренды)
Запросы
  • POST /requests — создать запрос на вещь
  • GET /requests — получить свои запросы
  • GET /requests/all — получить все запросы
  • GET /requests/{id} — получить конкретный запрос

Тестирование

mvn test

About

Сервис для аренды вещей.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published