flashcards out of a plain markdown file, studied in the terminal you already have open.
cram reads a notes.md file, pulls out every Q/A pair, quizzes you with spaced repetition. no sync, no proprietary deck format, no account. your notes file and your terminal. tbh that's it.
not on github yet. python 3.9+, mac or linux when it ships.
_________________________________________ / \ / Q: what does dict.setdefault do? \ | | | (space to flip) | | | | A: returns value for key, setting | | it to default if missing | | | | [ hard ] [ ok ] [ easy ] | \_________________________________________/ ~ card 4 of 12 · due today ~
## calculus Q: derivative of x^2? A: 2x Q: integral of 1/x dx? A: ln|x| + C ## python Q: what does dict.setdefault do? A: returns value for key, setting it to default if missing
$ cram notes.md 12 cards, 4 due now. → derivative of x^2? (space to flip) 2x [h]ard [o]k [e]asy → o next up in 4 days. 3 cards left today.
plain markdown, nothing else
one file. ## for topics, Q: and A: for cards. no yaml frontmatter, no db, no import/export dance. the notes you already have become the deck.
sm-2 scheduling
same algorithm anki uses, minus the ceremony. cards you keep missing come back sooner, ones you crush drift into the distance. i don't know why this works, it just does.
offline, no account
no login, no cloud, no "we noticed you haven't studied in a while" email. study on a plane, study without wifi, study without agreeing to a privacy policy you didn't read.
three keys, one card
one card at a time. h, o, e, space to flip. no themes, no gamification, no streak screaming at you to come back. built for students, not productivity youtubers.
the notes you already wrote are a perfectly good deck.
cram reads the file you've got open.
not public yet
source drops on github soon, i'm finishing the repo. email bennett@frkhd.com if you want in early.