Deploy de apps/docs
Vercel
- Crear proyecto conectado a
salescaling/web-platform. - Root Directory:
apps/docs - Framework: Next.js
- Production branch:
main
Variables de entorno (Vercel)
| Variable | Valor prod |
|---|---|
NEXT_PUBLIC_API_BASE_URL | https://api.salescaling.com |
NEXT_PUBLIC_OPENAPI_URL | https://api.salescaling.com/openapi.yml |
NEXT_PUBLIC_DOCS_SITE_URL | https://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):
| Variable | Uso |
|---|---|
GITHUB_DOCS_WEBHOOK_SECRET | HMAC del webhook GitHub |
GITHUB_DOCS_INDEX_TOKEN | Token con contents:read en el repo |
GITHUB_DOCS_REPOSITORY | salescaling/web-platform |
GITHUB_DOCS_BRANCH | main |
GITHUB_DOCS_ROOT_PATH | apps/docs |
DOCS_URL | https://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)
| Variable | Valor local |
|---|---|
NEXT_PUBLIC_API_BASE_URL | http://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:
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):
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 → jobdocs_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ó