ShareIt — это backend-приложение для шеринга вещей между пользователями. Сервис позволяет владельцам размещать вещи, а другим пользователям — находить их и бронировать на определённый период.
Проект реализован как REST API без пользовательского интерфейса.
- создание и управление пользователями
- взаимодействие между владельцами и арендаторами
- добавление, редактирование и удаление вещей
- получение списка вещей пользователя
- поиск вещей по тексту
- создание запроса на бронирование вещи
- подтверждение или отклонение владельцем
- просмотр текущих, прошлых и будущих бронирований
- возможность оставлять комментарии к вещам
- комментарии доступны только пользователям, которые брали вещь
- Java 21
- Spring Boot
- Spring Web (REST API)
- Spring Data JPA (Hibernate)
- PostgreSQL
- H2 (для тестирования)
- MapStruct
- Spring Validation (Jakarta Bean Validation)
- JUnit 5
- Spring Boot Test
- Mockito
- Maven
- Lombok
- Spring Boot Actuator
- JaCoCo (покрытие тестами)
- Checkstyle
Проект построен по слоистой архитектуре:
- Controller — обработка HTTP-запросов
- Service — бизнес-логика
- Repository — работа с базой данных
Отдельно выделен gateway-модуль для обработки входящих запросов.
git clone https://github.com/DarinaLeonoff/ShareIt.git cd ShareIt
- Java 11+
- Maven
./mvnw spring-boot:run
- POST /users — создать пользователя
- PATCH /users/{id} - обновление данных пользователя
- GET /users/{id} — получить пользователя
- DELETE /users/{id} — удаление пользователя
- POST /items — добавить вещь
- GET /items — получить вещи владельца
- GET /items/{id} — получить вещи по id
- PATCH /items/{id} — обновить данные вещи
- GET /items/search?text=... — поиск в заголовках и описании
- POST /requests - создание запроса на вещь
- GET /requests - получение всех запросов созданных пользователем
- GET /requests/all - получение всех запросов
- GET /requests/{id} - получение конкретного запроса
- POST /bookings — создать бронирование
- PATCH /bookings/{id} — подтвердить / отклонить
- GET /bookings — список бронирований
- GET /bookings/{id} — получение полной информации о конкретном бронировании
- GET /bookings/owner?state=ALL - получение списк бронирований вещей собственника с фильтром по статусу
- POST /items/{id}/comment - добавить комментраий
- Основная бд - PostgreSQL
- БД для тестирования - H2
- основные сущности: users, items, bookings, comments
- разрабатывать REST API на Spring Boot
- работать с базой данных через Spring Data JPA (JpaRepository)
- использовать MapStruct для маппинга DTO и сущностей
- обрабатывать и использовать HTTP-заголовки в запросах
- реализовывать бизнес-логику (бронирование, комментарии, доступы)
- выстраивать слоистую архитектуру приложения