You have learnt about backend engineering with Django in our session. Now use it to create a web application by yourself!
You must have used Moodle in your courses, where both instructors and students login, and for each course, the instructor uses the platform to share resources, send announcements, release grades, conduct quizzes and what not!
Your task is to create your own such a learning management system using Django, where you can add functionalities as per your own creativity!
- Users (to store auth logic, and models for
Instructor
,Student
,Course
,Admin
) - Grades (to store logic for sharing grades for any assessment, and models for let's say a class
Grade
) - Documents (for Instructor to upload
Docs
like lecture notes for the course) - Quizzes (this can have models for a
QuestionBank
containingQuestion
's which form aQuiz
) - Communication (to work on features like Course-wide
Announcements
,Reply
ing in threads to announcements, sending personalMessages
)
Try to implement as many features as you can, but make sure to plan the structure of the project and database schemas well!
- Deploy on Heroku
- Create documentation for any RESTful APIs created with documenter on postman
- Markdown support for Communication
- Email: For registration, password reset, notifications, instructor custom message
- Bulk upload from CSV for grades, quizzes
- Generating PDF: Print digitally signed transcript
- Add security features for the quizzes
- FORK this repository, by clicking the "Fork" button on top right
clone
the forked repo into your machine, andcd
into the Repo Folder such that you are in same directory level asmanage.py
- If on macOS, run
python3 -m venv env
, otherwisepython -m venv env
- Now activate the virtual environment by
source env/bin/activate
- See if the environment is correctly set by running
pip list
, it should be mostly empty - Install dependencies with
pip install -r requirements.txt
- We have already started a dummy project called
DevClubLMS
for you - Now, you can use
python manage.py runserver
to start the dev server orpython manage.py startapp <appname>
to create a new app inside this project - After completing the assignment, append instructions to run your project, along with explanation of features etc in this README
- It would be nice if you can host it on Heroku and also give a documentation of each endpoint through postman
- Finally submit with your details in the Google Form
- You do NOT need to make any pull requests to this repo
- Slides used in the session
- Introduction to Python and Django by Programming With Mosh
- Detailed Django Tutorials by Corey Schafer
- Mozilla's Tutorials on Server Side Programming with Django
- Django Official Docs
- Talk on how Instagram uses Django at production, and also the time when Justin Beiber almost crashed Instagram!
- Advice on Backend Engineering by Hussein Nasser
- Guide for Deploying Python apps on Heroku
- Guide for Postman Documenter