README
This is sispare-qt: SImple SPAced REpetition (QT version). You can use
it to do spaced repetition with flash cards with a modified version of
the Leitner system[1]. I wrote sispare[2] because I don't think Anki
should be 100MB+ of code, and I wrote sispare-qt because I was sick of
squinting at my terminal to read the kanji.
You need
- Qt5 [ https://www.qt.io/ ]
- A C++ compiler that supports C++20
To use it, run
/path/to/sispare-qt [ -d <dir> ]
The <dir> argument defaults to ${XDG_DATA_HOME}/sispare or
${HOME}/.sispare .
Sispare-qt is mostly controlled by the data directory. It expects the
following layout:
/path/to/sispare/dir/
+ cards/
| + card_000/
| | + side_A
| | + side_B
| | + level
| + card_001/
| | + side_A
| | + side_B
| | + level
| + whatever name you like/
| + side_A
| + side_B
| + level
+ schedule/
+ 2031-08-12
+ 2031-08-13
+ 2031-08-16
When sispare-qt starts a session, it reads all the files in schedule/
whose names correspond to the current date or earlier. Each line in
those files will be something like "card_000" or "whatever name you
like".
All of those lines are collected and shuffled. For each line, the sides
of the corresponding card will be displayed in a window. If the user
marks the card as successfully remembered, the value stored in that
card's level file will be increased, which influences how much time
passes before the card is next reviewed. If the user marks the card as
failed, that card's level is reset to 1, and if the card is marked as
remembered with difficulty, the card's level is slightly reduced.
TODOs:
- Decide on correct behavior for deleted cards, and possibly add a
deletion option to the GUI. See the TODO in session.cc
- Implement card-adding from within the GUI. Currently I do that using
the CLI client, but it should be doable from here too. Better, even,
because the GUI will let me provide nice text entry boxes.
[1] https://en.wikipedia.org/wiki/Leitner_system
[2] https://repo.or.cz/sispare.git