https://github.com/lap-lik/explore-with-me
микросервисное приложение для размещения и поиска мероприятий
https://github.com/lap-lik/explore-with-me
docker hibernate-jpa java-11 postgresql-database postman-test query-dsl rest-api spring-boot
Last synced: about 1 month ago
JSON representation
микросервисное приложение для размещения и поиска мероприятий
- Host: GitHub
- URL: https://github.com/lap-lik/explore-with-me
- Owner: lap-lik
- Created: 2024-05-19T19:52:35.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-18T20:21:18.000Z (almost 2 years ago)
- Last Synced: 2024-11-13T01:36:18.600Z (over 1 year ago)
- Topics: docker, hibernate-jpa, java-11, postgresql-database, postman-test, query-dsl, rest-api, spring-boot
- Language: Java
- Homepage:
- Size: 192 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Explore-with-me
## Описание проекта
Explore-with-me — это платформа для анонсов и заявок на мероприятия. Вы можете публиковать информацию о событиях, подавать заявки на участие в уже созданных мероприятиях и оставлять комментарии к заинтересовавшим событиям.
## Основные возможности:
- **Публичный API:**
- Доступность: все пользователи, без необходимости регистрации.
- Просмотр всех событий, включая сортировку по категориям.
- Просмотр деталей отдельных событий.
- Просмотр закрепленных подборок событий.
- **Закрытый API:**
- Доступность: только авторизованные пользователи.
- Добавление новых мероприятий в приложение.
- Редактирование созданных мероприятий.
- Просмотр событий после их добавления.
- Подача заявок на участие в интересующих мероприятиях.
- Подтверждение заявок от других пользователей для собственных мероприятий.
- Управление комментариями: создание, изменение, удаление.
- **Административный API:**
- Доступность: только администраторы сервиса.
- Управление категориями событий: добавление, изменение и удаление.
- Управление подборками мероприятий: добавление, удаление и закрепление на главной странице.
- Модерация событий, размещённых пользователями: публикация или отклонение.
- Модерация комментариев, размещённых пользователями: установка статуса удалено, заблокировано.
- Управление пользователями: добавление, активация, просмотр и удаление.
## Функционал:
- **Микросервисная архитектура:**
- Два независимых микросервиса, позволяет оптимизировать масштабируемость, надежность и удобство обновления компонентов.
- Stats-service осуществляет сбор и анализ статистики перехода по публичным эндпоинтам.
- Main-service осуществляет основную бизнес-логику приложения - афиша.
- **Хранение данных:** каждый микросервис хранит свои данные в отдельной DB, для уменьшения взаимозависимость и отказоустойчивость приложения.
- **Техническое задание на основе Swagger:**
- [Stats-service](https://github.com/lap-lik/explore-with-me/blob/main/ewm-stats-service-spec.json)
- [Main-service](https://github.com/lap-lik/explore-with-me/blob/main/ewm-main-service-spec.json)
## Стек технологий
- **Java Core:**
- JDK версии 11: Современные возможности для высокого качества и производительности кода.
- **Фреймворки:**
- Spring Boot: Упрощает разработку и развертывание приложений.
- **Сетевое взаимодействие:**
- REST Api: Легкость и гибкость взаимодействия между клиентом и сервером, используя контроллеры для обработки запросов в формате JSON.
- **Валидация и обработка данных:**
- Lombok: Упрощает написание кода, генерируя часто используемые конструкции.
- MapStruct: Упрощает маппинг данных между разными слоями приложения.
- **Базы данных:**
- PostgreSQL: высокая производительность и надежность.
- JPA и Hibernate: упрощают взаимодействие с базами данных через Object-Relational Mapping (ORM).
- **Виртуализация:**
- Docker: контейнеризация приложения для упрощенного развертывания и управления средой выполнения.