Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shumlesha/forum-microservices-backend
Многомодульный Maven-проект, представляющий собой систему форума с наличием ролевой модели
https://github.com/shumlesha/forum-microservices-backend
eureka-server flyway-migrations java jwt-authentication mapstruct maven microservices minio postgres role-based-access-control s3-storage smtp spring-boot spring-cloud spring-mail spring-mvc spring-security springdoc-openapi-ui
Last synced: 3 days ago
JSON representation
Многомодульный Maven-проект, представляющий собой систему форума с наличием ролевой модели
- Host: GitHub
- URL: https://github.com/shumlesha/forum-microservices-backend
- Owner: shumlesha
- Created: 2024-04-18T04:37:03.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-05-05T06:38:28.000Z (7 months ago)
- Last Synced: 2024-05-05T07:31:49.429Z (7 months ago)
- Topics: eureka-server, flyway-migrations, java, jwt-authentication, mapstruct, maven, microservices, minio, postgres, role-based-access-control, s3-storage, smtp, spring-boot, spring-cloud, spring-mail, spring-mvc, spring-security, springdoc-openapi-ui
- Language: Java
- Homepage:
- Size: 1.01 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Security: security-lib/pom.xml
Awesome Lists containing this project
README
# Forum
Проект представляет собой API для пользовательского взаимодействия в рамках системы форума.
# Architecture
Основные микросервисы:
1. **FORUM-APP:** сервис ядра форума (обеспечивает работу с категориями, темами, сообщениями)
2. **AUTH-APP:** сервис, отвечающий за аутентификацию пользователей
3. **GATEWAY:** шлюз API
4. **USERS-APP:** сервис, отвечающий за управление пользователями со стороны Администратора
5. **FILES-APP:** сервис, отвечающий за загрузку и скачивание файлов, связан с MinIO Bucket
6. **NOTIFICATION-APP:** сервис, отвечающий за прием уведомлений от других сервисов и рассылку их по указанным каналам
7. **EUREKA-REGISTRY-APP:** сервер, регистрирующий остальные микросервисы в Eureka# Role-specific
Доступны роли **пользователя**, **модератора**, **администратора**.
Модератор обладает привелегиями в рамках категории и её дочерних - подкатегорий;
соответственно - обладает привелегиями над топиками в категориях нижнего уровня# Database-architecture
На данный момент используются различные Базы Данных под сервисы:## Files Database
[](docs/Files_DB.png)## Forum Database
[](docs/Forum_DB.png)## Users Database
[](docs/Users_DB.png)## Notifications Database
[](docs/Notifications_DB.png)### Migrations
В .env файле используется переменная MIGRATION_TYPE=validate + Flyway# Configuration/Installation
Необходимо запустить сервисы в следующем порядке:
1. Eureka Registry
2. ForumServer
3. NotificationsServer
4. AuthServer
5. UsersServer
6. FileServer
7. Cloud GatewayТакже необходимо:
1) Поднять MinIO для файлового сервиса:
minio server [Путь хранения MinIO-файлов] --console-address ":9001"
2) Запустить Kafka (приведено для Windows) для сервиса уведомлений:
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
.\bin\windows\kafka-server-start.bat .\config\server.properties# Environments
Необходимо в корне проекта создать .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:** Топики, на которые могут подписываться консюмеры# API Documentation
Для проекта настроен Swagger:
http://localhost:8989/webjars/swagger-ui/index.htmlДля переключения между сервисами необходимо выбрать опцию в поле "Select a definition"