Skip to content

JupyterEverywhere/jupyterlite-extension

Repository files navigation

Jupyter Everywhere Logo

Jupyter Everywhere

A JupyterLite extension for K-12 education

Jupyter Everywhere is a notebooks-based application for K-12 education, designed to provide a simplified and user-friendly interface for students and educators. The platform runs entirely in web browsers without requiring any installation, making computational education accessible to students and teachers across all devices and operating systems.

This repository hosts the source code for the JupyterLite extension that powers Jupyter Everywhere.

Build Status License Try Jupyter Everywhere


Key features

  • In-browser computing: runs entirely in web browsers using WebAssembly; no installation required on any device or operating system

  • Multi-language support: built-in Python (via Pyodide) and R (via xeus-r) kernel support

  • Multi-device access: access, create copies of, and edit notebooks from any device right in your web browser (all major browsers are supported)

  • K12-focused design: educational terminology and simplified interface for newcomers to programming and notebooks with a classroom-friendly, accessible design

  • Single-document interface: simplified workspace focused on one notebook at a time, reducing distractions and complexity offered by traditional Jupyter

  • Instant sharing: one-click notebook sharing with permanent links, eliminating the need for user accounts

  • View-only sharing: share read-only notebooks, that can be copied for editing

  • Flexible export options: download notebooks as .ipynb files or as PDF documents

  • Auto-save functionality: automatic cloud synchronisation with manual save reminders

  • Data files: need to work with files in your notebooks? Upload and download data files within the application via a simple grid view

  • Pre-installed packages: popular data science and visualisation libraries such as numpy, pandas, matplotlib, and seaborn, and R packages like ggplot2 and dplyr are ready to use

Requirements

This extension requires jupyterlab==4.5.0a3, and additional dependencies listed in lite/requirements.txt.

Getting started

For end users

No installation is required! Simply visit https://jupytereverywhere.org to start using Jupyter Everywhere directly in your web browser.

For developers

To install the extension for development purposes, please follow the steps outlined in the "Development install" section below.

Contributing

If you'd like to contribute to Jupyter Everywhere (thanks!), please read the following instructions to set up your development environment.

Development install

Note: You will need Node.js to build the extension package.

The jlpm command is provided by JupyterLab's pinned version of yarn that is installed with JupyterLab.

# Clone the repo to your local environment
# Change directory to the jupytereverywhere directory
# Install package in development mode
pip install -e "."
# Link your development version of the extension with JupyterLab
jupyter labextension develop . --overwrite
# Rebuild the extension TypeScript source after making changes
jlpm build

You can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension.

# Watch the source directory in one terminal, automatically rebuilding when needed
jlpm watch
# Run JupyterLab in another terminal
jupyter lab

With the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt).

By default, the jlpm build command generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command:

jupyter lab build --minimize=False

To build the JupyterLite application after the extension has been installed into the environment, you can run the following commands from the root of this repository:

pip install -r lite/requirements.txt
jlpm build:all

which will install the necessary dependencies, install the extension into JupyterLite, and build the JupyterLite static assets. You can then serve the built JupyterLite application locally with a simple HTTP server, for example:

python -m http.server --directory dist 3000

Linting

To ensure that the code follows the standard style and does not contain basic issues, run:

jlpm lint

You can have it run on relevant files automatically before each git commit, by installing pre-commit, which will use the configuration provided in the .pre-commit-config.yaml file and install the necessary hooks:

pip install pre-commit
pre-commit install

Development uninstall

pip uninstall jupytereverywhere

In development mode, you will also need to remove the symlink created by jupyter labextension develop command. To find its location, you can run jupyter labextension list to figure out where the labextensions folder is located. You can then remove the symlink named jupytereverywhere within that folder.

Testing the extension

This extension uses Playwright for the integration (snapshot) tests.

More information is provided within the the ui-tests/README.md document.

Releases

See RELEASE.md for instructions on creating a new release of the extension and the bundled JupyterLite application.

Acknowledgments

Jupyter Everywhere is built on the powerful foundation of the Jupyter ecosystem: particularly, JupyterLite and JupyterLab. Additionally, it is powered by the Pyodide and the Xeus projects, their intersections with the Jupyter ecosystem, and the broader scientific Python community. We are grateful to the maintainers, core developers, and contributors of these projects who make educational computing accessible to everyone.

Jupyter Everywhere (JE) is a collaborative project between Skew The Script and CourseKata, launched in 2024 with support from the Gates Foundation. Our initiative focuses on bringing data science tools and resources into classrooms by providing access to high-quality tools. Our goal is to empower teachers and students to explore data science and statistics easily, fostering deeper engagement and understanding in these essential fields.

About

The JupyterLite extension for Jupyter Everywhere

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 9

Languages