rusky
El algoritmo de repaso como función pura, y por eso testeable
App para aprender ruso con repetición espaciada: 6 suites de test sobre una lógica que no necesita base de datos ni reloj para probarse.
- Next.js
- TypeScript
- Prisma
- SQLite
- Tailwind CSS
- Vitest
- Docker
Qué es
Una app para aprender ruso desde cero con repetición espaciada: teoría, práctica y evaluación, y un sistema que decide qué toca repasar hoy según lo que fallaste ayer. El recorrido empieza por el alfabeto cirílico —las 33 letras en seis lecciones—, sigue por conversación diaria, números y gramática, y guarda el progreso: racha, porcentaje dominado y la fecha del próximo repaso de cada tarjeta.
El dato es de diseño: el corazón del sistema, el que decide cuándo vuelve una tarjeta, es una función pura —le entra el estado de la tarjeta y la nota que le pusiste, le sale el estado nuevo—. No toca la base de datos, no pregunta la hora, no tiene efectos. Por eso las 6 suites de test (repaso, vencimiento, cuestionario, racha, escritura, integridad del contenido) prueban la lógica que de verdad importa sin montar un entorno: la parte con estado queda fuera, en su capa, y se prueba aparte. Es la decisión que hace que una app pequeña siga siendo modificable seis meses después.
La misma base la reutilicé aplicada a otros temarios —Python, Bitcoin y .NET— cambiando solo el contenido.
