API de orquestacion y aplicacion web para analisis de texto y PDF con autenticacion JWT.
- centraliza el acceso a capacidades NLP en un unico punto
- ofrece login y control de acceso con JWT
- aplica rate limiting en login y endpoints de analisis
- integra una interfaz web para analisis de texto y documentos PDF
- persiste usuarios en MySQL con contrasenas hasheadas
Este proyecto funciona junto a los siguientes repositorios:
- classifier-service: https://github.com/javiervilchezl/classifier-service
- intent-service: https://github.com/javiervilchezl/intent-service
- pdf-service: https://github.com/javiervilchezl/pdf-service
El gateway consume esos servicios por HTTP para completar el flujo de analisis.
El gateway no llama directamente a OpenAI/Groq. Quien consume esas APIs son los microservicios:
pdf-serviceclassifier-serviceintent-service
En cada microservicio puedes elegir proveedor por .env con:
PROVIDER=openaioPROVIDER=groqOPENAI_API_KEYyOPENAI_MODELGROQ_API_KEYyGROQ_MODEL
Asi, puedes tener por ejemplo pdf-service en OpenAI y intent-service en Groq, segun costo, latencia o calidad esperada.
browser / CLI
│
▼
ai-gateway ── auth · rate-limit · routing
├──▶ pdf-service
├──▶ classifier-service
└──▶ intent-service
ai-gateway/
├── backend/
├── frontend/
├── .env.example
└── docker-compose.yml
POST /api/v1/auth/loginPOST /api/v1/analyzePOST /api/v1/analyze-pdf-fileGET /health
- JWT para acceso desde frontend
- limitacion de peticiones por IP y endpoint
- API key opcional para clientes servidor-a-servidor
- microservicios internos no expuestos al exterior en despliegue compuesto
- todos los secretos deben vivir en
.envlocal - no se deben subir archivos
.enval repositorio docker-compose.ymlno define claves reales por defecto- antes de publicar en GitHub, rota cualquier clave que se haya usado en local
JWT_SECRET_KEYAUTH_REQUIRE_JWTDATABASE_URLADMIN_DEFAULT_USERNAMEADMIN_DEFAULT_PASSWORDPDF_SERVICE_URLCLASSIFIER_SERVICE_URLINTENT_SERVICE_URLVITE_API_BASE_URL
- Copia el archivo de ejemplo:
cp .env.example .env- Levanta backend y frontend:
docker compose up --buildServicios:
- backend:
http://localhost:8000 - frontend:
http://localhost:5173
- Login en frontend para obtener JWT.
- Peticion al gateway con bearer token.
- Validacion de seguridad en backend (JWT + rate limit).
- Enrutamiento al microservicio que corresponda.
- Respuesta unificada hacia frontend/CLI.
Backend:
cd backend
pytestFrontend:
cd frontend
npm test -- --runCobertura al 100%.