Skip to content

justinnhli/demograder

Repository files navigation

Demograder

The best answer to the question, "What is the most effective method of teaching?" is that it depends on the goal, the student, the content, and the teacher. But the next best answer is, "students teaching other students". - Wilbert J. McKeachie

For a description of the general idea, read this blog post.

Requirements

Demograder uses an all-Python stack:

Running

  1. Go to the root of this repository

     cd demograder
    
  2. Set up a virtual environment with the necessary packages

     python3 -m venv /PATH/TO/VENV/demograder
     source /PATH/TO/VENV/demograder/bin/activation
     pip install -r requirements.txt
    
  3. Change directory paths in Procfile, gunicorn.conf, and nginx.conf

  4. Copy/link the nginx configuration nginx.conf to /etc/nginx/sites-enabled/

  5. Allow the executing user can sudo nobody without a password. This can be done by modifying /etc/sudoers:

             demograder ALL=(nobody) NOPASSWD: ALL
    
  6. Create demograder/secrets.json

  7. Set up django by running:

     ./manage.py migrate
     ./manage.py createsuperuser
     ./manage.py makemigrations demograder
     ./manage.py migrate
     ./manage.py collectstatic
    
  8. Load fixtures in demograder/fixtures:

     ./manage.py loaddata demograder/fixtures/$FIXTURE
    
  9. (Re-)Start nginx:

     sudo service nginx restart
    
  10. Start the services with honcho start, or to specific the number of workers, honcho start -c rqworker=4

Known Issues

  • Project dependencies cannot be concurrent - no new submissions are expected from the dependent project
  • A number of settings (datetime format, timezones, etc.) are not yet configurable in settings.py

About

An autograder for the people

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published