Volver

Vocab

Práctica de vocabulario centrada en el uso real.

Proyecto personal → producto · Febrero 2026 – presente

0 palabras en biblioteca personal
0 modos de práctica con IA
0 llamadas de datos reescritas (Sheets→D1)

Resumen

Vocab es una app para aprender vocabulario practicando cómo se usan las palabras, no solo reconociéndolas. Cada palabra se practica escribiendo una frase propia que una IA evalúa —corrección lingüística + veredicto—, dentro de un sistema de repetición espaciada. La empecé en febrero de 2026 para preparar el examen DELE, y la uso a diario. Después la transformé de herramienta personal en un producto multiusuario completo.

El problema

Me preparaba para el DELE y había acumulado una lista enorme de palabras. Pero las flashcards no son la mejor forma de integrar vocabulario al uso activo: puedes ver una palabra, entender su definición y aun así no saber emplearla. Además, mantener listas a mano consume tiempo y atención —justo lo que te aleja de practicar.

Quería dos cosas: eliminar la fricción de añadir palabras, y practicar el uso real en lugar del reconocimiento pasivo.

La solución

De la palabra subrayada a la práctica activa: el flujo es el corazón del proyecto.

  1. Subrayo una palabra en el móvil y ejecuto un atajo de iOS. No escribo nada ni indico el idioma: el servidor detecta el idioma, valida que la palabra existe y descarta duplicados y variantes (conjugaciones, plurales) con un embudo de similitud + juez LLM.
  2. La app me propone la palabra y escribo una frase. Una IA evalúa si la usé bien y analiza gramática y registro, con sugerencias. El objetivo no es reconocer la palabra: es producirla en una situación real.
  3. Cada palabra se reprograma según mi rendimiento con SM-2. Un calendario muestra qué toca revisar y cuándo. Modos de práctica: espaciada, situación (recall activo), libre e imagen (describir una foto con análisis por visión).
  4. Para convertirlo en producto: autenticación propia en el edge (email/PBKDF2 + Google OAuth sin librería, verificación JWKS RS256 con Web Crypto), base de datos multi-tenant en Cloudflare D1, y BYOK — cada usuario usa su propia clave de IA, coste cero para el servidor.

Arquitectura

  📱 iPhone (palabra subrayada)        🌐 App de una página (Safari)
        │  Shortcut → POST /add               │  login Google / email → JWT
        │  (+ token personal)                 │
        ▼                                     ▼
                 ⚙️  Cloudflare Worker (edge)
                 auth JWT · BYOK · ruta /add
                          │
          ┌───────────────┼────────────────────┐
          ▼               ▼                     ▼
  🤖 OpenAI         🤖 OpenAI / Gemini    🗄️ Cloudflare D1
  detección idioma  evaluación de frase   (SQLite edge)
  + duplicados      (clave del usuario,   datos por user_id:
  (gpt-4.1-mini)     BYOK)                palabras · progreso · etc.

  >> Subrayar una palabra y tocar un atajo: eso es todo el "trabajo".
     La práctica entrena el USO, no el reconocimiento.

El único paso manual es ejecutar el atajo. Todo lo demás es automático.

Stack técnico

CapaTecnología
FrontendJavaScript vanilla, un solo index.html, HTML/CSS, mobile-first (Safari/PWA)
Hosting frontendGitHub Pages (deploy vía GitHub Actions)
Backend / proxyCloudflare Worker (edge)
Base de datosCloudflare D1 (SQLite en el edge), multi-tenant por user_id
AutenticaciónEmail + PBKDF2 (Web Crypto) · Google OAuth (ID token, JWKS RS256) · sesiones JWT (HS256)
IA (práctica)BYOK — OpenAI (GPT) y Google (Gemma/Gemini), streaming, abstracción multi-proveedor
IA (captura)gpt-4.1-mini server-side: detección de idioma, validez y similitud
Captura móviliOS Shortcuts → POST /add con token personal

Retos técnicos resueltos

Autenticación desde cero en el edge

PBKDF2 para contraseñas y verificación del ID token de Google por JWKS (RS256) dentro del Worker con Web Crypto, sin librerías. Vinculación de cuentas por email: un mismo email = una sola cuenta, ya entres con Google o con contraseña.

Migración Sheets → D1 sin perder el frontend de una página

Normalicé los datos a tablas relacionales por user_id y reescribí ~25 llamadas de acceso a datos, manteniendo la app en un único archivo.

BYOK con sincronización entre dispositivos

La clave viaja por cabecera en cada petición de IA y nunca se almacena del lado servidor por defecto. Opción de sincronizarla (cifrada en reposo) entre los dispositivos del usuario vía D1.

Captura sin fricción con inteligencia server-side

La ruta /add reproduce un embudo de validación —idioma + sentido + similitud (puntuación normalizada + juez LLM)— leyendo el vocabulario existente desde D1, y responde en el formato que el atajo de iOS ya entiende.

Evaluación de frases por IA

Veredicto estructurado + análisis lingüístico en streaming, con manejo de presupuestos de tokens de modelos de razonamiento y reglas anti-alucinación en los prompts.

Repetición espaciada (SM-2)

Reprogramación por palabra, límite diario de palabras nuevas y cambio de día según la hora local del usuario.

Resultados

  • Uso diario desde febrero de 2026 para preparar el DELE; biblioteca personal de 8000+ palabras.
  • Práctica del uso, no del reconocimiento: escribo frases reales y recibo corrección inmediata.
  • Fricción de captura casi nula: subrayar + un atajo, sin escribir ni indicar idioma.
  • De herramienta a producto en pocos días: auth (Google + email), datos por usuario, BYOK y despliegue en producción, con coste de IA cero del lado servidor.

Qué demuestra este proyecto

Construí solo un sistema full-stack de extremo a extremo —captura móvil, frontend, autenticación, base de datos en el edge e integración de varias APIs de IA— y, sobre todo, transformé una necesidad personal real en un producto usable por otros. Nació de aprender un idioma: la tecnología está al servicio de la práctica, automatizando lo aburrido para proteger lo que importa, usar las palabras.