Volver a proyectos

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
rusky — El algoritmo de repaso como función pura, y por eso testeable — ampliar imagen

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.