Vocab
Práctica de vocabulario centrada en el uso real.
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.
- 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.
- 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.
- 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).
- 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
| Capa | Tecnología |
|---|---|
| Frontend | JavaScript vanilla, un solo index.html, HTML/CSS, mobile-first (Safari/PWA) |
| Hosting frontend | GitHub Pages (deploy vía GitHub Actions) |
| Backend / proxy | Cloudflare Worker (edge) |
| Base de datos | Cloudflare D1 (SQLite en el edge), multi-tenant por user_id |
| Autenticación | Email + 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óvil | iOS 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.