JupyterHub allows each user in a group to have their own Jupyter notebook server. It has three main parts: the hub, which manages authentication and spawns single-user notebook servers; a user database to store user information; and an authenticator to verify users' identities. When a user logs in, the hub's spawner creates a dedicated notebook server for that user. JupyterHub is useful for shared computing resources like classrooms, workshops, or research groups.