Explore With Me — это микросервисное приложение на Spring Boot 3, предназначенное для управления событиями, пользователями, комментариями и категориями. Проект состоит из нескольких сервисов: main-service и stats-service.
Проект имеет модульную структуру:
main-service— основной сервис с REST API для работы с событиями, пользователями, комментариями и категориями.stats-service— сервис статистики (включаетstats-server,stats-client,stats-dto).- Общий
pom.xmlуправляет зависимостями и сборкой всех модулей.
- Java 21
- Spring Boot 3.3
- Spring Data JPA / Hibernate
- PostgreSQL
- Docker & Docker Compose
- Maven
- JUnit 5 / MockMvc (тестирование)
- Checkstyle, SpotBugs, Jacoco (анализ кода и покрытие)
GET /categories— получить все категории (пагинация)GET /categories/{catId}— получить категорию по IDPOST /admin/categories— создать категориюPATCH /admin/categories/{catId}— обновить категориюDELETE /admin/categories/{catId}— удалить категорию
GET /events— публичные события с фильтрациейGET /events/{id}— информация о событииGET /users/{userId}/events— события пользователяPOST /users/{userId}/events— создать событиеPATCH /users/{userId}/events/{eventId}— обновить событиеGET /admin/events— получить полную информацию для админовPATCH /admin/events/{eventId}— обновить событие админом
GET /users/{userId}/requests— получить запросы пользователяPOST /users/{userId}/requests?eventId=— создать запросPATCH /users/{userId}/requests/{requestId}/cancel— отменить запросPATCH /users/{userId}/events/{eventId}/requests— обновить статус запросов на участие (админ)
GET /admin/users— получить пользователей (фильтр по ID)POST /admin/users— создать пользователяDELETE /admin/users/{userId}— удалить пользователя
GET /events/{eventId}/comments— комментарии к событиюPOST /users/{userId}/comments?eventId=— создать комментарийPATCH /users/{userId}/comments/{commentId}— обновить комментарийDELETE /users/{userId}/comments/{commentId}— удалить комментарийGET /admin/comments— получить комментарии для админаPATCH /admin/comments/{commentId}— обновить статус комментария
GET /compilations— получить подборки (публичные)GET /compilations/{compId}— получить подборку по IDPOST /admin/compilations— создать подборкуPATCH /admin/compilations/{compId}— обновить подборкуDELETE /admin/compilations/{compId}— удалить подборку
Основные таблицы:
users— пользователиcategories— категории событийevents— событияrequests— запросы на участиеcomments— комментарии к событиямcompilations— подборки событийcompilations_events— связь подборок и событий
app:
name: "main-service"
server:
port: 8080
spring:
datasource:
driver-class-name: "org.postgresql.Driver"
url: "jdbc:postgresql://localhost:5432/ewm"
username: "ewm"
password: "1234"
jpa:
ddl-auto: validate
show-sql: true
properties:
hibernate:
dialect: "org.hibernate.dialect.PostgreSQLDialect"
format_sql: trueДля запуска проекта с PostgreSQL:
docker-compose up --build
-
ewm-service — основной сервис, порт 8080
-
ewm-db — PostgreSQL база для main-service, порт 5432
-
stats-server — сервис статистики, порт 9090
-
stats-db — PostgreSQL база для stats-server, порт 9091
