# Деплой — oclinica-brandbook

## Текущее состояние

| Сервис     | Статус      | URL                                    | Платформа     |
|------------|-------------|----------------------------------------|---------------|
| Фронтенд   | ✅ Активен   | https://web-oclinica.vercel.app        | Vercel Hobby  |
| Бэкенд     | локально    | http://localhost:3001                  | Docker Compose |
| База данных | локально   | localhost:5433                         | PostgreSQL 16  |

---

## Фронтенд — Vercel

### Первоначальная настройка (уже выполнена)

```bash
# 1. Установить Vercel CLI
npm install -g vercel

# 2. Войти в аккаунт (однократно, открывает браузер)
vercel login

# 3. Первый деплой из директории apps/web
cd apps/web
vercel --yes
```

### Деплой обновлений

```bash
cd apps/web
vercel --prod --yes
```

Деплой занимает ~30 секунд. После завершения изменения сразу доступны по адресу:
**https://web-oclinica.vercel.app**

### Как это работает

- Vercel автоматически определяет Next.js и использует pnpm для сборки
- Каждый `vercel --prod` создаёт новый immutable deployment и привязывает его к production URL
- Предыдущие деплои остаются доступны по уникальным preview URL
- Логи билда: https://vercel.com/oclinica/web

### Ограничения Vercel Hobby (бесплатный план)

| Параметр              | Лимит                   |
|-----------------------|-------------------------|
| Bandwidth             | 100 GB / месяц          |
| Builds                | 6000 минут / месяц      |
| Serverless Functions  | 100 GB-hours / месяц    |
| Тип использования     | Только некоммерческие   |

Для брендбука (внутренний инструмент) лимитов более чем достаточно.

---

## Локальная разработка

### Запуск фронтенда

```bash
# Из корня monorepo
pnpm dev

# Или только фронтенд
cd apps/web && pnpm dev
```

Доступен на: http://localhost:3001

### Запуск бэкенда + БД

```bash
# Запустить PostgreSQL
docker compose up -d

# Запустить NestJS
cd apps/api && pnpm dev
```

### .env файлы

```bash
# Скопировать и заполнить
cp .env.example .env
```

Содержимое `.env.example`:
```
DATABASE_URL="postgresql://brandbook:brandbook@localhost:5433/brandbook"
API_PORT=3001
NEXT_PUBLIC_API_URL=http://localhost:3001
```

---

## Автодеплой через Gitea Actions (планируется в Sprint 12)

Для автоматического деплоя при пуше в ветку `main` создать файл
`.gitea/workflows/deploy-frontend.yml`:

```yaml
name: Deploy Frontend to Vercel

on:
  push:
    branches: [main]
    paths:
      - 'apps/web/**'

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup pnpm
        uses: pnpm/action-setup@v4
        with:
          version: 10

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'pnpm'
          cache-dependency-path: apps/web/pnpm-lock.yaml

      - name: Install Vercel CLI
        run: npm install -g vercel

      - name: Deploy to Vercel
        run: cd apps/web && vercel --prod --yes --token ${{ secrets.VERCEL_TOKEN }}
```

**Настройка:**
1. Получить Vercel Token: https://vercel.com/account/tokens
2. Добавить в Gitea: Settings → Secrets → `VERCEL_TOKEN`

---

## Хостинг бэкенда (планируется к Sprint 11)

Бэкенд (NestJS + PostgreSQL) потребуется для экспериментальной секции (Sprint 11).
Варианты для рассмотрения:

| Платформа | PostgreSQL | Бесплатно | Карта |
|-----------|-----------|-----------|-------|
| Railway   | ✅        | $5 кредит / месяц | нужна |
| Supabase  | ✅        | ✅ (PostgreSQL managed) | нет |
| Fly.io    | ✅        | ✅ ограниченно | нет |
| VPS клиники | ✅     | ✅ (если есть) | нет |

Рекомендация: **Supabase** для БД (бесплатно, managed PostgreSQL) + **Railway** или VPS для NestJS.
