okpy / ok

ok.py supports programming projects by running tests, tracking progress, and assisting in debugging.
Apache License 2.0
335 stars 84 forks source link
autograder autograding berkeley cs61a education flask python

Logo

The ok.py server collects submissions and displays analysis of student progress based on logging sent from client scripts.

Courses can sign up for our free hosted service on okpy.org

The ok.py software was developed for CS 61A at UC Berkeley.

Build Status Coverage Status Docker Repository on Quay

View Documentation at OK Documentation

Installation

To install:

Local Server

To run the server locally:

$ source env/bin/activate # for virtualenv
$ pip install -r requirements.txt  # to install libraries
$ ./manage.py createdb
$ ./manage.py seed
$ ./manage.py server

The server will listen on http://localhost:5000.

If you are running into issues - see documentation/SETUP.md or file an issue

Running Workers

To run workers locally:

$ ./manage.py worker

To be able to run the workers you should have a redis server installed and running.

If redis is not installed you can install it using your distribution's package manager or follow Redis Quick Start.

Command Line Manager

Customizing seed content

server/generate.py initializes the local server with sample content (Users, Assignments, a Course etc). You can customize it by changing the file and running ./manage.py resetdb.

Server Development

The server is developed in Python 3.5+ using Flask.

Core Features

Backup Maintenance

Composition Grading

Autograding

Projects using ok.py

Developer Guidelines

See documentation/CONTRIBUTING.md

Recent activity:

Throughput Graph

Deploying

Docker + Kubernetes on Google Container Engine. See kubernetes/kubernetes.md for more info.

The ok-server also supports deployments to Heroku or servers on any major hosting service.

There also exists a one-click setup for ok-server on Azure.

Python Style Guide

Refer to The Elements of Python Style

Some useful things for developers to know:

  1. Testing with ok-client
    • To test with ok-client, please follow the instructions for the ok-client repo here.
    • Once you are inside the virtual environment for ok-client, you can make a new binary by using the command ok-publish.
    • Start the local ok server.
    • When running the ok binary, add the flags --insecure --server localhost:<port> to point it to the running ok-server
    • To find demo assignments that you can use the binary with, look in ok-client/demo