The ok.py server collects submissions and displays analysis of student progress based on logging sent from client scripts.
Courses can # for our free hosted service on okpy.org
The ok.py software was developed for CS 61A at UC Berkeley.
View Documentation at OK Documentation
To install:
- Clone this repo
- Install
virtualenv
. You can dobrew install virtualenv
on a mac orpip install virtualenv
orapt-get install python-virtualenv
- If brew cannot find
virtualenv
, usebrew install pyenv-virtualenv
.
- If brew cannot find
- Create a virtualenv with
virtualenv -p python3 env
- Activate the virtualenv with
source env/bin/activate
- (Optional, but recommended) Install
redis-server
. You can dobrew install redis
on a mac orapt-get install redis-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
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.
- To view available commands run
./manage.py
once the virtualenv is activated.
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
.
The server is developed in Python 3.5+ using Flask.
Backup Maintenance
- Best-effort maintenance of student backups that occur when ok is run.
Composition Grading
- Allow staff to comment on student composition of projects and assign grades.
Autograding
- Automatic grading of student submissions
- CS61A uses ok.py for all assignments.
- Many other UC Berkeley CS courses use ok.py
See documentation/CONTRIBUTING.md
Recent activity:
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.
Refer to The Elements of Python Style
Some useful things for developers to know:
- 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