Explore-with-me — это платформа для анонсов и заявок на мероприятия. Вы можете публиковать информацию о событиях, подавать заявки на участие в уже созданных мероприятиях и оставлять комментарии к заинтересовавшим событиям.
- Публичный API:
- Доступность: все пользователи, без необходимости регистрации.
- Просмотр всех событий, включая сортировку по категориям.
- Просмотр деталей отдельных событий.
- Просмотр закрепленных подборок событий.
- Закрытый API:
- Доступность: только авторизованные пользователи.
- Добавление новых мероприятий в приложение.
- Редактирование созданных мероприятий.
- Просмотр событий после их добавления.
- Подача заявок на участие в интересующих мероприятиях.
- Подтверждение заявок от других пользователей для собственных мероприятий.
- Управление комментариями: создание, изменение, удаление.
- Административный API:
- Доступность: только администраторы сервиса.
- Управление категориями событий: добавление, изменение и удаление.
- Управление подборками мероприятий: добавление, удаление и закрепление на главной странице.
- Модерация событий, размещённых пользователями: публикация или отклонение.
- Модерация комментариев, размещённых пользователями: установка статуса удалено, заблокировано.
- Управление пользователями: добавление, активация, просмотр и удаление.
-
Микросервисная архитектура:
- Два независимых микросервиса, позволяет оптимизировать масштабируемость, надежность и удобство обновления компонентов.
- Stats-service осуществляет сбор и анализ статистики перехода по публичным эндпоинтам.
- Main-service осуществляет основную бизнес-логику приложения - афиша.
-
Хранение данных: каждый микросервис хранит свои данные в отдельной DB, для уменьшения взаимозависимость и отказоустойчивость приложения.
-
Техническое задание на основе Swagger:
- Java Core:
- JDK версии 11: Современные возможности для высокого качества и производительности кода.
- Фреймворки:
- Spring Boot: Упрощает разработку и развертывание приложений.
- Сетевое взаимодействие:
- REST Api: Легкость и гибкость взаимодействия между клиентом и сервером, используя контроллеры для обработки запросов в формате JSON.
- Валидация и обработка данных:
- Lombok: Упрощает написание кода, генерируя часто используемые конструкции.
- MapStruct: Упрощает маппинг данных между разными слоями приложения.
- Базы данных:
- PostgreSQL: высокая производительность и надежность.
- JPA и Hibernate: упрощают взаимодействие с базами данных через Object-Relational Mapping (ORM).
- Виртуализация:
- Docker: контейнеризация приложения для упрощенного развертывания и управления средой выполнения.