Migrate documentation from Jekyll to Astro Starlight#897
Draft
jordanrburger wants to merge 22 commits intomainfrom
Draft
Migrate documentation from Jekyll to Astro Starlight#897jordanrburger wants to merge 22 commits intomainfrom
jordanrburger wants to merge 22 commits intomainfrom
Conversation
Preparing for Jekyll-to-Astro migration: ignore worktree directory, Node.js dependencies, and Astro build output. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Set up the core Starlight project structure for migrating Keboola docs from Jekyll: package.json with Astro/Starlight dependencies, astro config with GTM tracking, Keboola brand CSS overrides, custom Head component for GTM noscript, content config, and TypeScript config. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Create scripts/convert-nav.mjs that parses _data/navigation.yml and produces src/sidebar.mjs with the full Starlight sidebar tree (~200 entries, up to 4 levels deep). Update astro.config.mjs to import and use the generated sidebar. Add gen:sidebar npm script for easy regeneration. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Transforms all markdown files from Jekyll format to Astro Starlight: - permalink → slug frontmatter conversion - Remove layout/showBreadcrumbs, convert sitemap→pagefind - Convert highlight blocks to fenced code blocks - Convert tip/warning/beta includes to Starlight admonitions - Remove TOC markers and Kramdown attribute lists - Copy images and special assets to correct locations Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace Docker-based Jekyll builds with Node.js 22 + npm ci + npm run build. Deploy step now uses pip-installed awscli directly and targets dist/ instead of _site/. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Create src/pages/404.astro with branded error page content and copy keboola-kolecko.png to public/ for the 404 page image. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix \r\n line ending bug in permalink→slug conversion that caused 34 files to retain their permalink: frontmatter. All Jekyll patterns (includes, TOC markers, highlight blocks, kramdown attrs, image-popup) are now fully transformed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ssues - Upgrade from Astro 5/Starlight 0.34 to Astro 6/Starlight 0.38 to resolve Zod v3/v4 schema validation conflict that caused build failures - Add docsLoader() to content config (required by Starlight 0.38) - Extend docs schema with redirect_from field for Jekyll redirect compatibility - Copy 4 missing .webp images that were skipped during migration - Add .webp to IMAGE_EXTS in migration script to prevent future omissions - Fix CSS @import ordering (must precede other statements) - Fix sidebar slug: components/data-apps/backend-versions -> data-apps/backend-versions - Remove src/pages/404.astro that conflicted with Starlight's built-in 404 route (404 content is served from src/content/docs/404.md instead) - Add .astro/ to .gitignore - Update starlight-image-zoom to v0.14 for Starlight 0.38 compatibility Build produces 264 pages successfully with Pagefind search index. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tter Create a custom Astro integration that reads redirect_from arrays from content frontmatter and generates static HTML redirect pages (using meta refresh) during the build. This ensures old URLs continue to work by redirecting visitors to the correct page. Generates 162 redirect pages across 152 content files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…aping
- Strip {% raw %}/{% endraw %} and convert {% comment %}/{% endcomment %}
to HTML comments in migration script (C1: 10 affected files)
- Add favicon: '/favicon.ico' to Starlight config to match public/ asset (C2)
- Replace pip install awscli + rm/cp with aws s3 sync --delete in CI (I2)
- Add escapeHtml() to redirect-from integration for safe URL interpolation (I4)
- Re-run migration to apply Liquid tag fixes to all content files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix light mode by scoping CSS color overrides to dark/light themes - Fix sidebar: rename parent page entries to "Overview", collapse all groups - Fix images: copy content images to public/ for absolute path serving - Remove duplicate ## Overview headings from 9 content pages - Add "Copy as Markdown" button to every page for AI agent workflows - Make GTM conditional on help.keboola.com hostname (no cookie modal on localhost) - Make logo visible in dark mode with CSS filter Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace Jekyll/Docker instructions with Node.js/Astro setup, document project structure, content authoring, build process, sidebar regeneration, and key features. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds <ClientRouter /> to the Head component for SPA-style page transitions instead of full page reloads on every navigation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ClientRouter view transitions caused visible flickering. Replaced with Astro's prefetch (hover strategy) which preloads pages in the background so they load near-instantly on click without any visual artifacts. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…w Transitions The render-blocking Google Fonts @import in CSS caused a flash on every page load. Self-hosting the Lato WOFF2 files eliminates the external request entirely. Re-enabling Astro ClientRouter (View Transitions) provides SPA-style navigation so pages swap without full reloads. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… fallback Three-part fix for page navigation flicker: 1. Inline anti-FOUC styles set correct background color immediately before any CSS loads, preventing white flash during theme initialization 2. Disable all View Transition crossfade animations via CSS for instant swap 3. Use "swap" fallback mode for non-VT browsers (instant DOM swap) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When navigating via View Transitions, the new page's sidebar would reset group expand states. This script preserves the user's sidebar state while ensuring the group containing the active page is always open. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Starlight renders group labels (items with children) as bold by default, creating visual inconsistency with leaf links at the same nesting level. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Top-level groups keep bold/large styling, but nested sub-groups now use the same font-size and weight as regular leaf links for consistency. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Starlight does not accept slug: "" for sidebar links. Changed to slug: "index" which correctly references the root docs page. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Contributor
Author
|
This is a draft of the docs migration. It SHOULD NOT be merged until further notice. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Migrates the entire Keboola documentation site from Jekyll (Ruby/Docker) to Astro Starlight (Node.js), a modern documentation framework.
_data/navigation.ymlredirect_fromfrontmatter for URL compatibilityhelp.keboola.com) with the same caching strategySteps to go live
npm ci && npm run buildon PRs to validate the buildredirect_fromfrontmatter mappingsAWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEY(same secrets as today). Verify these are still configured in the repo's GitHub Actions secretsmain— On merge, themain.ymlworkflow will:npm ci+npm run buildto produce a staticdist/folderaws s3 sync dist s3://help.keboola.com --delete --acl "public-read"to deployWhat changes in the deploy pipeline
jekyll build→_site/npm run build→dist/s3 rm --recursivethens3 cps3 sync --delete(atomic, safer)Test plan
npm run buildproduces a cleandist/outputredirect_fromfrontmatter entries)🤖 Generated with Claude Code