A simple webapp for memorizing multiple choice answers
Clone or download
Latest commit 4903398 May 30, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
memorizer Merge pull request #39 from duvholt/feat/hide-exams May 30, 2018
migrations Add option to hide exam May 30, 2018
tests Allow one answer on questions with multiple correct answers May 29, 2018
.frigg.yml Add frigg Jun 20, 2016
.gitignore Add cache and coverage to gitignore Jun 26, 2016
.travis.yml Add codecov May 26, 2018
Pipfile Upgrade packages May 27, 2018
Pipfile.lock Upgrade packages May 27, 2018
README.md Migrate to pipenv May 26, 2018
app.py Add app file for uwsgi Dec 5, 2016
main.py Use Flask factory pattern Dec 14, 2015
tox.ini Upgrade packages May 27, 2018



Build Status codecov

Memorizer is a webapp written in Python 3 using Flask and SQLAlchemy meant to be used for answering multiple choice questions. It was created specifically for answering older multiple choice exams.

Currently running on https://memorizer.io/

Warning for users who want to adopt this project:

This project has been used as playground for me (duvholt) to experiment with different implemenations. The whole project is built upon the reinvent-the-wheel principle. I have deliberately avoided to build the app on big frameworks (well expect for SQLAlchemy - because who would want to deal with that mess). A good example of this is the homebrewed templating framework used to dynamically update the site.


  • Multiple choice answering
  • Support for several categories with subcategories (courses and exams)
  • Statistics about answered questions
  • Correct answer combo
  • Random question which will select an unanswered question if possible
  • Keyboard support
    • Left/right arrows (or a/d) for previous/next question
    • 1, 2, 3, 4 to select answer
    • Space (or q) to answer
    • r to load a random question


  • Requires pipenv to be installed
$ pipenv install # Install requirements
$ ./main.py db upgrade # Create/upgrade database tables
$ ./main.py import questions/*.json # Import all questions (Warning: super slow if using SQLite)
$ ./main.py runserver # Run webserver

###Local config

To overwrite configuration in memorizer/config.py create an new file called memorizer/localconfig.py.


DEBUG = True
SQLALCHEMY_DATABASE_URI = 'postgresql://username@localhost/memorizer'

Big thanks to all the contributors!