{"id":20382156,"url":"https://github.com/shumlesha/forum-microservices-backend","last_synced_at":"2026-04-16T05:03:37.811Z","repository":{"id":234087855,"uuid":"788261370","full_name":"shumlesha/Forum-Microservices-Backend","owner":"shumlesha","description":"Многомодульный Maven-проект, представляющий собой систему форума с наличием ролевой модели","archived":false,"fork":false,"pushed_at":"2024-05-27T14:08:05.000Z","size":1312,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-15T07:54:03.481Z","etag":null,"topics":["eureka-server","flyway-migrations","java","jwt-authentication","mapstruct","maven","microservices","minio","postgres","reactor-kafka","role-based-access-control","s3-storage","smtp","spring-boot","spring-cloud","spring-mail","spring-mvc","spring-security","springdoc-openapi-ui"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shumlesha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security-lib/pom.xml","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-18T04:37:03.000Z","updated_at":"2024-05-27T14:11:47.000Z","dependencies_parsed_at":"2024-05-05T07:30:35.975Z","dependency_job_id":"4ec0cb27-e179-49b4-a7ad-169da29f23cc","html_url":"https://github.com/shumlesha/Forum-Microservices-Backend","commit_stats":null,"previous_names":["shumlesha/forum-microservices-backend"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shumlesha%2FForum-Microservices-Backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shumlesha%2FForum-Microservices-Backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shumlesha%2FForum-Microservices-Backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shumlesha%2FForum-Microservices-Backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shumlesha","download_url":"https://codeload.github.com/shumlesha/Forum-Microservices-Backend/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241935279,"owners_count":20044826,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eureka-server","flyway-migrations","java","jwt-authentication","mapstruct","maven","microservices","minio","postgres","reactor-kafka","role-based-access-control","s3-storage","smtp","spring-boot","spring-cloud","spring-mail","spring-mvc","spring-security","springdoc-openapi-ui"],"created_at":"2024-11-15T02:16:43.677Z","updated_at":"2025-10-28T16:33:41.300Z","avatar_url":"https://github.com/shumlesha.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Forum\n\nПроект представляет собой API для пользовательского взаимодействия в рамках системы форума.\n\n\n# Architecture\nОсновные микросервисы:\n1. **FORUM-APP:** сервис ядра форума (обеспечивает работу с категориями, темами, сообщениями)\n2. **AUTH-APP:** сервис, отвечающий за аутентификацию пользователей\n3. **GATEWAY:** шлюз API\n4. **USERS-APP:** сервис, отвечающий за управление пользователями со стороны Администратора\n5. **FILES-APP:** сервис, отвечающий за загрузку и скачивание файлов, связан с MinIO Bucket\n6. **NOTIFICATION-APP:** сервис, отвечающий за прием уведомлений от других сервисов и рассылку их по указанным каналам\n7. **EUREKA-REGISTRY-APP:** сервер, регистрирующий остальные микросервисы в Eureka\n\n\n# Role-specific\n\nДоступны роли **пользователя**, **модератора**, **администратора**.\nМодератор обладает привелегиями в рамках категории и её дочерних - подкатегорий; \nсоответственно - обладает привелегиями над топиками в категориях нижнего уровня\n\n# Database-architecture\nНа данный момент используются различные Базы Данных под сервисы:\n\n## Files Database\n[\u003cimg src=\"docs/Files_DB.png\" width=\"250\" /\u003e](docs/Files_DB.png)\n\n## Forum Database\n[\u003cimg src=\"docs/Forum_DB.png\" width=\"250\" /\u003e](docs/Forum_DB.png)\n\n## Users Database\n[\u003cimg src=\"docs/Users_DB.png\" width=\"250\" /\u003e](docs/Users_DB.png)\n\n## Notifications Database\n[\u003cimg src=\"docs/Notifications_DB.png\" width=\"250\"  /\u003e](docs/Notifications_DB.png)\n\n### Migrations\nВ .env файле используется переменная MIGRATION_TYPE=validate + Flyway\n\n\n# Configuration/Installation\n\nНеобходимо запустить сервисы в следующем порядке:\n1. Eureka Registry\n2. ForumServer\n3. NotificationsServer\n4. AuthServer\n5. UsersServer\n6. FileServer\n7. Cloud Gateway\n\nТакже необходимо:\n1) Поднять MinIO для файлового сервиса:\nminio server [Путь хранения MinIO-файлов] --console-address \":9001\"\n2) Запустить Kafka (приведено для Windows) для сервиса уведомлений:\n.\\bin\\windows\\zookeeper-server-start.bat .\\config\\zookeeper.properties\n.\\bin\\windows\\kafka-server-start.bat .\\config\\server.properties\n\n\n# Environments\n\nНеобходимо в корне проекта создать .env файл, где будут содержаться переменные окружения.\n\nИ указать следующие переменные:\n- **HOST:** хост приложения\n- **POSTGRES_USERNAME:** имя пользователя для подключения к БД Postgres\n- **POSTGRES_PASSWORD:** пароль для подключения к БД Postgres\n- **POSTGRES_DATABASE:** имя базы данных, используемой в приложении\n- **JWT_SECRET:** секретный ключ для подписи JWT (можно сгенерировать на https://www.base64encode.net/)\n- **JWT_EMAIL_SECRET:** секретный ключ для подписи JWT-токенов для email-ссылок (можно сгенерировать на https://www.base64encode.net/)\n- **JWT_ACCESS:** время жизни access-токена в миллисекундах\n- **JWT_REFRESH:** время жизни refresh-токена в миллисекундах\n- **API_SECRET:** межсервисный API-ключ (также можно сгенерировать на https://www.base64encode.net/)\n- **MAIL_HOST:** хост для отправки gmail по SMTP\n- **MAIL_PORT:** spring-mail порт\n- **MAIL_USERNAME:** gmail-адрес отправляющего от имени форума\n- **MAIL_PASSWORD:** пароль для MAIL_USERNAME\n- **MIGRATION_TYPE:** флаг ddl-auto\n- **KAFKA_BOOTSTRAP_SERVERS:** URL для Kafka\n- **KAFKA_SUBSCRIBED_TOPICS:** Топики, на которые могут подписываться консюмеры\n\n\n# API Documentation\n\nДля проекта настроен Swagger:\nhttp://localhost:8989/webjars/swagger-ui/index.html\n\nДля переключения между сервисами необходимо выбрать опцию в поле \"Select a definition\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshumlesha%2Fforum-microservices-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshumlesha%2Fforum-microservices-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshumlesha%2Fforum-microservices-backend/lists"}