Project Structure


ngshare/ directory contains Tornado web server code for ngshare.

Python scripts is the Tornado web server code for ngshare. is a Python script for starting vngshare. See vngshare.

Unit tests defines unit tests for ngshare.

database/ defines unit tests for database structure. defines unit tests for database migration.


dump.html, home.html, and masonry.min.js are for the welcome page and database dump page.


favicon.ico, favicon.png, and favicon.svg are the icon for ngshare in different file formats.


The database structure is defined in database/. See Database Structure.


alembic/, alembic.ini, and are for database migration. See Migration with Alembic.

Version Number

ngshare/ defines the current version. It follows “Single-sourcing the package version”

Continuous Integration

.travis.yml configures continuous integration for unit test and coverage test.


docs/ directory contains source code for documentation. See Documentation.

Deployment is for installing and packaging this project.


testing/ contains setups used for testing ngshare, ngshare_exchange, nbgrader, and Z2JH.

testing/docker contains a Docker environment for initial testing. It is slightly out of date and still uses our fork of ngshare rather than ngshare_exchange.

testing/minikube contains a minikube environment. This is the main testing setup for local development, and it uses ngshare and ngshare_exchange on the local filesystem.

testing/install_jhmanaged contains a Docker environment that demonstrates how a regular user would install ngshare and ngshare_exchange.

testing/install_z2jh contains a minikube environment that demonstrates how a regular user would install ngshare and ngshare_exchange on a standard Kubernetes cluster.


The client side of ngshare is packaged into a separate repo.

ngshare_exchange/*.py implement a nbgrader pluggable exchange that uses ngshare to release, fetch, and submit assignments.

ngshare_exchange/ will be installed as the ngshare-course-management command. It is used for admins and instructors to manage course rosters.