Ridlr is simple Online Tutoring & Quiz application written in Django
Ridlr setup is relatively simpler. It used Django
for API layer, specifically we're using Django REST Framework. Frontend is written using ReactJS
.
- Create virtualenv
python3.7 -m venv venv
- Activate virtualenv
source ./venv/bin/activate
- Create Database
cd webapp/ridlr && python manage.py migrate
- NOTE: Change
settings.py
if you would like to run Ridlr with different Database
- NOTE: Change
- Create Superuser
python manage.py createsuperuser
- Load Quiz using following management command
python manage.py load_quiz ./master_templates/Quiz-Template.tsv
- Replace with any Quiz Template that you might have created
- Start Django
python manage.py runserver 0.0.0.0:8000
- Change to right directory
cd webapp/ridlr/frontend/ridlr
- Install Dependencies
yarn install
- Start the frontend
yarn serve
Category
: Category related to a Quiz. E.g.Programming
SubCategory
: Sub-Category associated with Quiz E.g.Python/Collections
Quiz
: Quiz is self-explainatoryQuizStructure
: It is the structure that is used to buildQuestionBank
. It basically tell us how many questions of a givenSubCategory
do we need to include.QuestionType
: Right now its onlyMCQ
{Multiple Choice Question}, we will be implementingOpen
andCode
questionsQuestion
: Object of Question that gets added toQuestionBank
Choice
: Object of Choice associated withQuestion
and information if its correctQuestionBank
: This gets generated and rendered to frontend via APIInvitation
: We use Invitation codes as opposed to Passwords for authenticating users.TestSession
: Meta-data related to test sessions. E.g. When a given Test Session got started and completedQuestionResponse
: Log of all responses for a given Question. This is used for audit-trail.
A typical Quiz Template looks like follows
Key things to note:
Quiz Name
Timed
: Tells if the Quiz is TimedMax Time In Mins
: If Quiz is timed, what is the maximum allowable time?Quiz Structure
: In this section we have one row perSub Category
.- E.g.
Python/Basics 1
implies select one question of categoryPython/Basics
- E.g.
Category Sub Category Question Type Point Question Choices Correct
is where you start populating your quiz database