Skip to content

Монолитный сервис для аренды вещей. Акцент на надежность кода через интеграционные тесты с Testcontainers.

Notifications You must be signed in to change notification settings

impatient0/java-shareit

Repository files navigation

Проект "ShareIt" - Сервис аренды вещей

Веб-сервис, который позволяет пользователям публиковать вещи для аренды (шеринга) и бронировать вещи других пользователей. Приложение представляет собой классическое монолитное веб-приложение с REST API.


🌟 Ключевые архитектурные решения и особенности

Несмотря на монолитную архитектуру, проект демонстрирует ряд важных инженерных практик:

  • Профессиональный подход к тестированию: Качество кода обеспечивается не только юнит-тестами (JUnit, Mockito), но и полноценными интеграционными тестами с использованием Testcontainers. Это гарантирует, что бизнес-логика корректно работает со слоем доступа к данным и реальной базой данных PostgreSQL.
  • Четкое разделение ответственности (Gateway/Server): Приложение архитектурно разделено на два модуля: gateway, отвечающий за прием и валидацию входящих запросов, и server, содержащий основную бизнес-логику. Это упрощает разработку и поддержку.
  • Сложная доменная модель: Проект реализует нетривиальные взаимосвязи между сущностями (Пользователи, Вещи, Бронирования, Комментарии) с помощью Spring Data JPA.

🏗️ Архитектура приложения

graph TD
    Client[Пользователь] --> Gateway[shareit-gateway];
    Gateway -- Валидация и проксирование --> Server[shareit-server];
    Server -- CRUD операции --> DB[(PostgreSQL)];
    Server -- Интеграционные тесты --> Testcontainers[Testcontainers];

    style DB fill:#336791,stroke:#FFF,stroke-width:2px,color:#FFF
    style Testcontainers fill:#0192D6,stroke:#FFF,stroke-width:2px,color:#FFF
Loading

⚙️ Технологический стек

  • Язык: Java 21
  • Фреймворк: Spring Boot
  • ORM: Spring Data JPA / Hibernate
  • База данных: PostgreSQL
  • Тестирование:
    • Unit: JUnit 5, Mockito
    • Integration: Testcontainers
  • Сборка: Maven
  • Контейнеризация: Docker, Docker Compose
  • Качество кода: Lombok, Checkstyle

🚀 Как запустить локально

  1. Убедитесь, что у вас установлены Docker и Docker Compose.
  2. Склонируйте репозиторий: git clone https://github.com/impatient0/java-shareit
  3. Перейдите в корневую директорию проекта.
  4. Соберите проект:
    mvn clean install
  5. Выполните команду для запуска приложения и базы данных:
    docker compose up --build
  6. Приложение будет доступно по адресу http://localhost:8080.

About

Монолитный сервис для аренды вещей. Акцент на надежность кода через интеграционные тесты с Testcontainers.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •