# Деплой — 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.