Skip to content

maksym-nezhurin/monorepo

Repository files navigation

Monorepo Microservice Application

Опис

Цей репозиторій — монорепо для мікросервісного застосунку з наступною структурою:


🛠️ Основні компоненти

Каталог Опис
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 для кожного сервісу, фронтенду та інфраструктури

🐳 Запуск середовища з Docker Compose

Запуск усіх сервісів (Keycloak, backend, frontend):

make dev

🛡️ Імпорт Realm у Keycloak

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 з оптимізованими образами.

🐋 Структура Docker Compose

  • Кожен мікросервіс — окремий контейнер

  • Keycloak — окремий сервіс

  • Frontend і backend підключені до спільної мережі myapp-network

  • Використання volume для збереження даних Keycloak (keycloak_data)

🧙‍♂️ Створення Realm після підняття Keycloak

create-realm.sh

chmod +x create-realm.sh

./create-realm.sh my-new-realm

Креденшіали: admin / admin (або змініть у скрипті)

👤 Скрипт для створення користувача в Realm

chmod +x create-realm-user.sh
./create-realm-user.sh application john_doe [email protected] test

📬 Контакти та підтримка

Якщо виникнуть питання — звертайтесь до автора проєкту: Максим Нежурін

About

This is root of micro service application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published