Цей репозиторій — монорепо для мікросервісного застосунку з наступною структурою:
Каталог | Опис |
---|---|
apps/ |
Клієнтські додатки (Next.js та React) |
config/env/ |
Шаблони конфігурацій .env |
infrastructure/keycloak/ |
Сервіс Keycloak для централізованої автентифікації та авторизації |
services/ |
Мікросервіси: авторизація, користувачі, повідомлення, шлюз |
scripts/ |
Bash-скрипти для налаштування, запуску та автоматизації |
git clone https://your.repo.url.git
cd monorepo
bash scripts/setup.sh
- Keycloak — сервер аутентифікації, розташований в
infrastructure/keycloak
. - Frontend:
apps/client
— Next.js клієнт.apps/admin
— React адмінка.
- Backend:
- Різні сервіси (
auth
,user
,notification
,gateway
) знаходяться вservices
.
- Різні сервіси (
- Конфігурація:
- Загальні
.env.template
зберігаються вconfig/env
.
- Загальні
- Сценарії:
- Скрипти для автоматизації клонування, генерації
.env
та налаштувань.
- Скрипти для автоматизації клонування, генерації
./scripts/setup.sh
-
Клонує всі потрібні підпроєкти у відповідні папки
-
Копіює шаблон .env.template у .env для кожного сервісу, фронтенду та інфраструктури
Keycloak підтримує автоматичний імпорт realm через опцію --import-realm у Docker Compose.
Якщо потрібно імпортувати вручну (наприклад, після старту Keycloak), використайте скрипт:
./scripts/import-realm.sh
Скрипт:
-
Чекає запуску Keycloak
-
Авторизується через Keycloak Admin CLI
-
Імпортує realm із файлу: infrastructure/keycloak/realm-export.json
-
Для розробки: Використовуйте
docker-compose.override.yml
, де налаштований hot-reload та локальні томи. -
Для продакшну: Використовуйте базовий
docker-compose.yml
з оптимізованими образами.
-
Кожен мікросервіс — окремий контейнер
-
Keycloak — окремий сервіс
-
Frontend і backend підключені до спільної мережі myapp-network
-
Використання volume для збереження даних Keycloak (keycloak_data)
create-realm.sh
chmod +x create-realm.sh
./create-realm.sh my-new-realm
Креденшіали: admin / admin (або змініть у скрипті)
chmod +x create-realm-user.sh
./create-realm-user.sh application john_doe [email protected] test
Якщо виникнуть питання — звертайтесь до автора проєкту: Максим Нежурін