Welcome to Flash.ME!

Inspiration

Studying for memorization-heavy exams, such as medical school and law school exams, can be incredibly taxing on students. While Anki is often the go-to study software endorsed by many productivity Youtubers and medical school influencers, we found personally that it lacked the user experience and the ease-of-access that a webapp could provide. Spending too long on a monotone UI can be even more taxing along with the weight of studying tons of information. While Quizlet is another strong choice, it lacks the crucial spaced-repetition algorithm of Anki to boost effective studying. We wanted to create something that combines the best of both worlds.

What it does

This project aims to implement evidenced-based study strategies such as active recall and spaced repetition in a flashcard website while providing users with a fresh and intuitive UI. Users are able to sign in using OAuth2 and create flashcard sets. While studying, the program is actively analyzing the quality of their response with each flashcard, for example, how quick a user responds or how accurate it is. For example, low accuracy answers means the flashcard will appear again in a sooner study session.

Active Recall: testing yourself on information to improve it's strength in your long term memory

Spaced Repetition: spreading your study sessions over a period of time to combat the "forgetting curve"

How we built it

We used Python and imported a spaced repetition algorithm module called SuperMemo2 on the back-end. SuperMemo2 provided us various values to determine the "spacing" and "repetition" in our study sessions. The values "quality" and "easiness" help determine the strength of a user's knowledge of a certain flashcard based on answer similarity and response time. The values "repetition" and "interval" help determine the next time a user will come across the flashcard in their study sessions in order to calculate a "review_date". User information, flashcard sets, and the flashcards were stored on a MongoDB database that can send or retrieve data at any time.

On the front-end, we used Vue.js and SCSS to build a responsive single-page website while using Sketch to design the user interface. We also made the website fully responsive on mobile and tablets using flexbox. We host our website on netlify.

Challenges we ran into

  • Been over a year since any of us have used Python
  • Hosting collaboration sessions over different operating systems
  • Trouble setting up the Python environment(we weren't able to get the right Python version to run)
  • Implementing the algorithm for spaced repetition (determining quality and how easiness was calculated as well as the next study date)
  • Linking our code to the database
  • Git/GitHub commitment issues :sob:
  • Authorization error when trying to log on to OAuth2 from different IPs
  • Unfamiliarity with frameworks
  • Passing from front-end to back-end and vice versa
  • connecting database to frontend

Accomplishments that we're proud of

  • The design turned out amazing. We're really happy with how it looks!
  • Lots of growth as software engineers in a short amount of time
  • Bringing a product to the market that's applicable and useful
  • We had effective communication and excellent planning to distribute the work to fit our strengths

What we learned

  • First time working with database storage and server hosting
  • First time developing as a team, understanding each others' coding styles
  • Front-end and back-end workflow
  • Familiarized ourselves with new frameworks
  • Vue-cli
  • OAuth2 implementation

What's next for Flash.ME

  • Text to speech function
  • Image support
  • Ability to undo and override misclicks
  • Improve precision by accounting for time of day
  • Make project name more G rated

Built With

+ 2 more
Share this project:

Updates