A website to help gamified courses, built with Django (Python).
Life in school is very boring. Teachers usually keep talking on and on while students passively watch them. The main goal is usually getting good grades in tests, instead of practicing the concepts.
But it doesn't have to be like that. There are modern methodologies like Active Learning, Flipped Classroom, and Gamification in Learning. These concepts can make a huge difference in motivation and performance. I recommend watching this Extra Credits video and this TED from Salman Khan.
This app targets the Gamification part of the equation.
I give my students an activity (like a small project) in every class. Each activity has many tasks (some are optional), and the students get points when completing them. Then they access this website to see their progress, the class rank, the videos, the links to the theory files, etc.
- Login system for students and instructors to access their classes.
- Invitation by email. All user data is set in admin page, but the students/instructors can create and reset their password.
- List of activities and tasks, in which students earn XP points. Some of them can be optional and stay hidden until a grade is given.
- Achievements with automatic rules or manual input.
- Score ranking, with a customisable size to hide students at the bottom and not upset them.
- Blog posts (using Markdown).
- Widgets to display due dates, links, tips, etc (also using Markdown).
- Responsiveness to small and big screens.
All data is managed in Django's admin. I've made some customisations to help data input.
There are different ways to install and run this project.
Docker is a tool that packages an application and its dependencies in a lightweight virtual container. You can download it here. After installation, use the following steps to run this project in your computer.
- Clone/download this repo.
- Navigate to the repo folder in your terminal.
- Type
docker-composer up
. - Open another terminal tab/window in the same folder.
- Type
docker-compose exec web python manage.py migrate
to create the database tables. - Type
docker-compose exec web python manage.py createsuperuser
to create the initial user for the website. - Go to
0.0.0.0:8000
in your browser.
- Install Homebrew.
- Install Python 3 running
brew install python3
in your terminal. - Install PostgreSQL.
- Create the database with
psql -U postgres -d postgres -c 'CREATE DATABASE gamified_education'
. - Clone/download this repo.
- Navigate to the repo folder in your terminal.
- Run
pip3 install -r requirements.txt
to download the dependencies. - Run
python3 manage.py migrate
to create the database tables. - Run
python3 manage.py createsuperuser
to create the initial user for the website. - Run
python3 manage.py runserver
. - Go to
localhost:8000
in your browser.
I should make a Wiki with all the details, but here is the gist of it:
- A Course has Assignments (e.g., modules or lessons), Tasks (e.g., exercises) and Badges (medals).
- A Course has Classes.
- A Class has Posts and Widgets.
- A Class associates multiple Assignments with multiple Tasks, giving a XP goal to each combination. This allows each Class to have different grading rules.
- A Class has Students.
- A Student gets Grades from each Assignment/Task combination (as a percentage).
- A Class selects some (or all) Badges from the Course.
- A Class can have Criteria to each Badge, giving some goal to an Assignment and/or Task.
- A Student gets Achievements from each Class Badge (as a percentage).
- A Class has Instructors, which can see the Grades of every Student.
- Python 3.9 or higher
- Django
- PostgreSQL (it should be plain SQL, but I use the RANK function)
- Django Material
- markdown2
- Pygments