Skip to content

CheTigor/event-feed

Repository files navigation

Event feed

Дипломный проект по курсу Яндекс Практикума "Java-разработчик"

Данный проект представляет собой удобную афишу, которая поможет пользователям публиковать интересные события и находить компанию для их посещения.

Инструкция по развертыванию

  1. Клонируйте репозиторий в IDEA;
  2. Нужно перейти во вкладку maven (справа в среде разработки), и последовательно для всего проекта запустить clean и package (Explore With Me -> Lifecycle -> clean, package);
  3. Открыть Docker;
  4. В IDEA в папке event-feed поднять docker-compose.yml для всех сервисов;
  5. После скачивания скопировать из папки postman код и импортировать в Postman, чтобы проверить работоспособность программы;
  6. Для завершения работы сервисов, внизу IDEA перейти в Services и завершить работу всех контейнеров.

Микросервисная архитектура

Проект разделен на два модуля:

  • Основной сервис;
  • Сервис статистики.

Каждый модуль имеет свою базу данных. Такой подход позволяет более гибко управлять проектом, при необходимости его масштабировать, тем самым обеспечив более высокую скорость работы.

Основной сервис

Предоставляет возможность поиска мероприятий по различным критериям – дате, месту проведения, категории и т.д. Также пользователи могут создавать свои собственные мероприятия и приглашать друзей для их посещения.Для этого используется механизм реквестов - пользователь отправляет запрос на участие и в зависимости от конфигурации самого мероприятия оно либо модерируется, либо сразу подтверждается.

Сервис разделен на 3 слоя:

  • Публичный;
  • Приватный;
  • Административный.

Каждый имеет свою зону видимости объектов и разные эндпоинты взаимодействия с ними. Так же есть возможность оставлять комментарии под каждым мероприятием, что ценно для пользователя для оценки события.

Сервис статистики

Позволяет анализировать данные о посещениях конкретных эндпоинтов и определять популярность различных событий. Это помогает, например, адаптироваться к потребностям пользователей.

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

Для реализации проекта использовались такие технологии:

  1. Docker - помог имитировать реальную работу сервиса;
  2. Spring - облегчает работу программиста по написанию веб-приложений, что делает код простым и читаемым;
  3. Библиотека QueryDSL - помогает составлять сложные запросы поиска, которые в будущем очень просто модифицировать, не переписывая весь запрос целиком;
  4. База данных использовалась PosgreSQL;
  5. Библиотека Lombok - помогает проводить валидацию данных и пишет часть кода за разработчика, что экономит его время и, опять же, код становиться более читаемым;
  6. Maven - для автоматизации сборки проекта.

Весь проект разрабатывался согласно REST API.

База данных

ER диаграмма базы данных:

plot

Ссылка на ER диаграмму базы данных программы: https://dbdiagram.io/d/Explore-with-me-6527184affbf5169f0841f7d

Спецификации API

Спецификация основного сервиса: тык
Спецификация сервиса статистики: тык
Открыть спецификацию поможет онлайн редактор Swagger: https://editor-next.swagger.io

About

Приложение об интересных событиях, spring

Topics

Resources

Stars

Watchers

Forks

Contributors