Description
Graph Explorer documentation currently lives as plain Markdown files in the docs/ directory. These files are only viewable by browsing the repo on GitHub — there is no deployed documentation site with search, navigation, or a polished reading experience.
We want to migrate the documentation to Starlight (an Astro-based documentation framework) and deploy it to GitHub Pages at https://aws.github.io/graph-explorer/.
Problem Statement
Users and contributors must navigate raw Markdown files on GitHub to find documentation. There is no search, no sidebar navigation, no mobile-friendly layout, and no way to discover content without knowing the file structure. The reading experience is fragmented and does not match the quality of the product itself.
Solution
Build a Starlight-powered documentation site that:
- Provides full-text search, sidebar navigation, dark/light mode, and responsive design out of the box
- Deploys automatically to GitHub Pages on every push to
main
- Uses Tailwind CSS for any custom styling
- Lives in the monorepo as
packages/docs/ (package name: graph-explorer-docs)
- Migrates all 25 existing Markdown files from
docs/ with no content loss
User Stories
- As a user, I want to search the documentation by keyword, so that I can quickly find relevant information without browsing the file tree.
- As a user, I want sidebar navigation organized by topic, so that I can discover related pages and understand the documentation structure.
- As a user, I want to read documentation on mobile, so that I can reference guides while working in a different environment.
- As a user, I want dark and light mode, so that the docs match my system preference.
- As a contributor, I want to preview documentation changes locally with hot reload, so that I can iterate quickly on content.
- As a contributor, I want documentation to deploy automatically when my PR merges, so that I do not need to perform manual deployment steps.
- As a contributor, I want the docs project to follow the same monorepo conventions (pnpm, workspace packages), so that the workflow is familiar.
- As a user, I want the deployed site to be the canonical documentation URL referenced from the README, so that I always find the latest version.
- As a maintainer, I want the docs build to be excluded from the global
pnpm build and pnpm dev, so that it does not slow down application development.
- As a maintainer, I want dedicated
docs:dev and docs:build scripts at the root, so that working on docs is a single command.
- As a user, I want admonitions (tips, notes, cautions) to render with clear visual styling, so that important information stands out.
- As a user, I want the getting-started tutorial to be easy to find from the landing page, so that I can onboard quickly.
Implementation Decisions
- Scaffold via official template: Use
pnpm create astro --template starlight/tailwind to create the project in packages/docs/. This ensures we start from the official blessed configuration rather than hand-rolling files.
- Tailwind CSS: Included via the
starlight/tailwind template. Start with default Starlight theme; custom branding is deferred.
- Sidebar: Autogenerated from directory structure using Starlight's
autogenerate config. Page ordering controlled via sidebar.order frontmatter.
- Content structure: Maps existing
docs/ hierarchy into src/content/docs/ with directories: getting-started/, features/, guides/, references/. The standalone development.md and architecture.md move into references/.
- Admonition conversion: GitHub-flavored
> [!TIP] syntax converted to Starlight :::tip syntax (12 occurrences across 8 files).
- Assets: Images go to
src/assets/ (Astro-optimized). Shell scripts and JSON policy files go to public/ (served as static downloads).
- Deployment: GitHub Actions workflow deploys to GitHub Pages on push to
main with a path filter on packages/docs/**. Uses pnpm/action-setup, actions/setup-node, and actions/deploy-pages.
- Base path:
base: "/graph-explorer" in Astro config since the site is hosted at a subpath.
- Monorepo integration: Docs package excluded from global
build/dev scripts via --filter "!graph-explorer-docs". Dedicated docs:dev and docs:build added to root.
- Old docs cleanup:
docs/ directory replaced with a single README pointing to the deployed site. Root README links updated to deployed URLs.
- Root README and
images/: Left untouched — they serve the GitHub repo landing page independently.
- Versioning: Deferred. Can be added later via the
starlight-versions plugin.
Testing Decisions
This is a documentation infrastructure project with no application logic. Testing is limited to:
- Build verification: The site builds successfully (
pnpm docs:build exits 0)
- Link validation: Internal links resolve correctly (can be verified manually or with a link checker in CI later)
- Visual verification: Pages render correctly in the dev server during development
No unit tests are needed. The GitHub Actions workflow itself serves as the integration test — if the build fails, deployment is blocked.
Out of Scope
- Custom branding / color theme (deferred to follow-up)
- Versioned documentation (deferred;
starlight-versions plugin available when needed)
- Auto-generated API/TypeScript documentation from source code
- Migrating Changelog, ROADMAP, or CONTRIBUTING into the docs site
- Embedded live demos or interactive components
- Internationalization (i18n)
Further Notes
- The existing docs total ~25 Markdown files and ~50KB of prose — small enough for a one-shot migration.
- Starlight provides built-in Pagefind search with zero configuration.
- The
packages/* glob in pnpm-workspace.yaml already covers packages/docs/ — no workspace config change needed.
- GitHub Pages must be enabled in repo settings with source set to "GitHub Actions" before the first deploy will work.
High-Level Plan
- Scaffold Starlight project using official template
- Configure Astro (site, base path, sidebar, Tailwind)
- Migrate content (frontmatter, admonitions, assets, links)
- Integrate with monorepo (scripts, exclusions)
- Add GitHub Actions deployment workflow
- Clean up old
docs/ and update README links
Description
Graph Explorer documentation currently lives as plain Markdown files in the
docs/directory. These files are only viewable by browsing the repo on GitHub — there is no deployed documentation site with search, navigation, or a polished reading experience.We want to migrate the documentation to Starlight (an Astro-based documentation framework) and deploy it to GitHub Pages at
https://aws.github.io/graph-explorer/.Problem Statement
Users and contributors must navigate raw Markdown files on GitHub to find documentation. There is no search, no sidebar navigation, no mobile-friendly layout, and no way to discover content without knowing the file structure. The reading experience is fragmented and does not match the quality of the product itself.
Solution
Build a Starlight-powered documentation site that:
mainpackages/docs/(package name:graph-explorer-docs)docs/with no content lossUser Stories
pnpm buildandpnpm dev, so that it does not slow down application development.docs:devanddocs:buildscripts at the root, so that working on docs is a single command.Implementation Decisions
pnpm create astro --template starlight/tailwindto create the project inpackages/docs/. This ensures we start from the official blessed configuration rather than hand-rolling files.starlight/tailwindtemplate. Start with default Starlight theme; custom branding is deferred.autogenerateconfig. Page ordering controlled viasidebar.orderfrontmatter.docs/hierarchy intosrc/content/docs/with directories:getting-started/,features/,guides/,references/. The standalonedevelopment.mdandarchitecture.mdmove intoreferences/.> [!TIP]syntax converted to Starlight:::tipsyntax (12 occurrences across 8 files).src/assets/(Astro-optimized). Shell scripts and JSON policy files go topublic/(served as static downloads).mainwith a path filter onpackages/docs/**. Usespnpm/action-setup,actions/setup-node, andactions/deploy-pages.base: "/graph-explorer"in Astro config since the site is hosted at a subpath.build/devscripts via--filter "!graph-explorer-docs". Dedicateddocs:devanddocs:buildadded to root.docs/directory replaced with a single README pointing to the deployed site. Root README links updated to deployed URLs.images/: Left untouched — they serve the GitHub repo landing page independently.starlight-versionsplugin.Testing Decisions
This is a documentation infrastructure project with no application logic. Testing is limited to:
pnpm docs:buildexits 0)No unit tests are needed. The GitHub Actions workflow itself serves as the integration test — if the build fails, deployment is blocked.
Out of Scope
starlight-versionsplugin available when needed)Further Notes
packages/*glob inpnpm-workspace.yamlalready coverspackages/docs/— no workspace config change needed.High-Level Plan
docs/and update README links