{"id":30629540,"url":"https://github.com/ray-project/enablement-content","last_synced_at":"2026-07-14T13:35:04.092Z","repository":{"id":301133846,"uuid":"1008246401","full_name":"ray-project/enablement-content","owner":"ray-project","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-17T07:16:45.000Z","size":8031,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-17T02:01:29.112Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ray-project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-25T08:50:43.000Z","updated_at":"2025-09-17T07:15:19.000Z","dependencies_parsed_at":"2025-07-29T08:19:34.621Z","dependency_job_id":null,"html_url":"https://github.com/ray-project/enablement-content","commit_stats":null,"previous_names":["maxpumperla/enablement-content","ray-project/enablement-content"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ray-project/enablement-content","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray-project%2Fenablement-content","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray-project%2Fenablement-content/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray-project%2Fenablement-content/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray-project%2Fenablement-content/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ray-project","download_url":"https://codeload.github.com/ray-project/enablement-content/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray-project%2Fenablement-content/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280857203,"owners_count":26403191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-24T02:00:06.418Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-30T20:24:11.265Z","updated_at":"2025-10-24T19:37:25.923Z","avatar_url":"https://github.com/ray-project.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ray Enablement Content: Jupyter Book Publishing\n\nThis project provides a robust workflow for publishing Jupyter notebooks as a clean, embeddable Jupyter Book website. It automatically splits large notebooks into smaller sections, generates a navigation index, and applies a minimalist, content-focused style suitable for embedding or sharing.\n\n## Features\n\n- **Automatic notebook splitting**: Each notebook is split into parts at every second-level markdown header (`##`).\n- **Navigation index**: An `index.md` is generated with links to all notebook parts, serving as the landing page.\n- **Minimalist UI**: All navigation, sidebars, footers, and theme switchers are hidden by default. Light mode is always enforced.\n- **No code execution**: Notebooks are never executed during build, and all outputs are cleared in the published site.\n- **Easy local preview**: Build and serve the book locally for testing.\n- **GitHub Pages deployment**: The book is automatically published to GitHub Pages.\n\n## Installation\n\n1. **Clone the repository**\n\n```bash\n# Clone your fork or the main repo\ngit clone https://github.com/maxpumperla/enablement-content.git\ncd enablement-content\n```\n\n2. **Set up a virtual environment (recommended)**\n\n```bash\npython3 -m venv venv\nsource venv/bin/activate\n```\n\n3. **Install dependencies**\n\n```bash\npip install -r requirements.txt\n# Or, if you want to build/serve locally:\npip install jupyter-book pyyaml\n```\n\n## Usage\n\n### 1. Split Notebooks and Generate Navigation\n\nRun the split script to:\n- Split all notebooks in `courses/` into parts (by `##` header)\n- Update `_toc.yml` and generate `index.md` with links to all parts\n\n```bash\npython split_notebooks.py\n```\n\n### 2. Build the Book\n\n```bash\njupyter-book build .\n```\n\n### 3. Serve Locally for Testing\n\n```bash\ncd _build/html\npython -m http.server 8000\n```\nThen open [http://localhost:8000/](http://localhost:8000/) in your browser.\n\n## Customization\n\n- **Styling**: Place custom CSS/JS in the `_static/` directory (e.g., `_static/custom_hide.css`, `_static/custom_light.js`). These files are automatically included in the built site.\n- **Light mode**: Enforced via custom JS in `_static/custom_light.js`.\n- **Navigation**: All navigation, sidebars, and footers are hidden via custom CSS.\n\n## Disabling Notebook Execution and Outputs\n\nNotebook execution is disabled and all outputs are cleared in the built site via `_config.yml`:\n\n```yaml\njupyter_execute_notebooks: \"off\"\nexecute:\n  execute_notebooks: \"off\"\n  remove_code_outputs: true\n```\n\n## Adding New Notebooks or Courses\n\n- Place new notebooks in a subdirectory of `courses/` (e.g., `courses/my-course/`).\n- Run `python split_notebooks.py` to split and index them.\n- Rebuild the book.\n\n## How Navigation Works\n\n- The `split_notebooks.py` script updates `_toc.yml` and generates `index.md`.\n- `index.md` is the landing page and contains links to all notebook parts.\n- All links are relative, so the site works both locally and on GitHub Pages.\n\n## Publishing\n\n- The book is automatically published to GitHub Pages at:\n  - `https://ray-project.github.io/enablement-content/`\n- Make sure GitHub Pages is enabled in your repo settings (source: `gh-pages` branch).\n\n## Example Workflow\n\n```bash\n# 1. Split and index notebooks\npython split_notebooks.py\n\n# 2. Build the book\njupyter-book build .\n\n# 3. Serve locally\ncd _build/html\npython -m http.server 8000\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fray-project%2Fenablement-content","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fray-project%2Fenablement-content","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fray-project%2Fenablement-content/lists"}