🛠 ShareIt — Микросервис для шеринга вещей
ShareIt — это сервис, позволяющий пользователям брать вещи в аренду и делиться своими. Платформа реализована на основе микросервисной архитектуры, что обеспечивает гибкость и масштабируемость. 🏗️ Архитектура проекта
Проект состоит из двух основных микросервисов:
Основной сервис (shareit-server)
Управление пользователями
Добавление, поиск и бронирование вещей
Обработка запросов на аренду
Комментарии к вещам
Сервис шлюза (shareit-gateway)
Маршрутизация запросов
Валидация данных
Балансировка нагрузки
⚙️ Технологический стек Технология Назначение Java 17 Основной язык разработки Spring Boot Создание микросервисов PostgreSQL Хранилище данных Docker Контейнеризация Maven Управление зависимостями и сборка Hibernate ORM для работы с БД REST API Взаимодействие между сервисами 📡 Основные Endpoint'ы 🔍 Public API (Публичный доступ)
Вещи
GET /items — получить список доступных вещей
GET /items/{id} — получить информацию о вещи
GET /items/search?text={query} — поиск вещей по названию/описанию
Пользователи
GET /users/{id} — получить информацию о пользователе
👤 Private API (Для авторизованных пользователей)
Вещи
POST /items — добавить новую вещь
PATCH /items/{id} — обновить информацию о вещи
DELETE /items/{id} — удалить вещь
Бронирование
POST /bookings — создать запрос на бронирование
PATCH /bookings/{id}?approved={true/false} — подтвердить/отклонить бронь
GET /bookings/{id} — получить информацию о бронировании
Комментарии
POST /items/{id}/comment — добавить отзыв о вещи
🛠 Admin API (Для администраторов)
Пользователи
GET /users — список всех пользователей
POST /users — добавить пользователя
DELETE /users/{id} — удалить пользователя
💡 Ключевая бизнес-логика
✅ Бронирование вещей
Можно бронировать только доступные вещи
Владелец вещи не может бронировать свою же вещь
Бронирование возможно только на будущие даты
✅ Комментарии
Отзывы можно оставлять только после завершения бронирования
Длина комментария ограничена (например, 2–1000 символов)
✅ Поиск вещей
Поиск работает по названию и описанию
Результаты возвращаются с пагинацией
🔐 Безопасность
Авторизация через JWT
Пользователи могут редактировать только свои вещи
Администраторы имеют доступ к управлению пользователями
� Цель проекта
Создать удобную платформу для совместного использования вещей, снижая расходы пользователей и повышая эффективность использования ресурсов.