Explore With Me — это модульное приложение для организации общественных мероприятий и поиска событий для посещения.
Приложение состоит из двух модулей:
- main-service — отвечает за работу с пользователями и реализацию основной логики приложения.
- stats-service — фиксирует просмотры событий и предоставляет возможность анализа популярности мероприятий.
- Публикация мероприятий: пользователи могут добавлять свои события для поиска участников.
- Поиск и фильтрация событий: доступен поиск мероприятий с сортировкой по популярности и датам.
- Детальная информация: для каждого мероприятия доступна подробная информация через отдельный эндпоинт.
- Участие в мероприятиях: зарегистрированные пользователи могут подавать заявки на участие в мероприятиях.
- Администрирование мероприятия: пользователь создавший мероприятие может работать с заявками на участие если мероприятие закрытое.
- Административные функции: управление категориями, модерация событий и управление пользователями.
- Фиксирует просмотры мероприятий.
- Предоставляет выборки для анализа популярности событий.
- Java: Основной язык разработки.
- Spring Boot: Для построения каркаса приложения.
- Hibernate: Для работы с базой данных.
- Docker: Для запуска в отельных контейнерах.
- JUnit: Для написания юнит-тестов.
Для добавления функционала комментариев были добавлены эндпоинты, позволяющие добавлять, получать, изменять, удалять комментарии к событиям.
Эндпоинты публичного доступа для получения комментариев и ответов.
-
GET /events/{eventId}/comments
Получение списка комментариев к событию. -
GET /events/{eventId}/comments/{commentId}
Получение развернутого комментария к событию.
Эндпоинты приватного доступа (только для текущего пользователя), позволяющие добавлять, редактировать и удалять комментарии к событиям.
-
POST /users/{userId}/events/{eventId}/comments
Добавление нового комментария к событию. -
PATCH /users/{userId}/events/{eventId}/comments/{commentId}
Редактирование комментария текущего пользователя. -
DELETE /users/{userId}/events/{eventId}/comments/{commentId}
Удаление комментария текущего пользователя.
Эндпоинт для администратора, позволяющий удалять комментарии.
-
DELETE /admin/events/{eventId}/comments/{commentId}
Удаление комментария администратором. -
DELETE /admin/events/{eventId}/comments/{commentId}/replies/{replyId}
Удаление ответа администратором.
Эндпоинт для получения развернутого ответа на комментарий.
GET /{eventId}/comments/{commentId}/replies/{replyId}
Получение развернутого ответа на комментарий к событию.
Эндпоинты для приватного доступа (только для текущего пользователя), позволяющие добавлять, редактировать и удалять ответы на комментарии.
-
POST /users/{userId}/events/{eventId}/comments/{commentId}/replies
Добавление ответа на комментарий. -
PATCH /users/{userId}/events/{eventId}/comments/{commentId}/replies/{replyId}
Редактирование ответа текущего пользователя на комментарий. -
DELETE /users/{userId}/events/{eventId}/comments/{commentId}/replies/{replyId}
Удаление ответа текущего пользователя.
Эндпоинты для добавления и удаления лайков текущим пользователем.
-
POST /users/{userId}/events/{eventId}/comments/{commentId}/likes
Добавление лайка на комментарий. -
DELETE /users/{userId}/events/{eventId}/comments/{commentId}/likes
Удаление лайка текущего пользователя с комментария.
Эндпоинты для добавления и удаления лайков текущим пользователем.
-
POST /users/{userId}/events/{eventId}/comments/{commentId}/replies/{replyId}/likes
Добавление лайка на комментарий. -
DELETE /users/{userId}/events/{eventId}/comments/{commentId}/replies/{replyId}/likes
Удаление лайка текущего пользователя с ответа.