kubeflow / kubeflow/kale

feat: Built-in Kale example notebooks in the Launcher

Open
#607 2 comments 4 reactions 1 assignee Claimed by @ederign View on GitHub
2.x candidate area/backend area/frontend
Dominant language
Python
Stars
703
Forks
161
Avg merge
6d 3h
Merged PRs (30d)
10

Description

### Feature Area

### What feature would you like to see?

A **Sample Notebook Catalog** — a browsable card grid of curated Kale examples accessible directly from the JupyterLab Launcher. Users click a sample, it gets copied into their workspace, and the notebook opens ready to use.

The catalog is **filesystem-driven**, using **Jupyter's standard data directories** for discovery. No external services, registries, or CRDs are required.

#### User Experience

1. A **"Kale Examples"** tile appears in the **JupyterLab Launcher** (under the "Other" category), making samples discoverable from the home screen before users even open a notebook.

2. Clicking the launcher tile opens a **dialog with a card grid** showing all available samples. Each card displays:
- Title
- Description (2-line clamp)
- Difficulty badge (beginner = green, intermediate = orange, advanced = red) using JupyterLab CSS tokens for theme compatibility
- Tag chips (e.g. `ml`, `classification`, `genai`)

3. **Tag filter chips** at the top of the dialog let users filter by category. Clicking a tag shows only matching samples; clicking again (or "All") resets the filter. Filters reset when the dialog reopens.

4. Clicking a sample card **materializes** (copies) the sample into the user's workspace and opens the entrypoint notebook in JupyterLab.

5. If a sample was already loaded previously, a **conflict dialog** appears with three options:
- **Open Existing** — opens the previously copied notebook without re-copying
- **Recreate** — deletes the existing copy and creates a fresh one
- **Cancel**

6. **Error feedback** is shown inline in the dialog when catalog loading or sample materialization fails.

#### Future: Sidebar Link

Once [PR #596](https://github.com/kubeflow/kale/pull/596) (better empty state for Kale LeftPanel) is merged, a **"Kale Examples"** link should be added to the sidebar's empty/disabled states so users can discover samples without going through the Launcher.

#### Non-Goals

- Git-based templates
- Remote catalog resolvers
- Synchronization mechanisms

### What is the use case or pain point?

Kale has **no in-product onboarding**. New users who install Kale see an empty deployment panel and have no guidance on how to get started with Kubeflow pipelines. They must:

1. Search the Kale repository for example notebooks
2. Manually download or clone them
3. Figure out which notebook to start with
4. Place the notebook somewhere JupyterLab can access it

This creates friction for new users and makes it harder to demonstrate Kale's capabilities. A built-in sample catalog provides immediate discoverability and a one-click path from "just installed Kale" to "running my first pipeline."

For organizations deploying Kale on Kubeflow, the catalog also serves as a way to distribute team-specific pipeline templates to all notebook servers without requiring users to know where to find them.

### Is there a workaround currently?

Users must manually find, download, and place example notebooks from the [Kale repository's `examples/` directory](https://github.com/kubeflow-kale/kale/tree/master/examples) into their JupyterLab workspace. There is no in-product discovery mechanism.

---

Love this idea? Give it a 👍.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.