Skip to main content

Classroom management dashboard for JupyterHub

Project description

JupyterHub Classroom Manager

PyPI Python Checks

Classroom Manager is a FastAPI web dashboard, built as a JupyterHub service for classroom management for teachers. It provides an intuitive dashboard for non-technical staff to manage a cohort ot students on Jupyter notebooks.

Classroom Manager allows staff to add students, manage their server statuses, and assign students to classrooms.

Classroom Manager Dashboard

Deployability

This doesn't need a database, so there's no extra infrastructure overhead - JupyterHub manages the deployment.

Authentication is managed by JupyterHub itself, so if you want to use something like Microsoft Azure authentication, or Google OAuth, configure this with JupyterHub as you'd usually do.

Requirements

  • JupyterHub 5.x+
  • Python 3.10+
  • jupyter-collaboration (for real-time collaboration features)

Installation

sudo /opt/tljh/hub/bin/pip install jupyter-classroom

For a full quick-start guide, see the documentation.

JupyterHub Configuration

Add this to your jupyterhub_config.py:

c.JupyterHub.services = [
    {
        "name": "classroom-manager",
        "url": "http://127.0.0.1:10101",
        "command": ["jupyter-classroom"],
        "oauth_client_allowed_scopes": ["identify"],
    },
]

c.JupyterHub.load_roles = [
    {
        "name": "classroom-manager-role",
        "services": ["classroom-manager"],
        "scopes": [
            "list:users",
            "read:users",
            "admin:users",
            "admin:servers",
            "admin:groups",
            "read:groups",
            "list:groups",
        ],
    },
    {
        "name": "user",
        "scopes": [
            "self",
            "access:services!service=classroom-manager",
        ],
    },
]

Real-Time Collaboration

Teachers can join any student's notebook session in real-time for live collaboration. This requires jupyter-collaboration installed in the singleuser environment:

sudo /opt/tljh/user/bin/pip install jupyter-collaboration

Then add this to your jupyterhub_config.py to enable collaborative mode on all servers:

c.Spawner.args = ["--LabApp.collaborative=True"]

Alternatively, to enable it selectively (e.g. only for specific groups), use a pre_spawn_hook:

def pre_spawn_hook(spawner):
    # Enable RTC for all users
    spawner.args.append("--LabApp.collaborative=True")

c.Spawner.pre_spawn_hook = pre_spawn_hook

With RTC enabled, teachers can click "Join" on any running student server in the Classroom Manager dashboard to open the student's JupyterLab and collaborate in real-time.

nbgitpuller

We use nbgitpuller on our instance to make it easier to pull from our Jupyter notebook Git source! It's a fantastic tool for one-click setup, through links configured on nbgitpuller's documentation.

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

jupyter_classroom-1.2.1.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

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

jupyter_classroom-1.2.1-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file jupyter_classroom-1.2.1.tar.gz.

File metadata

  • Download URL: jupyter_classroom-1.2.1.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jupyter_classroom-1.2.1.tar.gz
Algorithm Hash digest
SHA256 c87bf971765ca6a1fa5f1aff17f1abe1fc8d62fea6eb2c87c906b153ed573cd5
MD5 939d490df49bdac604969b8e9704c726
BLAKE2b-256 126bb05372b9789e3e26d43f4685dd09c191a870422e1af0539c9a16a022e8eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for jupyter_classroom-1.2.1.tar.gz:

Publisher: publish.yml on leowilkin/jupyter-classroom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jupyter_classroom-1.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for jupyter_classroom-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c90dba8a21fa74f71afba3f6e1baf326822de2915bedddb53a83768d86d8d15b
MD5 cfa77d9164ae34e67d0d18867b073ca2
BLAKE2b-256 1d63b5ed034a27775202b54aa97f3b13766dd0bb0b1b9127948c3e641da3b8f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for jupyter_classroom-1.2.1-py3-none-any.whl:

Publisher: publish.yml on leowilkin/jupyter-classroom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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