A web frontend for scheduling Jupyter Notebooks as reports
Paperboy is a production-grade application for scheduling reports. It has a flexible architecture and extensible APIs, and can integrate into a wide variety of deployments. It is composed of various industrial-strength technologies from the open source world.
- Jupyter Notebooks for the reports themselves
- Jupyter notebooks are an ideal report template, and with NBConvert support a wide variety of output types, including PDFs, HTML, Emails, etc
- Papermill to parameterize notebooks
- SQLAlchemy for Storage (default)
- Apache Airflow for Scheduling (default)
- Dask for Airflow Workers
- Luigi as a scheduling alternative for
Airflow
(relies oncron
)
- PhosphorJS for the frontend
- Support for Python Virtualenvs via
requirements.txt
or custom Docker images viaDockerfile
s on a per-notebook level - Traitlets parameterization of storage and scheduler classes for easy integration with custom storage backends and custom schedulers
- Single click notebook deployment with Voila and Dokku
- Upload notebook
- Configure job
- start time
- interval
- papermill parameters to autoconfigure reports
- if autoconfiguring reports from papermill:
- run or publish
- output
- notebook
- html
- script
- strip or keep code
- To edit or create additional reports on a job, configure reports
- run or publish
- output
- notebook
- html
- script
- strip or keep code
Paperboy requires Python and Node.js, which can be installed from conda-forge
if conda
is available.
Clone the repository and run following commands to install and launch the application:
- npm install
- npm run build
- pip install -e .
- python -m paperboy
Visit http://0.0.0.0:8080 in a browser to view the application.
The default authentication backend requires the registration of a username that can be used on subsequent launches.