Skip to main content

Voici turns Jupyter notebooks into static web applications

Project description

Voici

🚧 WARNING: Voici is still a work in progress and should not be used for production workloads. 🚧

Voici is a tool for generating static dashboards from Jupyter Notebooks. Unlike Voilà, which renders interactive dashboards using server-side execution, Voici uses WebAssembly (Wasm) kernels to render notebooks in the browser, making the resulting dashboard entirely self-contained and distributable.

This is made possible thanks to the amazing work done in the JupyterLite project.

https://user-images.githubusercontent.com/591645/222892327-2a5b1341-640d-49c2-9e95-1f2d3ec122be.mp4

Features 🚀

  • Generates self-contained HTML files with embedded Wasm kernels.
  • Works offline, without requiring a server to run the dashboard.
  • Supports custom templates for styling dashboards, powered by Jinja2.
  • Supports all programming languages that have JupyterLite kernels available. e.g. the default JavaScript and Python kernels JupyterLite provides, python with xeus-python, lua, nelson

Getting Started 🏁

To use Voici, you'll need to install it first:

pip install voici

Then, you can generate static dashboards from a directory of Notebooks like this:

voici build --contents notebooks/

Once your dashboards built, you can simply serve them with a simple static server, e.g.:

cd _output
python -m http.server

The voici command line interface is the same as the jupyter lite one. The only difference is that the voici build command will only generate Voici dashboards, excluding the full JupyterLab interface from the output. Running voici build . is equivalent to running jupyter lite build . --apps voici You can generate the classic jupyter lite output alongside your dashboards by specifying the additional apps you want:

voici build --apps lab --apps retro

In order to get some help on how to use the voici command, you can run:

voici --help

We'd also suggest looking into the JupyterLite documentation for more insights on how to configure your voici deployment.

Build the demo site yourself

Before you can build the demo site from this repository, you will need to install jupyterlite-xeus-python:

pip install jupyterlite-xeus-python

You will also need either micromamba, mamba or conda installed in order to build the emscripten environment.

The demo directory contains:

  • notebooks/: The directory of Notebooks that will be served by Voici
  • environment.yml: The file specifying the Emscripten environment that will be used for rendering the dashboards, this must contain all your Notebook dependencies
  • jupyter-lite.json: The JupyterLite config file, this config will disable the default Python kernel JupyterLite provides, allowing to use xeus-python instead.

Run the following command to build the demo site:

git clone https://github.com/voila-dashboards/voici
cd voici/demo

voici build --contents notebooks

Then serve it!

cd _output
python -m http.server

Make your own Github pages deployment

Please follow this guide for making your own Github pages deployment.

Limitations ⚠️

Because Voici uses Wasm kernels to execute notebooks, there are some limitations to the types of notebooks that can be rendered: Some notebook features may not work correctly or may have limited functionality when rendered in Voici.

Contributing 👋

If you find a bug or have a feature request, please open an issue on the GitHub repository. If you'd like to contribute code, please fork the repository and submit a pull request. We welcome contributions from anyone!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

voici-0.3.2.tar.gz (2.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

voici-0.3.2-py3-none-any.whl (1.6 MB view details)

Uploaded Python 3

File details

Details for the file voici-0.3.2.tar.gz.

File metadata

  • Download URL: voici-0.3.2.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for voici-0.3.2.tar.gz
Algorithm Hash digest
SHA256 892da6252fc5a772f8480fdc05eba9e47190b1c8db3a34f2804e13bd59aa20d6
MD5 73ede72edb1fdc1cd81fbc481ded3a8b
BLAKE2b-256 8d671a5ccaf9b9ccd9c93141fe69a5a622adc1dbc0a4a5809b5674322e9c70ce

See more details on using hashes here.

File details

Details for the file voici-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: voici-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for voici-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 aab568edbae0512c4ae7ea896b432cde4c1bb75f54bb4e344625e3285314e95e
MD5 5685fae98facbd7aef027038ef99ea26
BLAKE2b-256 caedb2cd18f85073b5b0479a0f3497c3664408a8be5134833f40bcd4428ec76f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page