# 💻 Local Development Infrastructure: Jambotron PaaS

Этот файл описывает конфигурацию локальной среды разработки, которая зеркально отражает серверную инфраструктуру в Хельсинки. Локальный кластер настроен для обеспечения бесшовного процесса созидания и мониторинга контейнеров.

## 🏗️ Архитектура системы

Локальная среда построена на базе Docker и управляется через единую сеть для обеспечения связи между системными базами и динамическими проектами.

*   **Runtime**: Docker Engine / Docker Desktop.
*   **Network**: `jambotron-net` (Тип: bridge, внешняя).
*   **Оркестрация**: Docker Compose.
*   **JDK**: Version 21 (LTS).
*   **Build Tool**: Gradle.

## 📦 Реестр локальных сервисов

| Сервис | Образ | URL / Порт | Назначение |
| :--- | :--- | :--- | :--- |
| **caddy-dev** | `lucaslorentz/caddy-docker-proxy` | `*.localhost` | Обратный прокси с авто-обнаружением через Docker Socket. |
| **jambo-postgres** | `postgres:15-alpine` | `localhost:5432` | Системная БД (Пользователи, настройки, биллинг). |
| **jambotron-mongo** | `mongo:6.0` | `localhost:27017` | Хранилище метаданных проектов и контейнеров (SaaS 2.0). |
| **jambo-pgadmin** | `dpage/pgadmin4` | `pgadmin.localhost` | Веб-интерфейс для управления PostgreSQL. |
| **portainer-dev** | `portainer/portainer-ce` | `localhost:9443` | Визуальный мониторинг и управление Docker-ресурсами. |

## 🛠️ Стек разработки (Dev Mode)

*   **Backend**: Spring Boot 3.5.0 (профиль `dev`).
*   **Frontend**: Angular 17+ (интегрирован в Gradle-таски).
*   **БД Миграции**: Flyway.
*   **API управления**: Docker Java Client (через `/var/run/docker.sock`).

## 🚀 Быстрый старт

### 1. Подготовка сети
Перед первым запуском необходимо создать общую сеть, если она еще не создана:
```bash
docker network create jambotron-net
```
2. Запуск инфраструктуры
Запуск всех баз данных и системных сервисов:

Bash
docker-compose -f docker-compose.dev.yml up -d
3. Запуск приложения (Spring + Angular)
Используй кастомный Gradle-таск для запуска приложения с профилем разработчика:

Bash
./gradlew bootRun_Dev
Команда автоматически соберет фронтенд, скопирует статику в src/main/resources/static и запустит сервер.

🔗 Особенности созидания проектов
Для реализации динамического деплоя внутри PaaS, приложение использует проброс Docker Socket.

Docker Labels: При создании нового контейнера через API, необходимо вешать лейблы caddy и caddy.reverse_proxy, чтобы локальный Caddy автоматически создал маршрут на project-name.localhost.

Volumes: Данные PostgreSQL и MongoDB сохраняются в именованных томах jambo_db_dev_data и mongo_dev_data соответственно.

Lombok: Для корректной сборки на JDK 21 используется версия 1.18.34.