Deploy de apps/docs

Vercel

  1. Crear proyecto conectado a salescaling/web-platform.
  2. Root Directory: apps/docs
  3. Framework: Next.js
  4. Production branch: main

Variables de entorno (Vercel)

VariableValor prod
NEXT_PUBLIC_API_BASE_URLhttps://api.salescaling.com
NEXT_PUBLIC_OPENAPI_URLhttps://api.salescaling.com/openapi.yml
NEXT_PUBLIC_DOCS_SITE_URLhttps://docs.salescaling.com

OPENAI_API_KEY ya no es necesaria en Vercel: el ask vive en la API.

DNS

Apuntar docs.salescaling.com al CNAME de Vercel.


API + workers (Doppler)

Añadir en proyecto salescaling (dev, stg, prd):

VariableUso
GITHUB_DOCS_WEBHOOK_SECRETHMAC del webhook GitHub
GITHUB_DOCS_INDEX_TOKENToken con contents:read en el repo
GITHUB_DOCS_REPOSITORYsalescaling/web-platform
GITHUB_DOCS_BRANCHmain
GITHUB_DOCS_ROOT_PATHapps/docs
DOCS_URLhttps://docs.salescaling.com (CORS)
DOCS_OPENAPI_INDEX_URL(opcional) URL de openapi.yml para indexar API

OPENAI_API_KEY debe existir en la API para embeddings, ask y traducciones on-demand.

Los workers deben registrar el processor docs_index_translate.

El rebuild de OpenAPI ya no requiere la API HTTP en marcha: si localhost:3001/openapi.yml no responde, el script genera el documento en proceso. Opcionalmente puedes fijar DOCS_OPENAPI_INDEX_URL a otra URL.

Desarrollo local (apps/docs)

VariableValor local
NEXT_PUBLIC_API_BASE_URLhttp://localhost:3001

La búsqueda y el ask pasan por rutas Next.js (/api/docs/search, /api/docs/ask) que hacen proxy server-side a la API, sin depender de CORS en el navegador.

GitHub webhook

En Settings → Webhooks del repo:

  • URL: https://api.salescaling.com/v1/webhooks/github/docs
  • Content type: application/json
  • Secret: mismo valor que GITHUB_DOCS_WEBHOOK_SECRET
  • Events: Push

Bootstrap inicial del índice

Tras desplegar la API con la migración aplicada:

bash
doppler run --project salescaling --config prd -- \
  pnpm --filter api run script:run -- docs-index-full-rebuild

En local (sin token GitHub, con el monorepo clonado):

bash
doppler run --project salescaling --config dev -- \
  pnpm --filter api run script:run -- docs-index-full-rebuild

El script tarda varios minutos (un embedding por chunk). Verás progreso cada 5 archivos. Si la API no está levantada, el índice markdown se guarda igual; OpenAPI se omite con un warning.

Para indexar también los endpoints de la API, arranca la API antes o define DOCS_OPENAPI_INDEX_URL.

Verificar que docs_index_cursor.last_indexed_sha coincide con HEAD de main.


Flujo operativo

  • Push a apps/docs/** → webhook → job docs_index_process → índice actualizado
  • Deploy Vercel → solo sirve la UI; no reindexa
  • Cron diario (04:00 UTC) → reconciliación por SHA si el webhook falló