The objective for this project is to create a flashcards web app with following features.
Features:
Login, register page for user
Dashboard with list of decks, last reviewed deck
Time of last review, score on deck
After selecting a deck for practice, present cards one after other
Allow user to select difficult of each card
Update last reviewed time and score, and overall deck score
Options to create a new deck, edit, delete deck
Add cards, edit, delete cards
Export/Import decks
APIs for interaction with decks
Files Structure
The files structure is shown as below. It explains how files are connected to each other.
Files Tree Diagram
This app is built in two iterations. In first iteration, a simple flashcards web app was built with using just Python and Flask. It had extra features like import/export a deck of cards and token based authentication. In next iteration, the same app was modified as a SPA with Vue.js, along with extra features like caching using Redis, background async jobs with Celery, report generation with weasyprint, and scheduled email notifications.
The files tree diagram for the app is shown below.
Web Page Design
A wireframe is a schematic that can be used to determine the app's structure. It consists of a number of screens arranged in the order in which they will be displayed to the user, as well as the material that will be displayed on each screen. It's also useful for programming. Based on the wireframes, the webpages were designed and developed with HTML, CSS, JS, and Bootstrap
The web pages are shown below.
Presentation and Video Demo
After building all required screens and programming related functions final app has been ready.
The video below is the project presentation for the first iteration of the app. (It was submitted to IIT Madras as a part of MAD-I Course.)
The video below is the project presentation for the second iteration of the app. (It was submitted to IIT Madras as a part of MAD-II Course.)
The video below is the live demo of the app.
Resources
All the relevent files and documents are available in the Github repository. Prefix v1 means first iteration and v2 means second iteration.