Skip to content
doctiling edited this page Oct 13, 2026 · 6 revisions

EMMA Desktop — Wiki del proyecto

EMMA es una tutora de inglés conversacional local-first para profesionales de TI. Pone al aprendiz en una escena de trabajo (una daily, un code review, una entrevista, un incidente en producción), conversa con él 100 % en inglés hasta cerrar la escena, anota los errores sin interrumpir y al final entrega un reporte con lección, repaso y próximo escenario. La IA corre en el equipo del usuario (Gemma 4 sobre WebGPU); la nube es opcional y explícita.

Es el Trabajo Integrador de la Maestría en Computación para el Desarrollo de Aplicaciones Inteligentes (CODING) de la Escuela de Ingeniería de Sistemas y Computación, Universidad del Valle.

Ver Contexto académico.

Enlace Qué es
https://github.com/raalzate/emma-desktop Código, issues (artefactos SDD), releases
https://raalzate.github.io/emma-desktop/ Vitrina pública con capturas y descarga
https://github.com/raalzate/emma-desktop/releases Instaladores macOS · Windows · Linux

Mapa de la wiki

Qué es y por qué

  • Contexto académico — la maestría, el trabajo integrador y cómo EMMA responde a sus objetivos.
  • Alcance y producto — problema, objetivo, alcance, funcionalidades, hoja de ruta y releases.
  • Pedagogía y currículo — el método del libro fuente, CEFR, repaso espaciado, escenarios y prácticas.

Cómo está hecha

  • Arquitectura — capas + hexagonal, procesos Electron, C4 (contexto y contenedores), persistencia e IPC.
  • IA local e híbrida — router de motores, Gemma/LiteRT‑LM, Whisper, voz local Kokoro, presupuestos de tokens, privacidad.
  • Flujos agénticos — el patrón «el LLM juzga, el código decide», onboarding ReAct, turno de chat, juez del turno, cierre y feedback.
  • Diagramas BPMN — las vistas de proceso del producto (turno de chat, ruta y progresión, repaso SRS, voz y pronunciación, onboarding, simulación y feedback).

Cómo se trabaja

Hacia dónde va

En una frase por capa

interface / components  ──►  application  ──►  domain
   (React, Electron, IO)      (casos de uso)   (reglas puras, puertos)
              │                     ▲
              └──► infrastructure ──┘   (store JSON por IPC, adaptadores de IA)

Las flechas solo apuntan hacia adentro. El dominio no conoce React, Electron ni red: recibe puertos (LlmGenerate, repositorios) por inyección de dependencias. Ese es el principio que hace posible probar 2090 comportamientos sin un solo modelo cargado.

Stack

Electron 39 · Next.js 15 (App Router, export estático) · React 18 · TypeScript 5 estricto · Tailwind 3 + shadcn/Radix · Gemma 4 .litertlm vía @litert-lm/core (WebGPU) · Whisper vía @huggingface/transformers · Kokoro‑82M vía kokoro-js en Web Worker WASM (TTS local + karaoke, Web Speech de respaldo) · Vitest · pnpm.

Clone this wiki locally