Programs for spaced repetition using flashcards in Markdown.
- Essentialist: Application for desktops (Windows, MacOS and Linux) and mobile (Android)
- Flashdown: Terminal user interface
The space repetition algorithm used is based on SM-2.
Key features:
- Privacy: No network access, your data never leave your device.
- Easy card creation: Flash cards are plain text Markdown files.
- Cross-platform: Runs on Linux, MacOS, Windows and android.
See the CONTRIBUTING.md for how to report bugs and submit pull request.
Each deck of cards is a plain text Markdown files with the extension .md (ex:
sample.md). You can put all your decks in the same directory.
Each card starts with a heading level 2 (line starting with ##) defining the
question. The answer is the content following (until the next heading level 2).
You progress is stored in a hidden file .<deck file>.db (ex: .sample.md.db).
Example of a deck with 3 cards:
## Question: what format is used?
Questions and answers are in **Markdown**.
## Are lists supported?
Yes, here is an example:
- one
- **two**
- three
## How to include a table in the answer?
Answer with a table.
| A | B |
| --- | --- |
| 124 | 456 |A GUI version for desktops and mobile (Android, iOS support isn't tested).
Download the latest version or compile it with the following instructions:
Linux
In order to build Essentialist, install the following dependencies (Debian/Ubuntu):
sudo apt-get install libxrandr-dev libxcursor-dev libglx-dev libxi-dev libgl-dev libxxf86vm-dev
The simplest way to build and install Essentialist with its desktop launcher and icon on Linux is to use the Makefile like:
make install DESTDIR=$HOME/.local PREFIX=""
Essentialist does not support Xorg and Wayland at the same time. By default, Xorg is enabled. If you want to enable Wayland support, run:
make install DESTDIR=$HOME/.local PREFIX="" WAYLAND=trueYou can also simply build the binary with:
go build ./cmd/essentialist
MacOS
go install fyne.io/tools/cmd/fyne@latest
cd cmd/essentialist
fyne package -os darwinWindows
go build -x -o essentialist.exe ./cmd/essentialistAndroid
-
Install the Android NDK from https://developer.android.com/ndk/downloads. Set the
ANDROID_NDK_HOMEvariable to the directory where the NDK is located. -
Build the Android APK with:
go install fyne.io/tools/cmd/fyne@latest
cd cmd/essentialist
fyne package -os android- Plug your phone over USB and install the APK with:
adb install Essentialist.apkUse the local storage (of your Android device) to import flash cards. For example, you can put them in an SD card and import them from the Essentialist application.
Flashdown is the terminal application.
To install it, clone this repo and run:
go install ./cmd/flashdownUsage:
flashdown <deck_file> [<deck_file>]Similar project: https://github.com/Yvee1/hascard.
go get -u ./...
go mod tidy
go run github.com/dennwc/flatpak-go-mod@latest -out cmd/essentialist/flatpak/ .
go-licenses report ./... --template cmd/essentialist/licenses.tpl > cmd/essentialist/licenses.mdA new version can be created from the Release workflow.
- Go to the "Actions" tab in the GitHub repository.
- Select the "Create Release" workflow.
- Click on "Run workflow".
- Enter the new version number (e.g., 1.2.3) in the "Version" input field.
- Click on "Run workflow".
The workflow will automatically update the version number in the files, commit the changes, build the application for all platforms, and create a new Git tag. This will trigger the release creation workflow, which will create a new release on GitHub with the build artifacts.

