Skip to content

valeriyek/java-shareit

Repository files navigation

ShareIt

ShareIt — REST-сервис для аренды вещей между пользователями.

Описание проекта

ShareIt позволяет пользователям делиться своими вещами, бронировать их на нужное время, оставлять отзывы, создавать запросы на недостающие вещи и откликаться на запросы других пользователей. Проект разделен на два модуля: Gateway и Server.

Архитектура

  • shareIt-gateway
    Отвечает за валидацию входящих запросов, аутентификацию и маршрутизацию вызовов к основному сервису.
    Запускается на порту 8080.

  • shareIt-server
    Основная бизнес-логика, работа с базой данных, обработка запросов.
    Запускается на порту 9090.

Модули связаны через REST API, для взаимодействия используется RestTemplate.

Основной функционал

  • Управление пользователями и вещами (CRUD)
  • Поиск и фильтрация вещей
  • Бронирование вещей с подтверждением владельцем
  • Оставление отзывов после аренды
  • Создание и просмотр запросов на новые вещи
  • Добавление вещей в ответ на запросы других пользователей
  • Валидация и фильтрация некорректных запросов на стороне Gateway

Технологии

  • Java 21
  • Spring Boot 3
  • Spring Data JPA, Hibernate
  • PostgreSQL
  • Maven
  • REST API
  • Lombok
  • JUnit 5, Mockito, MockMvc
  • Postman

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

  1. Склонируйте репозиторий

git clone https://github.com/valeriyek/java-shareit

  1. В корне выполните команду сборки:

    mvn clean install

  2. Запустите сервисы:

    • Gateway: cd shareIt-gateway mvn spring-boot:run

    • Server: cd shareIt-server mvn spring-boot:run

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

  • Для API реализованы интеграционные тесты с использованием MockMvc
  • DTO покрыты тестами сериализации через @JsonTest
  • Сервисный слой покрыт юнит-тестами с Mockito и Spring Boot Test
  • Для проверки API можно использовать подготовленные коллекции Postman

Запуск тестов:

mvn test

About

Template repository for ShareIt project.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published