Skip to content

Repository files navigation

🔄 ShareIt

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 Интеграционные тесты с изолированной БД

⚙️ Архитектура

Проект разделён на два модуля:

📦 shareit-server

  • Управляет бизнес-логикой: аренда, бронирование, пользователи, предметы
  • Содержит REST API
  • Использует PostgreSQL для хранения данных

🚪 shareit-gateway

  • Обрабатывает входящие запросы
  • Валидирует входные данные
  • Делает проксирование к shareit-server

🔄 Основные компоненты

  • Контроллеры: BookingController, ItemController, RequestController, UserController
  • Сервисы: BookingService, ItemService, RequestService, UserService
  • Репозитории: BookingRepository, ItemRepository, RequestRepository, UserRepository

🗃️ Схема БД и модели данных

Модели:

  • Item — вещь
  • ItemRequest — запрос
  • User — пользователь
  • Booking — бронирование
  • Comment — отзыв

🗺️ Схема базы данных

Схема БД проекта ShareIt

На схеме показаны основные сущности: users, items, bookings, comments, requests и связи между ними.


🐳 Запуск с помощью Docker

Требования

  • Docker
  • Docker Compose

Команда запуска

docker-compose up

Контейнеры:

  • gateway: порт 8080
  • server: порт 9090
  • postgres: порт 5432

📂 Сборка вручную (без Docker)

# Сборка и установка зависимостей
mvn clean install

# Запуск shareit-server
cd shareit-server
mvn spring-boot:run

# Запуск shareit-gateway
cd ../shareit-gateway
mvn spring-boot:run

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

mvn test

Проект использует:

  • JUnit 5 для модульных тестов
  • Testcontainers для изолированных интеграционных тестов с PostgreSQL

📊 Примеры API

  • POST /items — добавить вещь
  • GET /items — список доступных вещей
  • POST /bookings — создать бронирование
  • PATCH /bookings/{id} — подтвердить/отклонить бронирование
  • GET /bookings — список бронирований пользователя
  • POST /items/{id}/comment — оставить комментарий

👤 Автор

Разработано в рамках учебного проекта.
GitHub: GitHub: GordonSergey

About

Template repository for ShareIt project.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages