{"id":13408394,"url":"https://github.com/bttger/markdown-flashcards","last_synced_at":"2025-03-14T13:31:07.895Z","repository":{"id":65950285,"uuid":"576952089","full_name":"bttger/markdown-flashcards","owner":"bttger","description":"Small CLI app to learn with flashcards and spaced repetition. Follows the UNIX philosophy by utilizing portable, flat markdown files.","archived":false,"fork":false,"pushed_at":"2024-06-16T12:19:59.000Z","size":187,"stargazers_count":58,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-07-31T20:30:24.348Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bttger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-11T14:20:22.000Z","updated_at":"2024-06-16T12:20:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"fb0817b1-d43e-43d2-b16c-ea353ea5756a","html_url":"https://github.com/bttger/markdown-flashcards","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bttger%2Fmarkdown-flashcards","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bttger%2Fmarkdown-flashcards/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bttger%2Fmarkdown-flashcards/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bttger%2Fmarkdown-flashcards/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bttger","download_url":"https://codeload.github.com/bttger/markdown-flashcards/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243584180,"owners_count":20314715,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T20:00:52.608Z","updated_at":"2025-03-14T13:31:06.816Z","avatar_url":"https://github.com/bttger.png","language":"Go","funding_links":[],"categories":["\u003ca name=\"flashcard\"\u003e\u003c/a\u003eAnki, decks and flashcards"],"sub_categories":[],"readme":"# Markdown Flashcards (`mdfc`)\n\nEasily create and study flashcards using a markdown file and `mdfc`. The command allows you to learn in the terminal through spaced repetition.\n\n![Screenshot](media/screenshot.png)\n\nIf you have worked with Anki before (especially across multiple platforms), you might know how tedious it can be to create flashcards, to tag them, to format them, and also to browse them. I don't want to get overwhelmed by the tool. I just want to reliably learn stuff that is not simple vocabulary. And what could be easier than writing questions and answers in a markdown file?\n\n![Category selection](media/category_selection.png)\n\n## Features\n\n- Just plain markdown\n- An adapted Leitner system with 4 difficulty levels instead of a binary system\n- The ability to study cards from one topic or all topics at once\n- The option to study cards in sequential or random order\n- Test mode, which allows you to test yourself with a number of random cards\n\n\u003e You can use `mdfc` on your Android Smartphone with Termux: Install Termux via F-Droid or the GitHub [Releases](https://github.com/termux/termux-app/releases) and then run `pkg install markdown-flashcards`.\n\n## Markdown Schema\n\n`mdfc` automatically creates and updates the metadata of your flashcards. The following schema shows how the metadata is stored in the file:\n\n```\n# \u003ccategory\u003e\n\n## \u003cfront_side\u003e\n\n\u003cback_side\u003e\n```\n\nAn example file could look like the following. And btw, if you use a proper Markdown editor the file won't look so messy anymore thanks to the syntax highlighting 🌈\n\n```\n# 11 Broadcast (or multicast)\n\n## Why do broadcast algorithms differentiate between receiving and delivering?\n\nBecause between the network and the application there lies the broadcast algorithm as a middleware. The algorithm decides, whether a message which the node received is forwarded (i.e. delivered) to the application.\n\nThe same applies to the send. An application only sees the broadcast call but the middleware then spreads it into multiple point-to-point messages.\n\n## Which types of reliable broadcast are there?\n\n- FIFO broadcast\n- Causal broadcast\n- Total order broadcast\n- FIFO-total order broadcast\n```\n\n## Installation\n\nMake sure you have Go installed.\n\n- Clone this repository (`git clone git@github.com:bttger/markdown-flashcards.git`)\n- Build the executable (`cd markdown-flashcards \u0026\u0026 go build -o mdfc ./cmd/mdfc.go`)\n- (Optional) Move the executable to a directory that is in your `PATH`. On Linux, you can use the following command: `sudo mv mdfc /usr/local/bin`.\n- You can now run the command `mdfc` (or `./mdfc` if you have not added the executable to your environment) in your terminal.\n\n```bash\n# Run the executable\n$ mdfc ./path/to/flashcards.md\n$ mdfc -h\nUsage: mdfc [options] [file]\n\nOptions:\n\n\t-h, --help\n\t\tShow this help message and exit.\n\n\t-s, --sequential\n\t\tShow flashcards in sequential order as in the markdown file. The default behavior is to\n\t\tshow flashcards in random order.\n\n\t-o, --show-category\n\t\tShow the category of each flashcard.\n\n\t-c, --category \u003ccategory\u003e\n\t\tShow only flashcards of the specified category. A category is a first-level heading in the\n\t\tmarkdown file. A category can be specified by a case-insensitive prefix of the heading.\n\t\tIf no category is specified, you can interactively choose one.\n\n\t-t, --test \u003cnumber_flashcards\u003e\n\t\tTest yourself in test mode with random flashcards. If no number is specified, all\n\t\tflashcards will be shown. Possible to combine with -c, --category.\n\n\t-n, --number \u003cnumber_flashcards\u003e\n\t\tLearn n cards during the session. Set it to 0 to study all cards that are due to today.\n\t\tDefaults to 20.\n\n\t-f, --future-days-due \u003cdays\u003e\n\t\tUsually a flashcard is due on a particular date. If you want to learn flashcards\n\t\tbefore they are due, you can specify the number of days in the future when a flashcard\n\t\tshould be due. This might be helpful in the case when you have no cards due for today's\n\t\tlearning session. Cards where the due date was missed will be added anyway. Defaults to 0.\n\n\t-w, --wrap-lines \u003cline_length\u003e\n\t\tWrap lines to a maximum length. Only breaks lines at whitespaces. Defaults to terminal width.\n\n\t--share-file\n\t\tCreates a copy of the flashcard file with the suffix '.share.md'. This file resets the\n\t\tlearning progress of all flashcards. This is useful if you want to share your flashcards.\n```\n\nUsually, my default command that I run is `mdfc -o -w 100 ./flashcards.md`. This shows the category of each flashcard and wraps lines at 100 characters.\n\n## Open features\n\nThe MVP is done so far, and you can study and test yourself. But of course development is never done. Here are some ideas for the future:\n\n- [ ] Git integration: commit changes to the flashcard file after a learning session\n- [ ] YAML front matter: Specify `NumberCards` and `boxIntervals` in the front matter\n- [ ] Provide distro packages\n- [ ] Update a card's content during a session if the user changes the file in the background\n- [ ] Beautify the console output\n\n## Maybe inspiration for the future\n\n- https://blog.duolingo.com/how-we-learn-how-you-learn/\n- https://research.duolingo.com/papers/settles.acl16.pdf\n- https://www.pnas.org/doi/10.1073/pnas.1815156116\n- https://github.com/st3v3nmw/obsidian-spaced-repetition\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbttger%2Fmarkdown-flashcards","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbttger%2Fmarkdown-flashcards","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbttger%2Fmarkdown-flashcards/lists"}