Skip to content

Repository files navigation

📦 ShareIt

ShareIt — это backend-приложение для шеринга вещей между пользователями. Сервис позволяет владельцам размещать вещи, а другим пользователям — находить их и бронировать на определённый период.

Проект реализован как REST API без пользовательского интерфейса.

🚀 Функциональность

👤 Пользователи

  • создание и управление пользователями
  • взаимодействие между владельцами и арендаторами

📦 Вещи (Items)

  • добавление, редактирование и удаление вещей
  • получение списка вещей пользователя
  • поиск вещей по тексту

📅 Бронирование (Bookings)

  • создание запроса на бронирование вещи
  • подтверждение или отклонение владельцем
  • просмотр текущих, прошлых и будущих бронирований

💬 Комментарии

  • возможность оставлять комментарии к вещам
  • комментарии доступны только пользователям, которые брали вещь

🛠 Технологии

🚀 Backend

  • 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-модуль для обработки входящих запросов.

⚙️ Запуск проекта

1. Клонирование

git clone https://github.com/DarinaLeonoff/ShareIt.git cd ShareIt

2. Требования

  • Java 11+
  • Maven

3. Запуск

./mvnw spring-boot:run

📡 API

Пользователи

  • 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-заголовки в запросах
  • реализовывать бизнес-логику (бронирование, комментарии, доступы)
  • выстраивать слоистую архитектуру приложения

About

Temporary item exchange service

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages