
What if you could learn a new language with Anki cards—using your favorite songs or book passages, in the easy and creative way?
Check it out!
Table of Contents
Whether you're a language enthusiast, a curious learner, or a developer exploring NLP-powered tools, Anki Deck Generator helps you learn languages in context—sentence by sentence.
With our project you can turn your favorite songs or books into personalized Anki flashcards.
You can run our project in these ways:
The easiest way! Just access this link.
- docker
- Download docker deskop on your computer.
- Launch docker desktop application.
- Create
.env
with
OPENAI_API_KEY=TOKEN
and replace TOKEN
with your GPT token.
4. Open terminal in directory with .env
file.
5.
docker pull dkddjdjjfjdj/anki-deck
docker run --env-file .env -p 8000:8000 dkddjdjjfjdj/anki-deck
- After that in browser go to https://localhost:8000/
- npm
- node.js
- git
- Clone our repository:
git clone https://github.com/AnkiGen/anki_deck.git
- Get into the directory:
cd anki_deck
- Install all dependencies:
npm install
- Start the app:
npm run dev
Link to the Docker Hub: Click me!
In the very beggining... You have the opportunity to choose the way of creating an Anki deck!
- Create deck using the most common and must-known words in English (Great for beginners!)
- Create deck using the text from your book or song.
(Good for learners who know the basics and want to move further!)
If you go with the first choice, the deck is automatically generated and you are welcome to download the deck in .csv
or .apkg
format
If you choose the second choice, you need to submit the text in raw format.
Then proceed to filters, choose maximal count of words in text and the amount of unknown words in deck.
Then you have these ways of choosing words into the deck:
- Tinder
- Manual
- Word List Let us go by each of these:
Very simple to use, mobile, but does not let you control every word in the proposed text.
- Swipe to the left to mark the word as don't want to learn (won't be added to deck)
- Swipe to the right to make the word as want to learn (will be added to deck)
- Click on the top-right to mark the word as already known.
Somewhat complex, but yet, very powerful way of choosing words for the deck. You are presented with the whole text you've submitted.
- By one-time clicking the word, you mark it green as want to learn
- By double clicking the word, you mark it as read as don't want to learn
- By clicking thrice you unmark the word
Presents list of multiple word cards! Same as in manual:
- By one-time clicking the card, you mark it green as want to learn
- By double clicking the card, you mark it as read as don't want to learn
- By clicking thrice you unmark the card
After finishing choosing words, you are presented to the preliminary view of your generated Anki deck card. You could manually change the word translation and context if needed.
Also, there is a possibility to copy the table in .csv
format for manual change.
When everything is done, you can proceed further for the download in
.csv
or .apkg
formats!
- Working website run with docker
- User can mark words as known/unknown to improve quality of sentences
- Tinder-style selecting is provided
- User can choose number of words he want to learn and length of generated sentence
- Sentences are generated considering context
- On the final page user can download csv file with proper fields
- Review for the generated deck
- Change the design for the website
- Remove automatically redundant symbols, s.a. [1], the, a, an, etc...
- Finish the documentation
- Improved deck generation logic
- Make filter limitations work correctly
- Add possibility to fetch text by writing author and song name
- Voicover for words
- Teacher student system See all our tasks here
Any contributions you make are greatly appreciated!
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request

Distributed under the MIT License. See LICENSE.txt
for more information.
Contributing.MD
with the information about the project: click me!Git Graph
with the information about the git process: click me!Quality Attribute Scenarios
with the information about the user scenarios for quality: click me!User Acceptance Tests
with the information about the user tests: click me!Architecture
with the information of views: deployment, dynamic, static: click me!
Viktor K. – Team lead, Frontend developer
telegram: @vitec_321
Ivan K. – UX/UI designer, Frontend developer
telegram: @vanyaspapayas
Anastasia P. – Designer, Tester
telegram: @anastayshaa_a
Ilya S. – Backend developer
telegram: @ISNJI
Albert M. – Backend developer
telegram: @NeuroticExistentialDissonance
Vadim G. – Backend developer
telegram: @FleshTeaml