Backend - PoC SaaS Iframe
Este documento explica c贸mo funciona el backend del proyecto, qu茅 endpoints ofrece y c贸mo se integra con el frontend React.
Prop贸sito
El backend sirve como:
- API para autenticaci贸n con token, configuraci贸n y gesti贸n de sesiones.
- servidor de archivos est谩ticos para el build de React en producci贸n (
frontend/dist). - punto de entrada de administraci贸n, preview y experiencia embebida.
- watcher opcional que reconstruye el frontend cuando cambian los archivos fuente.
Estructura principal
main.py- servidor FastAPI principal.requirements.txt- dependencias Python.run_server.bat- helper para arrancar el backend con el virtual environment local..venv/- entorno virtual Python del backend.home.html,admin.html,preview.html- p谩ginas de apoyo.
C贸mo ejecutar
Activar entorno virtual
En Windows CMD:
cd /d C:\Users\alane\OneDrive\Escritorio\Prueba-PoC\backend
.venv\Scripts\activate
En PowerShell:
cd C:\Users\alane\OneDrive\Escritorio\Prueba-PoC\backend
.\.venv\Scripts\Activate.ps1
Instalar dependencias
pip install -r requirements.txt
Ejecutar servidor
python -m uvicorn main:app --reload --host 0.0.0.0 --port 8000
O usar el helper:
run_server.bat
Comportamiento de producci贸n
En producci贸n, el backend sirve el build de React desde frontend/dist en la ruta /app.
- El HTML principal se carga en
/app - Los assets de Vite se sirven en
/app/assets/... - Si
frontend/dist/index.htmlno existe, se devuelve un mensaje de error claro.
Endpoints principales
P谩ginas y visualizaci贸n
GET /-home.htmlGET /preview-preview.htmlGET /admin-admin.htmlGET /app- React app est谩tica servida desdefrontend/distGET /widget.js- script JS que inyecta un iframe con el visualizadorGET /health- estado del backend y si el frontend build est谩 listo
API de integraci贸n
POST /api/token- genera un token temporal paraclient_idGET /config- devuelve datos del cliente seg煤nclient_idotokenPOST /session/start- marca la sesi贸n como activaGET /api/keys- lista clientes registradosPOST /api/generate-key- genera una nueva API key de clienteGET /api/active-sessions- muestra sesiones activas actuales
L贸gica de token y cliente
Validaci贸n de token
- Los tokens se guardan en memoria en
TOKENS - Cada token vence despu茅s de
TOKEN_TTLsegundos - Si el token ha expirado, se devuelve
401
Configuraci贸n del cliente
- El diccionario
CLIENTScontiene los clientes registrados por defecto - Cada cliente tiene
nombre,color_primarioycreated_at POST /api/generate-keyagrega un nuevo cliente aCLIENTS
Seguridad y headers importantes
El backend habilita:
- CORS abierto (
allow_origins=["*"]) para facilitar el desarrollo - Eliminaci贸n de
x-frame-optionsen todas las respuestas - Agrega
Content-Security-Policy: frame-ancestors *para permitir iframes
Watcher autom谩tico de frontend
El backend tambi茅n incluye un watcher que observa cambios en el frontend y ejecuta npm run build autom谩ticamente.
Qu茅 archivos vigila
frontend/src/**/*.{ts,tsx,js,jsx,css,json,html}frontend/vite.config.tsfrontend/package.jsonfrontend/tsconfig.json
C贸mo funciona
- Si el backend est谩 ejecut谩ndose, el watcher corre en un hilo daemon.
- Cuando detecta cambios, ejecuta
npm run buildenfrontend/. - El resultado actualiza
frontend/distpara que/appsirva la versi贸n nueva.
Requisitos del watcher
- Necesitas tener
npminstalado y accesible desde el PATH. - El backend debe arrancarse desde el directorio ra铆z del proyecto.
Desarrollo y producci贸n
Desarrollo
- Para trabajar en el frontend con hot reload, usa el dev server de Vite:
cd /d C:\Users\alane\OneDrive\Escritorio\Prueba-PoC\frontend
npm run dev
- Abre
http://localhost:5173/app?token=...
Producci贸n / backend
- Para servir el frontend est谩tico desde el backend:
cd /d C:\Users\alane\OneDrive\Escritorio\Prueba-PoC\frontend
npm run build
- Luego carga
http://localhost:8000/app?token=...
Integraci贸n con hyper-ferreteria
Este backend puede montar la l贸gica de hyper-ferreteria en un prefijo alterno para evitar conflictos de rutas.
- Se carga si la carpeta
../hyper-ferreteriaexiste junto al directorioPrueba-PoC. - La integraci贸n queda disponible en
http://localhost:8000/hf. - Las rutas internas de
hyper-ferreteriase exponen como:http://localhost:8000/hf/upload_asynchttp://localhost:8000/hf/segment_guidedhttp://localhost:8000/hf/analyze_scenehttp://localhost:8000/hf/apply_texturehttp://localhost:8000/hf/textureshttp://localhost:8000/hf/image/{filename}http://localhost:8000/hf/masks/{filename}http://localhost:8000/hf/ai/{filename}- y otras rutas de
hyper-ferreteriacon el prefijo/hf
Docker
Se a帽adi贸 soporte Docker al backend con un Dockerfile y .dockerignore.
- El contenedor expone el puerto
8000. - El servicio arranca con
uvicorn main:app --host 0.0.0.0 --port 8000. - El
requirements.txtdel backend fue ampliado para incluir las dependencias dehyper-ferreteria.
Para construir y correr:
cd /d C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend
docker build -t prueba-poc-backend .
docker run -p 8000:8000 prueba-poc-backend
Notas para nuevos desarrolladores
- El backend es el origen de verdad para la l贸gica de seguridad y sesiones.
- El frontend puede correr en modo dev para desarrollo r谩pido.
- En producci贸n, el backend usa el build est谩tico de React.
- Si un cambio en
frontend/srcno se refleja, revisa si est谩s usando5173(dev) o8000(backend+build).