Package: voici
Voici is a tool for generating static dashboards from Jupyter Notebooks. It can be used as a drop-in replacement forVoilàand it has the same commands and supports most of Voila's configuration options.Unlike Voila, which renders interactive dashboards using server-side execution, Voici usesWebAssembly(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 theJupyterLite project.https://user-images.githubusercontent.com/591645/222892327-2a5b1341-640d-49c2-9e95-1f2d3ec122be.mp4Features 🚀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, andxeus kernelsPython packages provided by voici:Voici is split between two Python packages:Thevoici-corepackage provides the core functionalities of voici, mainly the voici CLI.Thevoicipackage is a meta-package that depends on bothvoici-coreandjupyterlite-xeus.jupyterlite-xeusallows you to pre-install packages for running your dashboard. For example, if your dashboard requires Matplotlib you can provide anenvironment.ymlfile in the folder where you run the voici command, containing the following:name: my-dashboard-env
channels:
  - https://repo.mamba.pm/emscripten-forge
  - conda-forge
dependencies:
  - xeus-python
  - matplotlibIt has been decided thatvoiciwould depend onjupyterlite-xeusfor convenience,allowing to easily switch from voila to voici without the need to update the Notebook code..Note that you can install multiple xeus kernels likexeus-python,xeus-luaorxeus-javascript.See the [jupyterlite-xeus documentation](https://jupyterlite-xeus.readthedocs.io/en/latest/) for more informationIf you would like to usehttps://github.com/jupyterlite/pyodide-kernelor another non-xeus kernel, you may want to depend onvoici-coreandjupyterlite-pyodide-kernelinstead.Getting Started 🏁To use Voici, you'll need to install it first:pipinstallvoici# OR BETTERcondainstall-cconda-forgevoici# OR EVEN FASTERmambainstall-cconda-forgevoiciThen, you can generate static dashboards from a notebook or a directory of Notebooks like this:# Build a single dashboardvoicimy-notebook.ipynb# Build a directory of notebooksvoicinotebooks/Once your dashboards are built, you can simply serve them with a simple static server,e.g.:cd_output
python-mhttp.serverAdvanced usageThevoicicommand line interface is a mix betweenvoilaandjupyter lite. For most cases, users can rely on thevoicicommand by using thevoilaCLI syntax.Voici runs thebuildsub-command by default, thevoici my-notebook.ipynbcommand is a shortcut forvoici build --contents my-notebook.ipynbFor advanced usage, users can invokevoiciwith thejupyter liteCLI syntax,e.g.:voicibuild--contentsmy-notebook.ipynbThe difference betweenvoici buildandjupyter lite buildcommands is that the voici one will only generate Voici dashboards, excluding the full JupyterLab interface from the output. Runningvoici build --contents .is equivalent to runningjupyter lite build --contents . --apps voici.You can generate the classicjupyter liteoutput alongside your dashboards by specifying the additional apps you want:voicibuild--contents.--appslab--appsretroIn order to get some help on how to use thevoicicommand, you can run:voici--helpWe'd also suggest looking into theJupyterLite documentationfor more insights on how to configure yourvoicideployment.Build the demo site yourselfYou will need eithermicromamba,mambaor conda installed in order to build the emscripten environment.Thedemo directorycontains:notebooks/: The directory of Notebooks that will be served by Voicienvironment.yml: The file specifying the Emscripten environment that will be used for rendering the dashboards, this must contain all your Notebook dependenciesRun the following command to build the demo site:gitclonehttps://github.com/voila-dashboards/voicicdvoici/demo

voicinotebooksThen serve it!cd_output
python-mhttp.serverMake your own Github pages deploymentPlease followthis guidefor 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 theGitHub repository. If you'd like to contribute code, please fork the repository and submit a pull request. We welcome contributions from anyone!