Проект представляет собой API для пользовательского взаимодействия в рамках системы форума.
Основные микросервисы:
- FORUM-APP: сервис ядра форума (обеспечивает работу с категориями, темами, сообщениями)
- AUTH-APP: сервис, отвечающий за аутентификацию пользователей
- GATEWAY: шлюз API
- USERS-APP: сервис, отвечающий за управление пользователями со стороны Администратора
- FILES-APP: сервис, отвечающий за загрузку и скачивание файлов, связан с MinIO Bucket
- NOTIFICATION-APP: сервис, отвечающий за прием уведомлений от других сервисов и рассылку их по указанным каналам
- EUREKA-REGISTRY-APP: сервер, регистрирующий остальные микросервисы в Eureka
Доступны роли пользователя, модератора, администратора. Модератор обладает привелегиями в рамках категории и её дочерних - подкатегорий; соответственно - обладает привелегиями над топиками в категориях нижнего уровня
На данный момент используются различные Базы Данных под сервисы:
В .env файле используется переменная MIGRATION_TYPE=validate + Flyway
Необходимо запустить сервисы в следующем порядке:
- Eureka Registry
- ForumServer
- NotificationsServer
- AuthServer
- UsersServer
- FileServer
- Cloud Gateway
Также необходимо:
- Поднять MinIO для файлового сервиса: minio server [Путь хранения MinIO-файлов] --console-address ":9001"
- Запустить Kafka (приведено для Windows) для сервиса уведомлений: .\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties .\bin\windows\kafka-server-start.bat .\config\server.properties
Необходимо в корне проекта создать .env файл, где будут содержаться переменные окружения.
И указать следующие переменные:
- HOST: хост приложения
- POSTGRES_USERNAME: имя пользователя для подключения к БД Postgres
- POSTGRES_PASSWORD: пароль для подключения к БД Postgres
- POSTGRES_DATABASE: имя базы данных, используемой в приложении
- JWT_SECRET: секретный ключ для подписи JWT (можно сгенерировать на https://www.base64encode.net/)
- JWT_EMAIL_SECRET: секретный ключ для подписи JWT-токенов для email-ссылок (можно сгенерировать на https://www.base64encode.net/)
- JWT_ACCESS: время жизни access-токена в миллисекундах
- JWT_REFRESH: время жизни refresh-токена в миллисекундах
- API_SECRET: межсервисный API-ключ (также можно сгенерировать на https://www.base64encode.net/)
- MAIL_HOST: хост для отправки gmail по SMTP
- MAIL_PORT: spring-mail порт
- MAIL_USERNAME: gmail-адрес отправляющего от имени форума
- MAIL_PASSWORD: пароль для MAIL_USERNAME
- MIGRATION_TYPE: флаг ddl-auto
- KAFKA_BOOTSTRAP_SERVERS: URL для Kafka
- KAFKA_SUBSCRIBED_TOPICS: Топики, на которые могут подписываться консюмеры
Для проекта настроен Swagger: http://localhost:8989/webjars/swagger-ui/index.html
Для переключения между сервисами необходимо выбрать опцию в поле "Select a definition"