Веб-сервис, который позволяет пользователям публиковать вещи для аренды (шеринга) и бронировать вещи других пользователей. Приложение представляет собой классическое монолитное веб-приложение с 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
- Язык: Java 21
- Фреймворк: Spring Boot
- ORM: Spring Data JPA / Hibernate
- База данных: PostgreSQL
- Тестирование:
- Unit: JUnit 5, Mockito
- Integration: Testcontainers
- Сборка: Maven
- Контейнеризация: Docker, Docker Compose
- Качество кода: Lombok, Checkstyle
- Убедитесь, что у вас установлены
DockerиDocker Compose. - Склонируйте репозиторий:
git clone https://github.com/impatient0/java-shareit - Перейдите в корневую директорию проекта.
- Соберите проект:
mvn clean install
- Выполните команду для запуска приложения и базы данных:
docker compose up --build
- Приложение будет доступно по адресу
http://localhost:8080.