mirror of
https://github.com/stellarshenson/stellars-jupyterhub-ds.git
synced 2026-03-09 14:40:28 +00:00
docs: add features section and screenshots to README v3.0.14
Documentation enhancements: - Add comprehensive Features section highlighting key capabilities - Document GPU auto-detection, user self-service, isolated environments - Include production-ready features (Traefik, TLS, Watchtower) - Add Self-Service Volume Management subsection with visual examples - Include three screenshots demonstrating UI features: - Restart Server button (active state) - Manage Volumes button (stopped state) - Volume selection modal (checkbox interface) - Position screenshots prominently after feature list - Provide one-sentence descriptions for each screenshot Technical updates: - Increase Stop Server refresh delay to 3 seconds for stability - Update version to 3.0.14 Screenshots stored in .resources/ directory for future reference
This commit is contained in:
@@ -21,3 +21,6 @@ This journal tracks substantive work on documents, diagrams, and documentation c
|
||||
|
||||
6. **Task - Enhance and fix self-service features**: Evolved volume management from single home volume to multi-volume selection, fixed Bootstrap 5 compatibility, added visual enhancements<br>
|
||||
**Result**: Transformed ResetHomeVolumeHandler into ManageVolumesHandler supporting selective reset of home/workspace/cache volumes via checkboxes in UI, fixed template inheritance to properly extend JupyterHub's default home.html (resolving 404 errors), updated to Bootstrap 5 modal API (data-bs-toggle, data-bs-target, btn-close), wrapped JavaScript in RequireJS callback for proper module loading, added Font Awesome icons (fa-rotate for restart, fa-database for volumes), implemented automatic page refresh after Stop Server/Manage Volumes/Restart Server actions, updated API endpoint to `/api/users/{username}/manage-volumes` accepting JSON body with volume array, backend now processes multiple volumes and returns detailed success/failure response, bumped version to 3.0.12 reflecting major feature enhancement
|
||||
|
||||
7. **Task - Document self-service features in README**: Updated README with features section and screenshots demonstrating new self-service capabilities<br>
|
||||
**Result**: Added comprehensive Features section with bullet points covering GPU auto-detection, user self-service, isolated environments, native authentication, shared storage, and production-ready setup, created Self-Service Volume Management subsection with three screenshots (restart server button, manage volumes button, volume selection modal) and one-sentence descriptions for each, positioned visual documentation prominently after feature list to demonstrate user-facing functionality
|
||||
|
||||
BIN
.resources/screenshot-restart-server.png
Executable file
BIN
.resources/screenshot-restart-server.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
BIN
.resources/screenshot-volumes-modal.png
Executable file
BIN
.resources/screenshot-volumes-modal.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 92 KiB |
BIN
.resources/screenshot-volumes.png
Executable file
BIN
.resources/screenshot-volumes.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
22
README.md
22
README.md
@@ -11,6 +11,28 @@ By default system is capable of **automatically detecting** NVIDIA CUDA-supporte
|
||||
|
||||
This deployment provides access to a centralized JupyterHub instance for managing user sessions. Optional integrations such as TensorBoard, MLFlow, or Optuna can be added manually via service extensions.
|
||||
|
||||
## Features
|
||||
|
||||
- **GPU Auto-Detection**: Automatic NVIDIA CUDA GPU detection and configuration for spawned user containers
|
||||
- **User Self-Service**: Users can restart their JupyterLab containers and selectively reset persistent volumes (home/workspace/cache) without admin intervention
|
||||
- **Isolated Environments**: Each user gets dedicated JupyterLab container with persistent volumes via DockerSpawner
|
||||
- **Native Authentication**: Built-in user management with NativeAuthenticator supporting self-registration and admin approval
|
||||
- **Shared Storage**: Optional CIFS/NAS mount support for shared datasets across all users
|
||||
- **Production Ready**: Traefik reverse proxy with TLS termination, automatic container updates via Watchtower
|
||||
|
||||
### Self-Service Volume Management
|
||||
|
||||
Users can restart their server or selectively reset volumes when the server is stopped:
|
||||
|
||||

|
||||
*Restart running JupyterLab container directly from the user control panel*
|
||||
|
||||

|
||||
*Access volume management when server is stopped*
|
||||
|
||||

|
||||
*Select individual volumes to reset - home directory, workspace files, or cache data*
|
||||
|
||||
## References
|
||||
|
||||
This project spawns user environments using docker image: `stellars/stellars-jupyterlab-ds`
|
||||
|
||||
@@ -3,7 +3,7 @@ PROJECT_NAME="stellars-jupyterhub-ds"
|
||||
PROJECT_DESCRIPTION="Multi-user JupyterHub 4 deployment platform with data science stack, GPU auto-detection, NativeAuthenticator, and isolated per-user environments spawned via DockerSpawner"
|
||||
|
||||
# Version
|
||||
VERSION="3.0.12_cuda-12.9.1_jh-5.4.2"
|
||||
VERSION="3.0.14_cuda-12.9.1_jh-5.4.2"
|
||||
VERSION_COMMENT="Multi-user JupyterHub with GPU auto-detection, self-service volume management (home/workspace/cache), and container restart capabilities"
|
||||
|
||||
# Author
|
||||
|
||||
@@ -379,11 +379,12 @@
|
||||
// Monitor for when button changes state (becomes start button)
|
||||
const checkInterval = setInterval(function() {
|
||||
if ($('#stop').length === 0 && $('#start').length > 0) {
|
||||
console.log('[Stop Server] Server stopped, refreshing page...');
|
||||
console.log('[Stop Server] Server stopped, waiting before refresh...');
|
||||
clearInterval(checkInterval);
|
||||
setTimeout(function() {
|
||||
console.log('[Stop Server] Refreshing page now');
|
||||
location.reload();
|
||||
}, 1000);
|
||||
}, 3000); // Wait 3 seconds after stop completes before refreshing
|
||||
}
|
||||
}, 500);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user