Files
fspm-web/docker-compose.yml
Uriel JarethandClaude Opus 5 01b817d098 feat: sitio comercial FSPM con micro CRM interno
Sitio público orientado a venta consultiva e implementación de las
recomendaciones de la auditoría de marca y mercado:

- Inicio con tres rutas (industria, riesgo, cumplimiento) y clasificador
  de riesgo en el héroe, contra el hallazgo de que el visitante tenía que
  inferir qué solución le correspondía.
- Cinco páginas por segmento prioritario y catálogo comparable por clase
  de fuego, capacidad y agente.
- Los claims sin evidencia por modelo quedan aislados y se presentan como
  compromiso de documentación, nunca como característica del producto.
- SEO técnico completo: metadatos por página, sitemap derivado de los
  datos, JSON-LD, iconos y tarjeta social generadas.

Micro CRM:

- Captura por formulario embebido y por widget de WhatsApp que registra
  antes de abrir la conversación.
- Atribución de primer toque que sobrevive a la navegación.
- Deduplicación de contacto; un mismo contacto acumula oportunidades.
- Motor de asignación por reglas con reparto por turno de respaldo.
- Panel con dos roles de alcance distinto, tablero analítico, bitácora,
  pedidos y reglas. No enlazado desde el sitio público y con noindex.

Empaquetado en Docker multietapa con la base de demostración horneada en
la imagen y el volumen de datos separado, para que los leads capturados
sobrevivan a los redespliegues.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-08-28 00:07:20 -06:00

64 lines
2.3 KiB
YAML

# =============================================================================
# Prueba local de la imagen de producción.
#
# docker compose up --build
# → http://localhost:3000
#
# No es el archivo con el que se despliega en Coolify: allá la plataforma
# construye la imagen y administra el volumen. Esto sirve para comprobar, antes
# de subir, que la imagen arranca, que la base sobrevive a un reinicio y que la
# sonda de salud responde. Ver docs/DESPLIEGUE.md.
# =============================================================================
services:
web:
build:
context: .
dockerfile: Dockerfile
# Estas dos se hornean en el bundle durante `next build`: pasarlas solo
# como environment no tendría efecto en el sitio.
args:
NEXT_PUBLIC_SITE_URL: "http://localhost:3000"
NEXT_PUBLIC_WHATSAPP: "525540348395"
image: fspm-web:local
container_name: fspm-web
ports:
- "3000:3000"
environment:
# Ruta absoluta dentro del contenedor. Debe caer dentro del volumen.
DATABASE_URL: "file:/app/data/fspm.db"
# Solo para la prueba local. En producción se genera uno nuevo:
# openssl rand -base64 48
AUTH_SECRET: "secreto-de-prueba-local-cambialo-en-produccion-por-favor"
# Repetidas aquí para que el servidor las tenga; el bundle del navegador
# ya las trae horneadas desde build.args.
NEXT_PUBLIC_SITE_URL: "http://localhost:3000"
NEXT_PUBLIC_WHATSAPP: "525540348395"
# Acceso rápido de demostración en /admin/login. En un despliegue real
# que alguien vaya a ver, ponlo en "false".
DEMO_ACCESO_RAPIDO: "true"
volumes:
# Volumen nombrado: es lo que hace que los leads capturados sobrevivan a
# `docker compose up --build`. Si esta línea se borra, cada
# reconstrucción empieza otra vez con la base de demostración.
- fspm-datos:/app/data
restart: unless-stopped
# La sonda del Dockerfile ya cubre esto; se repite aquí para que
# `docker compose ps` muestre el estado sin depender de la imagen.
healthcheck:
test: ["CMD-SHELL", "wget --quiet --tries=1 --spider http://127.0.0.1:3000/api/salud || exit 1"]
interval: 30s
timeout: 5s
start_period: 60s
retries: 3
volumes:
fspm-datos:
name: fspm-datos