MidnightOil, a clone of Brainscape and Anki, is based off the phrase "burning the midnight oil", meaning to study late into the night. It is a flashcard application with the theme of the late Renaissance era. Users progress their mastery level of the decks/cards they make and study. The phrase originated in the 1630s, at the very end of the Renaissance and entering a transitioning time into the Modern era, so the app tries to tie in the past with it's graphics--depictions of oil lamps and Baroque-style paintings of reading by candlelight-- with Modern design elements that are cloned from Brainscape.
Wiki Links
- Backend: Python, Flask, WTForms
- Frontend: JavaScript, React/Redux, AJAX
- Database: PostgresSQL/SQLAlchemy
- Design and Styling: HTML/CSS
- External APIs: Recharts.js, Vose-Alias-Method.py
- Screenshots:
- Users can start a study session that will go through 10 cards, rating how well they did on each card from 1-5.
- Users can see their progress bar go up 1/10th with each 2-5 rating, users will redo every 1 rated card in the session.
- Users can see the checkpoint/results after finishing the session, how many of each rating they did and the current mastery percentage for the deck.
- Shared Decks
- Users can see a list of decks made by other users and make a copy of them for their account to study
- Users can chose to allow their decks to be shared, either on creation or when editing a deck.
- Clone this repo
git clone
- Install dependencies for backend
pipenv install
- Install dependencies for frontend
cd react-app
npm install
- Create PostgreSQL user
CREATE USER midnight_oil_dev WITH CREATEDB PASSWORD '<password>'
- Create PostgreSQL database
CREATE DATABASE midnight_oil_db WITH OWNER midnight_oil_dev
- Create a
.env
file in the root directory based on the.env.example
file - In
.env
file:- Replace 'password' in DATABASE_URL with your chosen password
- Enter a secure combination of characters for you SECRET_KEY
- Flask Migrate and Seed your database in root directory
pipenv shell
flask db upgrade
flask seed all
- Start backend server in root directory
flask run
- Start frontend server in
react-app
directorynpm start
- In your browser go to
localhost:3000
- You may use the Demo user or create a new user by clicking on the
Log In
button. Then you can search, look at products, leave reviews, add items to cart, purchase items, etc..