{"id":13408362,"url":"https://github.com/TBS1996/speki","last_synced_at":"2025-03-14T13:30:59.448Z","repository":{"id":45284073,"uuid":"513470057","full_name":"TBS1996/speki","owner":"TBS1996","description":"flashcard app in your terminal","archived":false,"fork":false,"pushed_at":"2023-05-04T14:22:13.000Z","size":100515,"stargazers_count":495,"open_issues_count":10,"forks_count":18,"subscribers_count":11,"default_branch":"main","last_synced_at":"2024-10-13T15:56:33.517Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TBS1996.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}},"created_at":"2022-07-13T10:03:31.000Z","updated_at":"2024-10-08T15:14:20.000Z","dependencies_parsed_at":"2024-01-07T21:02:16.340Z","dependency_job_id":"a6afe0c4-9b2a-4e83-be91-c7cf18a7bcf7","html_url":"https://github.com/TBS1996/speki","commit_stats":{"total_commits":281,"total_committers":4,"mean_commits":70.25,"dds":0.05693950177935947,"last_synced_commit":"26531a33ac44ade2e301303ec393b512367bcb45"},"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TBS1996%2Fspeki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TBS1996%2Fspeki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TBS1996%2Fspeki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TBS1996%2Fspeki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TBS1996","download_url":"https://codeload.github.com/TBS1996/speki/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221472477,"owners_count":16828216,"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.388Z","updated_at":"2025-03-14T13:30:59.436Z","avatar_url":"https://github.com/TBS1996.png","language":"Rust","funding_links":[],"categories":["\u003ca name=\"flashcard\"\u003e\u003c/a\u003eAnki, decks and flashcards","Rust"],"sub_categories":[],"readme":"# Speki\n\n\n## update\n\nim no longer working on this, I am working on a graphical version: https://github.com/tbs1996/spekispace\n\n\n[![/r/speki](https://img.shields.io/reddit/subreddit-subscribers/speki?label=Subscribe%20to%20%2Fr%2Fspeki\u0026style=social\n)](https://www.reddit.com/r/speki/)\n\nFlashcards for your terminal\n\n\nhttps://user-images.githubusercontent.com/56874491/197415847-43992a98-a9b8-4b63-ba4e-17c5a4204389.mp4\n\n\nnote: I haven't developed it much the past months as I now have my first developer job so been busy on that and other stuff. \n\n\n## Installation\n\n### Windows  \n\n[Click to download binary](https://github.com/TBS1996/speki/releases/download/v0.4.4/speki-windows.tar.gz)\n\nIt will probably be flagged as dangerous by windows\n\n\n### AUR\n\nPackage is simply named \"speki\" in the aur. Can be found [here](https://aur.archlinux.org/packages/speki).  \n\nif you're using yay:\n\n```bash\nyay -S speki\n```\n\n### Linux binary  \n\n\n[Click to download binary](https://github.com/TBS1996/speki/releases/download/v0.4.4/speki-linux.tar.gz)\nYou'll have to add it to your PATH manually for easy access. I'll look into how to to package it for various package managers, if you have experience with that then I'd appreciate help. \n\n\n### Cargo\n\nFor something that will work on any distro as long as you have cargo installed, try this:  \n  \n```bash\ncargo install speki\n```\n   \nNote that this won't install all the necessary dependencies, for example look at the note on ubuntu right below.\nYou can get cargo by [installing rust](https://www.rust-lang.org/tools/install)\n\n### Ubuntu\n\nIf you install with Cargo, you will also need to install the following package: `libasound2-dev` \n\n### Fedora  \n\nIf you install with Cargo, you will also need to install the following package: `alsa-lib-devel`   \n--\u003e  `sudo dnf install alsa-lib-devel`\n\n## Features\n\nIt's not just about having flashcards in your terminal\n\n\n### Anki-integration  \n\nSpeki has integrated the shared decks from anki, meaning you can jump straight in to learning different things, all without even leaving the app. It also allows you to customize the templates before importing. Soon I will add the possibility to add your local anki-files so that you'll get your anki-cards together with their learning-history to Speki.\n\n\n### Unfinished-cards \n\nHave a question but you're not able or don't have the time to find the answer to it? You can add unfinished cards in Speki, and be periodically asked if you're able to find the answer to them. No more needing a separate note-taking system for things you want to turn into flashcards.\n\n### Knowledge dependencies\n\nYou have the answer to your question, but you don't understand the answer? You can add the card as finished, but add *dependencies* to it, which would be other cards you need to understand for the current card to make sense. \n\nFor example, if you read this and you want to memorize it:  \n`Alpha particles consist of two protons and two neutrons`\n\nLet's pretend you don't know what protons or neutrons are. If you were to memorize this sentence in that case, the knowledge would be completely useless to you. In speki however, you can add the two following cards as dependencies:   \n`What is a proton?`  \n`What is a neutron?`  \n  \nIf you add them as dependencies, the original card will be marked as **unresolved**, meaning it has unfinished dependencies. When it is unresolved, you will not be asked to answer it, but you'll be asked to learn what a proton and neutron is, when you've figured out their meanings, the alpha particles card will become **resolved** and you can review it as normal. This system ensures that no matter how complicated things you add, you'll never end up memorizing something you don't understand, as long as you mark your dependencies correctly. \n\nIt also works recursively, meaning in the previous example, if you found the answer to \"what is a proton\" but didn't understand it, that card would itself have dependencies. The dependency-graph could go on indefinitively, but if you keep on the dependencies would eventually all resolve  and you'd finally learn the top-most card. This closely mirrors how your brain works, as everything you know is dependent on other pieces of knowledge. It also eliminates the need for making mind maps, as this is basically a more accurate type of mind maps.\n\n### Incremental reading\n\nIncremental reading is a concept originating in SuperMemo. It allows you to incrementally work your way through countless longform-texts in parallel, where you'll learn and memorize everything  you want from it. This is done by by being presented with the texts within speki, and every time you see an interesting piece, you take extracts from it. As if you were going through a real book and using a highlighter. Later you'll be presented with just the extract, and here you can choose to make further extracts, or directly making cloze deletions by marking the things you want to remember. When you read a non-fiction book, not long after you won't remember much from it. If you do it through incremental reading, you'll remember every single thing you choose to remember, albeit with some extra efforts. \n\nIf you want to read more about incremental reading, you can check out [this](https://www.masterhowtolearn.com/2019-08-06-supermemos-incremental-reading-explained/) blog article, as well as many other articles from the same site. \n\n### OpenAI integration  \n\nGot a key to OpenAI? Then you can autogenerate the answers to questions\n\n\n\nhttps://user-images.githubusercontent.com/56874491/196179030-eadbbe51-9b7a-4334-a2dc-5afb004031d5.mp4\n\nSimply put your key in the config file, which for linux users is in `~/.config/speki/config.toml`, and for windows users in `C:\\Users\\speki\\config.toml`\n\n\n## Keyboard-shortcuts\n\n### Universal\n\nswitch between tabs `tab/shift+tab`  \nswitch between widgets: `Alt+(h|j|k|l)`  \nquit: `Alt+q`  \ntoggle help menu: `F1`  \n\n\n### Per tab\n\n#### Review\n   \ngenerate answer (if gpt3 key in config) `Alt+g`  \nskip unfinished card `Alt+s`  \nmark unfinished card as finished `Alt+f`  \nsuspend card `Alt+i`  \nmark incremental text as done `Alt+d`  \nskip incremental text `Alt+s`  \nrate recall grade (worst..best) `1..4`  \nadd new card as dependency `Alt+Y`  \nadd existing card as dependency `Alt+y`  \nadd new card as dependent `Alt+T`  \nadd existing card as dependent `Alt+t`  \n  \n#### Add card\n\ngenerate answer (if gpt3 key in config) `Alt+g`  \nadd card as finished `Alt+f`  \nadd card as unfinished `Alt+u`  \n\n#### incremental reading \n\nadd wikipedia page (from sources or extracts list) `Alt+w`  \n\n#### import \n\ndownload deck that you've revealed description of `Enter`  \nswitch front and back template `Alt+s`  \nchange which card to preview (on preview button) `h/l`  \n\n\n### Per widget\n\n#### Textinput\n\ninsert-mode -\u003e normal-mode `Ctrl+c`  \nnormal-mode -\u003e insert-mode `i`  \nnormal-mode -\u003e visual-mode `v`  \nvisual-mode -\u003e normal-mode `Ctrl+c`  \npage-up  `Ctrl+u`  \npage-down `Ctrl+d`  \nextract (from visual mode) `Alt+x`  \ncloze-deletion (from visual mode) `Alt+z`  \ndelete right of line (from command mode) `D`  \n\n#### Topics\n\nmove cursor up/down `k/j`  \nmove topic up/down `K/J`  \ndelete topic `Del`  \nedit topic name `e`  \nadd new child topic `a`  \nmove topic up the hiarchy `h`  \nmove topic below topic under `l`  \n\n## Glossary  \n\n  \nPending card `Card has not yet been activated`  \nUnfinished card `Card does not have an answer`  \nFinished card `Card has a proper answer`  \nUnresolved card `One or more dependencies of the card is either unfinished or unresolved`  \nIncremental reading `A way of converting longform texts into flashcards`  \nSuspended card `Card won't show up in the learning process`  \n  \n\n## Future plans\n\n* Add tab where you can browse and filter all cards and perform actions on them\n* Add image suport for terminals that enable this\n* Machine-Learning algorithm for spaced repetition\n* Visualize dependency graph\n\n\n\n## Feedback/Contributions\n\nI'm very open to any feedback or PRs, feel free to open an issue if there's anything you're wondering, and i'll make sure to get back to you!\n\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=tbs1996/speki\u0026type=Date)](https://star-history.com/#tbs1996/speki\u0026Date)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTBS1996%2Fspeki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTBS1996%2Fspeki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTBS1996%2Fspeki/lists"}