ShareIt — это сервис, где пользователи делятся вещами.
Это приложение позволяет пользователям, во-первых, рассказывать, какими вещами они готовы поделиться,
а во-вторых, находить нужную вещь и брать её в аренду на какое-то время.
Сервис не только позволяет бронировать вещь на определённые даты,
но и закрывать к ней доступ на время бронирования от других желающих.
На случай, если нужной вещи нет в данный момент, у пользователей есть возможность оставлять запросы.
По запросу можно добавлять новые вещи для шеринга.
- Регистрация и управление пользователями
- Публикация вещей для аренды
- Поиск и фильтрация доступных вещей
- Создание и подтверждение бронирований
- Система отзывов и комментариев
- Подтверждение/отклонение аренды владельцем
- Обработка запросов на вещи
| Технология | Описание |
|---|---|
| Java 21 | Язык программирования |
| Spring Boot | Backend-фреймворк |
| Spring Web | Создание REST API |
| Spring Data JPA | Работа с базой данных |
| PostgreSQL | Реляционная БД |
| Hibernate | ORM |
| MapStruct | Маппинг DTO и Entity |
| Lombok | Снижение шаблонного кода |
| Docker | Контейнеризация |
| Maven | Сборка проекта |
| OpenAPI 3.0.1 | Спецификация API |
| JUnit, Mockito | Модульное тестирование |
| Testcontainers | Интеграционные тесты с изолированной БД |
Проект разделён на два модуля:
- Управляет бизнес-логикой: аренда, бронирование, пользователи, предметы
- Содержит REST API
- Использует PostgreSQL для хранения данных
- Обрабатывает входящие запросы
- Валидирует входные данные
- Делает проксирование к
shareit-server
- Контроллеры:
BookingController,ItemController,RequestController,UserController - Сервисы:
BookingService,ItemService,RequestService,UserService - Репозитории:
BookingRepository,ItemRepository,RequestRepository,UserRepository
Модели:
Item— вещьItemRequest— запросUser— пользовательBooking— бронированиеComment— отзыв
На схеме показаны основные сущности: users, items, bookings, comments, requests и связи между ними.
- Docker
- Docker Compose
docker-compose upКонтейнеры:
gateway: порт8080server: порт9090postgres: порт5432
# Сборка и установка зависимостей
mvn clean install
# Запуск shareit-server
cd shareit-server
mvn spring-boot:run
# Запуск shareit-gateway
cd ../shareit-gateway
mvn spring-boot:runmvn testПроект использует:
JUnit 5для модульных тестовTestcontainersдля изолированных интеграционных тестов с PostgreSQL
POST /items— добавить вещьGET /items— список доступных вещейPOST /bookings— создать бронированиеPATCH /bookings/{id}— подтвердить/отклонить бронированиеGET /bookings— список бронирований пользователяPOST /items/{id}/comment— оставить комментарий
Разработано в рамках учебного проекта.
GitHub: GitHub: GordonSergey
