Saltar a contenido

Licencias OSS y servicios externos

Documento informativo de entrega. Licencias verificadas una por una el 2026-10-10 contra metadatos instalados (backend/venv *.dist-info/METADATA, frontend/node_modules/*/package.json) y, donde no estaban instalados, contra PyPI JSON / Hugging Face API. No constituye dictamen de compatibilidad de licencias.

Fecha: 2026-10-10. Rutas relativas a la raíz del superproyecto.


1. Dependencias backend (Python)

Fuente: backend/requirements.txt, backend/requirements-dev.txt, backend/Dockerfile (wheel CPU de torch).

Paquete Versión exigida Licencia
fastapi >= 0.109.0 MIT
uvicorn[standard] >= 0.27.0 BSD-3-Clause
pydantic >= 2.5.0 MIT
pydantic-settings >= 2.1.0 MIT
sqlalchemy >= 2.0.25 MIT
asyncpg >= 0.29.0 Apache-2.0
aiosqlite >= 0.19.0 MIT
alembic >= 1.13.0 MIT
pytest >= 8.0.0 MIT
pytest-asyncio >= 0.23.0 Apache-2.0
httpx >= 0.26.0 BSD-3-Clause
testcontainers >= 4.0.0 Apache-2.0
deepdiff >= 7.0.0 MIT
passlib[bcrypt] >= 1.7.4 BSD-3-Clause
python-jose[cryptography] >= 3.3.0 MIT
PyJWT >= 2.7.0 MIT
python-multipart >= 0.0.6 Apache-2.0
python-dotenv >= 1.0.0 BSD-3-Clause
openai >= 1.0.0 Apache-2.0
sse-starlette >= 2.0.0 BSD-3-Clause
sentence-transformers >= 3.0.0 Apache-2.0
numpy >= 1.26.0 BSD-3-Clause (License-Expression 2.x: BSD-3-Clause AND 0BSD AND MIT AND Zlib AND CC0-1.0)
redis (cliente) >= 5.0.0 MIT
torch (wheel CPU, vía backend/Dockerfile:17) sin pin en requirements BSD-3-Clause
import-linter (solo dev) >= 2.0 BSD-2-Clause
pydeps (solo dev) >= 1.12 BSD-2-Clause (serie 3.x; la sospecha GPL era de la 1.x) — solo herramienta de análisis, no se distribuye con la app
mypy (solo dev) >= 1.10 MIT
pyupgrade (solo dev) >= 3.15 MIT
pre-commit (solo dev) >= 3.7 MIT

Notas:

  • Verificado el 2026-10-10: ningún paquete del árbol es copyleft (la sospecha GPL sobre pydeps era de su serie 1.x; con >= 1.12 se instala la 3.x, BSD-2-Clause). pydeps e import-linter son solo herramientas de desarrollo, no forman parte del runtime.
  • python-jose está prácticamente abandonado upstream; el proyecto lo usa junto a PyJWT para la verificación RS256 del id_token de Apple (requirements.txt:23, backend/app/core/config.py:112).

2. Dependencias frontend (Node)

Fuente: frontend/package.json. Runtime: Node 20 (frontend/Dockerfile:6), Next.js 16, React 19.

Paquete Versión Licencia
next ^16.2.9 MIT
react / react-dom 19.2.4 MIT
@xyflow/react ^12.11.0 MIT
class-variance-authority ^0.7.1 Apache-2.0
clsx ^2.1.1 MIT
date-fns ^4.1.0 MIT
lucide-react ^1.7.0 ISC
next-themes ^0.4.6 MIT
qrcode.react ^4.2.0 ISC
radix-ui ^1.4.3 MIT
react-markdown ^10.1.0 MIT
recharts ^3.8.1 MIT
remark-gfm ^4.0.1 MIT
shadcn ^4.1.2 MIT
sonner ^2.0.7 MIT
tailwind-merge ^3.5.0 MIT
tw-animate-css ^1.4.0 MIT
vaul ^1.1.2 MIT
zustand ^5.0.12 MIT
@playwright/test (dev) ^1.59.1 Apache-2.0
@tailwindcss/postcss (dev) ^4 MIT
@testing-library/* (dev) ^6.9.1 / ^16.3.2 / ^14.6.1 MIT
@types/* (dev) ^19 / ^20 MIT
@vitest/coverage-v8 (dev) ^4.1.4 MIT
eslint / eslint-config-next (dev) ^9 / ^16.2.9 MIT
jsdom (dev) ^29.0.2 MIT
openapi-typescript (dev) ^7.13.0 MIT
tailwindcss (dev) ^4 MIT
typescript (dev) ^5 Apache-2.0
vitest (dev) ^4.1.4 MIT

3. Servicios externos y proveedores

Servicio Uso en el proyecto Evidencia Tipo de cuenta / coste
PostgreSQL 15-alpine BD principal (local y producción vía asyncpg) backend/docker-compose.yml:3, backend/app/core/database.py Autohospedado (imagen docker.io/postgres:15-alpine, licencia PostgreSQL, permisiva). Sin proveedor gestionado contratado que conste en el repo
Redis / Valkey Rate limiting persistente y store de estado OAuth (redis_rate_limiter.py, redis_oauth_state_store.py); URL opcional (redis_url / valkey_url, backend/app/core/config.py:159-166) backend/requirements.txt:39, backend/app/core/config.py:159-166 Sin proveedor entregado (docker-compose.yml no levanta ningún servicio; sin configurar, el rate limiting degrada a memoria). Recomendación: la Sociedad monte Valkey (compatible, licencia BSD-3-Clause) y fije redis_url/valkey_url
NVIDIA NIM (integrate.api.nvidia.com/v1) LLM del chat en la época histórica (modelo por defecto stepfun-ai/step-3.5-flash); la cuenta NVIDIA solo se usó para pruebas, no hay cuenta de producción que transmitir backend/docker-compose.yml (NVIDIA_API_KEY, NVIDIA_MODEL, NVIDIA_BASE_URL), backend/.env.example:9 API comercial de NVIDIA; requiere API key de pago. La Sociedad deberá crear su propia cuenta. Modelo LLM recomendado: DeepSeek Flash (vía proxy local OpenAI-compatible, configurado en NVIDIA_BASE_URL; ver arquitectura_hibrida_chatbot.md)
Google OAuth (cliente + admin) Login con Google, dos clientes separados backend/docker-compose.yml (GOOGLE_CUSTOMER_CLIENT_ID/SECRET, GOOGLE_ADMIN_CLIENT_ID/SECRET), backend/app/core/config.py:57-63 No se transmiten credenciales; la Sociedad los regenera con sus cuentas de empresa en Google Cloud Console + scripts/setup_oauth.sh
Apple Sign In (cliente + admin) Login con Apple, verificación RS256 del id_token contra JWKS backend/app/core/config.py:67-72,112, backend/requirements.txt:23 No se transmiten credenciales; la Sociedad los regenera con sus cuentas de empresa en Apple Developer Program (de pago)
Hugging Face Hub Descarga del modelo de embeddings en el primer arranque (cache en volumen camarero_ia_hf_cache) backend/docker-compose.yml (volumen /hf-cache), backend/app/shared/infrastructure/granite_embeddings.py Descarga pública, sin cuenta. Modelo por defecto en backend/app/core/config.py:128: sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 (Apache-2.0); variante Granite evaluada en benchmark: ibm-granite/granite-embedding-97m-multilingual-r2 (Apache-2.0; solo alternativa, perdió frente a MiniLM, no es el default productivo)
Hosting / VPS + nginx Reverse proxy de referencia (proxy_pass a frontend y backend) nginx/nginx.conf:61-62,93,118, nginx/n0idea.app.conf Servidor dado de baja — no se transmite ni hay acceso. Configs nginx incluidas como referencia para redesplegar. VPS/dominio a provisionar por la Sociedad

4. Cuentas e infraestructura — titularidad pendiente

  • Cuenta NVIDIA: solo se usó para pruebas, no se transmite ninguna cuenta; la Sociedad crea la suya. Modelo recomendado: DeepSeek Flash.
  • Proyecto Google Cloud (OAuth cliente + admin) y URIs de redirección: a regenerar por la Sociedad con sus cuentas de empresa, no se transmiten.
  • Apple Developer (Sign in with Apple, cliente + admin): a regenerar por la Sociedad con sus cuentas de empresa, no se transmiten.
  • VPS, DNS de n0idea.app, certificados TLS: servidor dado de baja, no se transmite; la Sociedad provisiona infraestructura propia con los scripts entregados.
  • Copias de seguridad de Postgres y política de retención: no hay nada al respecto en el repo; lo decide la Sociedad en su infraestructura.
  • ADMIN_SUPER_EMAIL por defecto (fquintanaquiroga@gmail.com, Francisco Quintana Quiroga) en backend/docker-compose.yml — se mantiene como bootstrap inicial; la Sociedad lo cambia por su cuenta corporativa al desplegar.