Overview

Reps is a spaced repetition app built for programmers who want a cleaner UI, native syntax highlighting, and an algorithm that moves through cards faster. Using Markdown, you can write code blocks that are color-coded. With a simple exponential algorithm, you can review your flashcards much quicker.

Why build this?

This app was built as a replacement for a widely-known spaced repetition app that I previously used, Anki. I primarily used Anki to practice retaining information on programming fundamentals, but I had a few pain points with it:

  1. The UI is not to my liking.
  2. It is not convenient to type code inside flashcards since you have to use the code tag. It also doesn't come with syntax highlighting.
  3. Anki utilizes a much more complex algorithm for determining when to show flashcards, which involves cards often being repeated in one session. I want to go through my cards quicker.

And so, Reps was built. This app was not built for a wider audience in mind, but more so a personal app to solve the problems I've mentioned prior. It also serves as an opportunity to learn new technologies I haven't dabbled with before. I intend to use this app daily as a replacement for Anki.

The algorithm

How cards are shown is surprisingly simple!

If you mark a card correctly, the number of days until it gets shown again gets doubled. This keeps going, and it caps at 32 days. If you mark a card incorrectly, the number of days until it gets shown is reset to 1.

This makes it so that it's much easier to get through your cards quicker, especially if you're at a point where you have a lot of decks, that have a lot of cards. I much prefer this frequency, since I expend less time for one review session.

User guide

If you're not familiar with Markdown, I suggest you start by learning the basics, from a resource like this Markdown guide or something similar.

To add syntax highlighting, you need to specify the programming language after the first three backticks, when creating a code block. Try changing the JavaScript code below to Python code, and change javascript to python to correctly apply syntax higlighting:

Output

function sum(a, b) {
  return a + b;
}

alert(sum(1, 2));

3

Here is the list of supported languages. Languages that require a package are not supported (yet!).