Giter Club home page Giter Club logo

canvas-gamification-ui's Introduction

Canvas Gamification

Canvas Gamification is a platform where course instructors can provide questions to their student in forms of practice, assignments, quizzes, or exams. This project now serves as the backend to the newer Canvas Gamification UI project. This project interacts with the Angular project through APIs, and the functionality of the website has been maintained in the migration to Angular.

  • Multiple Choice
  • Check Box
  • Java Coding
  • Parsons

If you are using windows please run this command before you clone the project. It will prevent the line endings to change from LF ro CRLF.

git config --global core.autocrlf input
  • Python 3.8
    • Required Packages is listed in requirements.txt
  • Docker
    • Required to run judge0 locally or deploying the website.
    • Installation
  • Judge0 server
    • Provided in docker compose
  • Mailing System
    • For production requires an SMTP mailing service. Provide the details in env files.
    • For local development the email will be printed in console.
  • reCaptcha
    • For production, you need to obtain your reCaptcha key and provide it in env files.
    • Details
    • For local development, recaptcha will be automatically validated.

In local development you can set the environment variables in env/gamification.dev.env. All the fields are pre-populated so if you just want to run the website no changes are required.

If you are developing in PyCharm (our recommendation), it is important to ensure that Django Support is enabled.

  1. Ensure that you have installed PyCharm Professional Edition, you can get a free license as a student. https://www.jetbrains.com/community/education/#students.
  2. PyCharm -> Preferences -> Language & Frameworks -> Django.
  3. Ensure that Enable Django Support is checked.

If on Windows it is important to note that you must have a C++ compiler installed locally in order to be able to install some of the dependencies (i.e. python-Levenshtein).

  1. Navigate to https://visualstudio.microsoft.com/downloads/.
  2. Download the Visual Studio 2019 Community Edition
  3. After downloading Visual Studio 2019, scroll to the All Downloads section at the bottom of the page.
  4. Select Tools for Visual Studio 2019. Scroll to the bottom of the dropdown and download Build Tools for Visual Studio 2019.
  5. After downloading the build tools, launch Visual Studio 2019.
  6. An option to install C++ Build Tools should now be available within Visual Studio 2019. Install the build tools.
  7. After installing the build tools, launch a new terminal and continue with the setup.

Ensure Python3 is installed, then upgrade/install pip

python3 -m pip install pip --upgrade

Optionally you set virtual environment for python install Pipenv

python3 -m pip install pipenv

Next navigate to the project directory, once in the project directory create a virtual environment with Pipenv

pipenv shell

To install all necessary dependencies

pip install -r requirements.txt

To be able to execute user's code you need to have judge0 up and running. docker-compose.dev.yml prepares and runs judge0. The environment variables in env/gamification.dev.env are set to use this instance of judge0.

sudo docker-compose -f docker-compose.dev.yml up -d

Apply the migrations

python3 manage.py migrate

Now you can run the server by

python3 manage.py runserver

To initialize sample questions you can use

python3 manage.py populate-db --all

To access the api endpoints navigate to localhost:8000/api.

To use the website you need an admin user. Create a super user by

python3 manage.py createsuperuser

You also need to give this user a teacher access to the website.

  1. Open the website's admin portal (normally at localhost:8000/admin).
  2. Login with the super user you just created.
  3. Go to the users section and click on your user.
  4. Scroll down and change the role from student to teacher.
  5. Save the user.
python3 manage.py test

For local development, it is recommended not to use docker for the website but only for judge0 which is provided in docker-compose.dev.yml.

For production, copy env/gamification.sample.env to env/gamification.env. Fill in the required variables and run the server with

sudo docker-compose up -d

The server should be up and running on port 80

Documentation is located in the docs/ directory.

Generate the html file by running this code in the docs/ directory.

make html

API Documentation is auto-generated from code and is accessible at /api/docs.

Keyvan Khademi

Opey Adeyemi

Carson Ricca

canvas-gamification-ui's People

Contributors

aadiraju avatar carson-ricca avatar dependabot[bot] avatar eliaspinno avatar hedgemon4 avatar jae186 avatar keyvan-tribe avatar keyvankhademi avatar liam-gm avatar mthedv avatar opeyem1a avatar samamthah avatar te-sa avatar yuqi88 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

canvas-gamification-ui's Issues

Messages service not dynamic

  • Messages service currently cannot handle different types of messages dynamically
  • Enhancement is to enable this so only 1 array/method is needed for any type of message

Topics page bugs

  • Nothing shows in the "Questions Available" column.
  • When average success is null, that column's value is "%", which is strange.
  • Rows in the table don't appear to be clickable, even though they are.

Fix concept map

  • Placement and routing
  • Correct data retrieval in the bubbles and in the page that shows on click (routing for this too)

Update Homepage

  • Navbar reorganization
  • Course dashboard with cards
  • Cards - active courses, table for inactive courses
  • Styling updates

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.