If you’re familiar with spaced reptition, you’ll know that there are a lot of approaches out there, and a lot of research. Anki, SuperMemo, Quizlet, Duolingo etc, all have their own proprietary algorithms implementing some variation on learning curves. When prototyping Strove, one of the things I discovered is that many of these algorithms, require a lot of unique information to be stored. For instance, SM2 stores an easinessFactor
, dueDate
, and interval
for each card a user wants to learn. This is fine if you’re confident in an algorithm, but I wanted a more general-purpose solution that would allow me to fine-tune lesson generation over time.
Instead, the Prisma model looks something like this:
model Card {
id String
createdAt DateTime