Inspiration
I use flash card apps for foreign language study and often feel like it's difficult to find material in your target language that's the right difficulty for the level you're at. This app combines flashcards using spaced repetition and inputting target materials to track measurable progress and potentially let a user know when they're ready to use that material.
What it does
Create, edit, and study flashcards. Spaced repetition will be used to assign the next review date of each card. A user can add target material (such as articles, short stories, transcripts) in one block and it will parse the text and prompt the user to sort each new word. Words can be added to the flashcard deck, ignored (proper nouns, words not in target language), or set as a variant that will be attached to a standard form (if a user prefers to only study nouns in singular form, for example). When target material is added, stats related to that material are tracked: how many words fall into each category (new, learning, familiar, and expert), and what percentage of words the user has yet to learn. These stats are used to generate a visual representation of this progress and a picture is gradually uncovered as the percentage of words learned increases.
How I built it
This project was built using Python, Flask, Jinja, SQLAlchemy, HTML, CSS.
Challenges I ran into
I have very little experiences with Flask and databases, and this was my first time using SQLAlchemy, so I spent a lot of time trying to work out how to implement the features I had in mind with the tools I was using.
Accomplishments that I'm proud of
I was able to implement all of the basic features I had in mind and everything is functional and I feel this would be beneficial to my own language study.
What I learned
I learned a lot about using Flask and SQLAlchemy, particularly accessing and passing variables or database information between pages. I had some experience with HTML and CSS, but this project required me to use them in different and much more complicated ways which was certainly a challenge.
What's next for Pyxis
I'd like to expand on the stats being tracked and the information stored on each card (particularly exploring ways to better use the relationship between words in variant forms). I would also like to look into prioritizing learning for either words that appear with the highest frequency across target material or words in a specific section of target material (or both).
Log in or sign up for Devpost to join the conversation.