ExploreWithMe — это бэкенд-приложение для поиска интересных событий и поиска компании для участия в них. Приложение реализовано в микросервисной архитектуре и позволяет пользователям публиковать свои мероприятия, подавать заявки на участие и собирать статистику просмотров.
Проект разработан в команде и состоит из двух независимых сервисов, каждый из которых работает со своей базой данных.
Содержит всю главную бизнес-логику приложения. API сервиса строго разделено на три зоны:
- Public API: Публичный доступ без регистрации (поиск событий, просмотр категорий, получение подборок). При запросах к событиям идет обращение к Stats Service для фиксации просмотра.
- Private API: Доступ только для авторизованных пользователей (создание своих событий, управление заявками на участие в чужих событиях, просмотр своих запросов).
- Admin API: Административная часть (модерация событий: публикация или отклонение, управление пользователями, категориями и подборками).
Изолированный микросервис для сбора метрик.
- Принимает запросы на сохранение информации о просмотрах (IP-адрес, эндпоинт, время).
- Предоставляет статистику по уникальным просмотрам событий для Основного сервиса (например, для сортировки популярных событий).
- Язык: Java
- Фреймворк: Spring Boot (Web, Data JPA)
- Архитектура: Микросервисы (REST API)
- Базы данных: PostgreSQL (отдельная БД для каждого сервиса)
- Сборка: Maven
- Контейнеризация: Docker, Docker Compose
- Инструменты командной разработки: Git, GitHub
Проект настроен для быстрого запуска в контейнерах с помощью Docker.
- Склонируйте репозиторий:
git clone [https://github.com/meneshev/java-explore-with-me-group.git](https://github.com/meneshev/java-explore-with-me-group.git)
- Перейдите в корневую директорию проекта:
cd java-explore-with-me-group - Соберите проект:
mvn clean package
- Поднимите сервисы и базы данных через Docker Compose:
docker-compose up -d
После запуска сервисы будут доступны на портах:
Main Service: http://localhost:8080
Stats Service: http://localhost:9090
📄 Спецификация API В проекте реализовано строгое соответствие спецификациям API: