Loading repository data…
Loading repository data…
135Andres / repository
Plataforma modular de estudio universal impulsada por agentes de IA. Web multimodal para chatear, procesar apuntes/imágenes y generar tests dinámicos mediante NVIDIA AI y RAG con SQLite + embeddings vectoriales. Backend en TypeScript y auth OTP en Python/FastAPI. Con el objetivo de crear una base de conocimiento colectiva.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Plataforma modular de estudio universal impulsada por agentes de IA. Web multimodal para chatear, procesar apuntes/imágenes y generar tests dinámicos mediante NVIDIA AI y RAG con SQLite + embeddings vectoriales. Backend en TypeScript y auth OTP en Python/FastAPI. Con el objetivo de crear una base de conocimiento colectiva.
Un tutor de IA conversacional (chat multimodal: texto, imágenes, audio) que además:
backend/ — Node/TypeScript, Express, better-sqlite3, vitest. API principal: chat, embeddings, exámenes, KB colectiva, cron jobs.backend-python/ — FastAPI. Solo auth: login por OTP (correo), whitelist, sesión.public/ — frontend vanilla JS, sin build step. Una página HTML por feature (login.html, dashboard.html, chat.html).Requisitos: Node ≥20, Python 3.10+, pip.
# backend Node
cd backend
npm install
cp .env.example .env # rellenar NINE_ROUTER_API_KEY, NVIDIA_API_KEY_EMBEDDINGS, JWT_SECRET
npm run migrate
# backend Python (auth)
cd ../backend-python
pip install -r requirements.txt
Variables mínimas en backend/.env (ver .env.example para el resto, todo lo demás tiene default):
NINE_ROUTER_API_KEY=
NVIDIA_API_KEY_EMBEDDINGS=
JWT_SECRET=
cd backend
npm run dev:all # levanta Python (auth, :3001) + Node (API, :3000) juntos
O por separado: npm run dev (Node) / npm run dev:python (auth).
Alternativa: npm run dashboard en la raíz del repo levanta ambos procesos a la vez en un panel de terminal dividido (dashboard.js, usa blessed) — por eso existe un package.json en la raíz aparte del de backend/, no es residuo de scaffold.
Frontend: servir public/ estático (o abrir directo si el backend ya sirve esa carpeta) — entra por login.html.
Tests: npm test (backend). Typecheck: npm run typecheck.
detectSubjectByKeywords pasó de "primera materia que matchee, en orden de diccionario" a un score ponderado (frase de 2+ palabras > keyword técnica > keyword suelta genérica marcada weak), con confidence: 'high'|'low' expuesto. Arregla falsos positivos reales (ej. "Movimiento Romántico" caía en física por la palabra suelta "movimiento" antes de llegar a artes). El routing por mensaje (chat.orchestrator.service.ts) solo usa la heurística mejorada, sigue síncrono. La extracción de bloques de conocimiento (chat.block-extraction.service.ts) ahora sí manda la materia a la IA cuando la heurística viene con confidence: 'low' o sin materia — reusando el mismo batch que ya generaba títulos, sin llamada extra — dejando de ser aspiracional ("IA solo para casos ambiguos" ya es real, pero limitado a block-extraction, no al routing).nvidia/thinkingmachines/inkling) como modelo base con effort dinámico, delegación automática a GLM 5.2 (código), Claude Sonnet (alta complejidad) o Gemini Pro (alta complejidad + contexto RAG largo). Clasificador heurístico sin llamadas de red, extendido a 19 materias.AbortController ya abortado y moría instantáneo también — cada intento ahora tiene el suyo.