Initial commit — Aspekter VA email builder

Full project: Svelte 5 frontend, Vite 7 backend API,
Pug email templates (email-gen), Docker deployment.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sergey Zotov
2026-04-13 01:20:24 +05:00
commit c090bfcf47
61 changed files with 18907 additions and 0 deletions

117
DOCKER-DEPLOY.md Normal file
View File

@@ -0,0 +1,117 @@
# Docker deploy: z51-pug-builder + email-gen
## Что есть
- `docker-compose.yml` — локальный/дев запуск (builder на `localhost:5173`)
- `docker-compose.prod.yml` — прод запуск через nginx
Сервисы:
- `builder` — Svelte-конструктор + локальный API (`/api/*`)
- `email-gen-api` — мост к `email-gen` (рендер PUG -> HTML)
- `nginx` (только в prod compose) — входная точка на 80 порту
---
## 1) Локальный запуск (dev)
```bash
cd /Users/sergeyzotov/Documents/GENERATOR_Z51
docker compose up -d --build
docker compose ps
```
Открыть: `http://localhost:5173`
Остановить:
```bash
docker compose down
```
---
## 2) Прод запуск (nginx + docker)
1. Подготовь env:
```bash
cd /Users/sergeyzotov/Documents/GENERATOR_Z51
cp .env.prod.example .env
```
2. Запусти:
```bash
docker compose -f docker-compose.prod.yml up -d --build
```
3. Проверка:
```bash
docker compose -f docker-compose.prod.yml ps
```
Открыть: `http://<VPS_IP>` (или домен, если DNS уже настроен).
Остановить:
```bash
docker compose -f docker-compose.prod.yml down
```
---
## 3) Как работает генерация HTML
1. В конструкторе собирается PUG.
2. Нажимаешь `Превью -> Обновить`.
3. Builder вызывает `POST /api/project/:name/render-email`.
4. Запрос уходит в `email-gen-api`.
5. `email-gen-api`:
- пишет PUG в `email-gen/emails/<project>/letters/let.pug`
- запускает `gulp pug --project <project>`
- читает `email-gen/public/index.html`
- возвращает HTML обратно в конструктор.
Важно: в `Настройки -> Текущий проект` заполняй поле `Папка проекта в email-gen` (например `numizmat`).
---
## 4) Обновление email-gen без ручной пересборки всего
Скрипт:
```bash
./deploy/scripts/update-email-gen.sh
```
Или с веткой:
```bash
./deploy/scripts/update-email-gen.sh main
```
Что делает скрипт:
- `git fetch`/`git pull --ff-only` в `email-gen`
- пересобирает и перезапускает только `email-gen-api` контейнер
Это удобно, если `email-gen` обновляется через git и перезаписывается.
---
## 5) Логи
Prod:
```bash
docker compose -f docker-compose.prod.yml logs -f nginx
docker compose -f docker-compose.prod.yml logs -f builder
docker compose -f docker-compose.prod.yml logs -f email-gen-api
```
Dev:
```bash
docker compose logs -f builder
docker compose logs -f email-gen-api
```
---
## 6) Данные
- Данные конструктора: `z51-pug-builder/data`
- Репозиторий генератора: `email-gen` (bind mount в контейнер)
Оба каталога остаются на хосте и не теряются при пересоздании контейнеров.