Данный проект представляет собой удобную афишу, которая поможет пользователям публиковать интересные события и находить компанию для их посещения.
- Клонируйте репозиторий в IDEA;
- Нужно перейти во вкладку maven (справа в среде разработки), и последовательно для всего проекта запустить clean и package (Explore With Me -> Lifecycle -> clean, package);
- Открыть Docker;
- В IDEA в папке event-feed поднять docker-compose.yml для всех сервисов;
- После скачивания скопировать из папки postman код и импортировать в Postman, чтобы проверить работоспособность программы;
- Для завершения работы сервисов, внизу IDEA перейти в Services и завершить работу всех контейнеров.
Проект разделен на два модуля:
- Основной сервис;
- Сервис статистики.
Каждый модуль имеет свою базу данных. Такой подход позволяет более гибко управлять проектом, при необходимости его масштабировать, тем самым обеспечив более высокую скорость работы.
Предоставляет возможность поиска мероприятий по различным критериям – дате, месту проведения, категории и т.д. Также пользователи могут создавать свои собственные мероприятия и приглашать друзей для их посещения.Для этого используется механизм реквестов - пользователь отправляет запрос на участие и в зависимости от конфигурации самого мероприятия оно либо модерируется, либо сразу подтверждается.
Сервис разделен на 3 слоя:
- Публичный;
- Приватный;
- Административный.
Каждый имеет свою зону видимости объектов и разные эндпоинты взаимодействия с ними. Так же есть возможность оставлять комментарии под каждым мероприятием, что ценно для пользователя для оценки события.
Позволяет анализировать данные о посещениях конкретных эндпоинтов и определять популярность различных событий. Это помогает, например, адаптироваться к потребностям пользователей.
Для реализации проекта использовались такие технологии:
- Docker - помог имитировать реальную работу сервиса;
- Spring - облегчает работу программиста по написанию веб-приложений, что делает код простым и читаемым;
- Библиотека QueryDSL - помогает составлять сложные запросы поиска, которые в будущем очень просто модифицировать, не переписывая весь запрос целиком;
- База данных использовалась PosgreSQL;
- Библиотека Lombok - помогает проводить валидацию данных и пишет часть кода за разработчика, что экономит его время и, опять же, код становиться более читаемым;
- Maven - для автоматизации сборки проекта.
Весь проект разрабатывался согласно REST API.
ER диаграмма базы данных:
Ссылка на ER диаграмму базы данных программы: https://dbdiagram.io/d/Explore-with-me-6527184affbf5169f0841f7d
Спецификация основного сервиса:
тык
Спецификация сервиса статистики:
тык
Открыть спецификацию поможет онлайн редактор Swagger: https://editor-next.swagger.io
