Skip to content

meneshev/java-explore-with-me-group

Repository files navigation

ExploreWithMe (EWM) — Афиша событий

ExploreWithMe — это бэкенд-приложение для поиска интересных событий и поиска компании для участия в них. Приложение реализовано в микросервисной архитектуре и позволяет пользователям публиковать свои мероприятия, подавать заявки на участие и собирать статистику просмотров.

Проект разработан в команде и состоит из двух независимых сервисов, каждый из которых работает со своей базой данных.

🏗 Архитектура проекта

1. Main Service (Основной сервис)

Содержит всю главную бизнес-логику приложения. API сервиса строго разделено на три зоны:

  • Public API: Публичный доступ без регистрации (поиск событий, просмотр категорий, получение подборок). При запросах к событиям идет обращение к Stats Service для фиксации просмотра.
  • Private API: Доступ только для авторизованных пользователей (создание своих событий, управление заявками на участие в чужих событиях, просмотр своих запросов).
  • Admin API: Административная часть (модерация событий: публикация или отклонение, управление пользователями, категориями и подборками).

2. Stats Service (Сервис статистики)

Изолированный микросервис для сбора метрик.

  • Принимает запросы на сохранение информации о просмотрах (IP-адрес, эндпоинт, время).
  • Предоставляет статистику по уникальным просмотрам событий для Основного сервиса (например, для сортировки популярных событий).

🛠 Стек технологий

  • Язык: Java
  • Фреймворк: Spring Boot (Web, Data JPA)
  • Архитектура: Микросервисы (REST API)
  • Базы данных: PostgreSQL (отдельная БД для каждого сервиса)
  • Сборка: Maven
  • Контейнеризация: Docker, Docker Compose
  • Инструменты командной разработки: Git, GitHub

💻 Инструкция по развертыванию (Локальный запуск)

Проект настроен для быстрого запуска в контейнерах с помощью Docker.

  1. Склонируйте репозиторий:
    git clone [https://github.com/meneshev/java-explore-with-me-group.git](https://github.com/meneshev/java-explore-with-me-group.git)
    
  2. Перейдите в корневую директорию проекта:
    cd java-explore-with-me-group
    
  3. Соберите проект:
    mvn clean package
    
  4. Поднимите сервисы и базы данных через Docker Compose:
    docker-compose up -d
    

После запуска сервисы будут доступны на портах:

Main Service: http://localhost:8080

Stats Service: http://localhost:9090

📄 Спецификация API В проекте реализовано строгое соответствие спецификациям API:

Спецификация Main Service

Спецификация Stats Service

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors