{"id":14065267,"url":"https://github.com/okpy/ok","last_synced_at":"2025-04-05T07:07:38.945Z","repository":{"id":17223836,"uuid":"19992691","full_name":"okpy/ok","owner":"okpy","description":"ok.py supports programming projects by running tests, tracking progress, and assisting in debugging.","archived":false,"fork":false,"pushed_at":"2022-10-12T18:48:42.000Z","size":26781,"stargazers_count":345,"open_issues_count":158,"forks_count":83,"subscribers_count":56,"default_branch":"master","last_synced_at":"2025-03-29T06:08:31.009Z","etag":null,"topics":["autograder","autograding","berkeley","cs61a","education","flask","python"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/okpy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-20T18:36:23.000Z","updated_at":"2025-03-24T16:20:53.000Z","dependencies_parsed_at":"2023-01-11T20:26:10.223Z","dependency_job_id":null,"html_url":"https://github.com/okpy/ok","commit_stats":null,"previous_names":[],"tags_count":186,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/okpy%2Fok","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/okpy%2Fok/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/okpy%2Fok/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/okpy%2Fok/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/okpy","download_url":"https://codeload.github.com/okpy/ok/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247299833,"owners_count":20916190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autograder","autograding","berkeley","cs61a","education","flask","python"],"created_at":"2024-08-13T07:04:23.866Z","updated_at":"2025-04-05T07:07:38.906Z","avatar_url":"https://github.com/okpy.png","language":"Python","readme":"[![Logo](https://raw.githubusercontent.com/okpy/ok/master/server/static/img/logo-tiny.png)](#)\n=====\n\nThe ok.py server collects submissions and displays analysis of student progress\nbased on logging sent from client scripts.\n\nCourses can sign up for our free hosted service on [okpy.org](https://okpy.org)\n\nThe ok.py software was developed for CS 61A at UC Berkeley.\n\n[![Build Status](https://circleci.com/gh/okpy/ok.svg?style=shield)](https://circleci.com/gh/okpy/ok)\n[![Coverage Status](https://coveralls.io/repos/github/okpy/ok/badge.svg)](https://coveralls.io/github/okpy/ok)\n[![Docker Repository on Quay](https://quay.io/repository/cs61a/ok-server/status \"Docker Repository on Quay\")](https://quay.io/repository/cs61a/ok-server)\n\nView Documentation at [OK Documentation](https://okpy.github.io/documentation)\n\nInstallation\n-------------\n\nTo install:\n* Clone this repo\n* Install `virtualenv`. You can do `brew install virtualenv` on a mac or `pip install virtualenv` or `apt-get install python-virtualenv`\n  - If brew cannot find `virtualenv`, use `brew install pyenv-virtualenv`.\n* Create a virtualenv with `virtualenv -p python3 env`\n* Activate the virtualenv with `source env/bin/activate`\n* (Optional, but recommended) Install `redis-server`. You can do `brew install redis` on a mac or `apt-get install redis-server`\n\nLocal Server\n------------\nTo run the server locally:\n\n```bash\n$ source env/bin/activate # for virtualenv\n$ pip install -r requirements.txt  # to install libraries\n$ ./manage.py createdb\n$ ./manage.py seed\n$ ./manage.py server\n```\n\nThe server will listen on http://localhost:5000.\n\nIf you are running into issues - see `documentation/SETUP.md` or file an issue\n\nRunning Workers\n---------------\nTo run workers locally:\n\n```bash\n$ ./manage.py worker\n```\n\nTo be able to run the workers you should have a `redis` server installed and running.\n\nIf `redis` is not installed you can install it using your distribution's package\nmanager or follow [Redis Quick Start](https://redis.io/topics/quickstart).\n\nCommand Line Manager\n------------------------\n* To view available commands run `./manage.py` once the virtualenv is activated.\n\nCustomizing seed content\n-------------------\n`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`.\n\nServer Development\n------------------\nThe server is developed in Python 3.5+ using Flask.\n\nCore Features\n-------------\n\nBackup Maintenance\n- Best-effort maintenance of student backups that occur when ok is run.\n\nComposition Grading\n- Allow staff to comment on student composition of projects and assign grades.\n\nAutograding\n- Automatic grading of student submissions\n\nProjects using ok.py\n--------------------\n- [CS61A](http://cs61a.org) uses ok.py for all assignments.\n- Many other UC Berkeley CS courses use ok.py\n\nDeveloper Guidelines\n--------------------\nSee `documentation/CONTRIBUTING.md`\n\nRecent activity:\n\n[![Throughput Graph](https://graphs.waffle.io/okpy/ok/throughput.svg)](https://waffle.io/okpy/ok/metrics/throughput)\n\nDeploying\n---------\nDocker + Kubernetes on Google Container Engine. See `kubernetes/kubernetes.md` for more info.\n\nThe ok-server also supports deployments to Heroku or servers on any major hosting service.\n\nThere also exists a [one-click setup](./azure/paas/README.md) for ok-server on Azure.\n\nPython Style Guide\n-------------------\nRefer to [The Elements of Python Style](https://github.com/amontalenti/elements-of-python-style)\n\nSome useful things for developers to know:\n\n1. Testing with ok-client\n   - To test with ok-client, please follow the instructions for the ok-client repo [here](https://github.com/okpy/ok-client).\n   - Once you are inside the virtual environment for ok-client, you can make a new binary by using the command `ok-publish`.\n   - Start the local ok server.\n   - When running the ok binary, add the flags `--insecure --server localhost:\u003cport\u003e` to point it to the running ok-server\n   - To find demo assignments that you can use the binary with, look in [ok-client/demo](https://github.com/okpy/ok-client/tree/master/demo)\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fokpy%2Fok","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fokpy%2Fok","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fokpy%2Fok/lists"}