Skip to main content

Classroom management dashboard for JupyterHub

Project description

JupyterHub Classroom Manager

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.

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+

Installation

pip install -r requirements.txt
jupyterhub -f jupyterhub_config.py

JupyterHub Configuration

Add this to your jupyterhub_config.py:

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

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

# Pre-create the teachers group
c.JupyterHub.load_groups = {
    "teachers": [],
}

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.1.0.tar.gz (13.5 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.1.0-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: jupyter_classroom-1.1.0.tar.gz
  • Upload date:
  • Size: 13.5 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.1.0.tar.gz
Algorithm Hash digest
SHA256 00d76415f8fe3a5221d22a02283cd8145577b3e7407e8b7308dd4aef8e4e7b44
MD5 fdb570a1cc62e1222423ac34814a4c01
BLAKE2b-256 65053151924a648bbc4bedb2169a06b21e7745fdb4787d3a6789008c4e9f74c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for jupyter_classroom-1.1.0.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.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for jupyter_classroom-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 be54f12f359f662f1b88910168d82e5d1f4c8044b84be3cad145fe882101486e
MD5 690f77cd4e891c67ce19297674fae78c
BLAKE2b-256 a5b0972ce30b8df6bcd9b455be28bf74451f03d9e3e1e0485cd2da8b3a3d765f

See more details on using hashes here.

Provenance

The following attestation bundles were made for jupyter_classroom-1.1.0-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