Explore With Me
📌 Описание проекта
Explore With Me — это сервис-афиша для организации совместного отдыха.
Свободное время — ценный ресурс: мы планируем, как его потратить, куда и с кем сходить. Самое сложное в этом — найти актуальные мероприятия, договориться с друзьями и собрать компанию.
В этом приложении любой пользователь может предложить событие — от выставки до похода в кино — и пригласить других принять участие.
Проект состоит из двух сервисов:
● Основной сервис — содержит информацию о пользователях, заявках, локации, событиях, подборках, категориях и комментариях.
● Сервис статистики — хранит количество просмотров и позволяет делать различные выборки для анализа работы приложения.
⚙️ Функционал
Публичное API
● Получение списка событий с сортировкой:
● по дате;
● по количеству просмотров (данные берутся из сервиса статистики).
● Просмотр краткой информации о событиях.
● Просмотр подробной информации о конкретном событии.
● Получение списка категорий и подборок событий.
● Фиксация всех публичных запросов в сервисе статистики.
API для авторизованных пользователей
● Создание, редактирование и просмотр своих событий.
● Подача заявок на участие в чужих мероприятиях.
● Подтверждение заявок на участие инициатором события.
API для администратора
● Управление категориями событий (создание, редактирование, удаление).
● Управление подборками событий (создание, удаление, закрепление).
● Модерация событий (публикация, отклонение).
● Управление пользователями (создание, активация, просмотр, удаление).
🔄 Жизненный цикл события
1. Создание → переходит в статус "Ожидание публикации".
2. Публикация → осуществляется администратором.
3. Отмена публикации:
● по решению администратора (не соответствует правилам);
● по решению инициатора до публикации.
📊 Сервис статистики
● Фиксирует все обращения к публичным эндпоинтам (списки событий и детальная информация).
● Функционал сервиса статистики содержит:
● запись информации о том, что был обработан запрос к эндпоинту API;
● предоставление статистики за выбранные даты по выбранному эндпоинту.
🛠️ Стек технологий
● Java
● Spring Framework (Boot, MVC, Data JPA)
● Hibernate
● JUnit, Mockito (тестирование)
● Spring Test
● PostgreSQL
● H2
● Git
● Postman (тестирование API)
● Docker / Docker Compose
● REST
● Maven