Skip to content

docs: publish a documentation site on GitHub Pages - #812

Merged
behinddwalls merged 1 commit into
mainfrom
preetam/github-pages
Oct 8, 2026
Merged

behinddwalls merged 1 commit into
mainfrom
preetam/github-pages

Conversation

@behinddwalls

@behinddwalls behinddwalls commented Oct 8, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Why?

SubmitQueue's docs exist only as Markdown in the repo. A public site with a landing page, navigation and search (like cadenceworkflow.io) makes the project easier to discover and the RFCs easier to browse.

What?

  • tool/docsite/: MkDocs Material config that renders doc/ in place, so docs are not copied and the nav picks up new RFCs automatically.
  • Bazelified: MkDocs runs on a hermetic Python 3.13 toolchain with hash-locked deps (pip.parse hub docsite_pip; the default Python toolchain is unchanged). //tool/docsite:site_test runs the strict build, so make test and the required CI test job fail on broken links between docs.
  • hooks/repo_links.py points links that leave doc/ (code, package READMEs, AGENTS.md) at GitHub, so --strict stays on and still fails on broken links between pages.
  • hooks/nav_titles.py titles the sections Guides and Design (RFCs) and puts Quickstart first.
  • doc/index.md + overrides/home.html: landing page with a hero, feature cards and a quickstart snippet; green brand theme with light and dark modes.
  • .github/workflows/docs.yml: builds the site on PRs that touch doc/** or tool/docsite/**, and deploys to https://uber.github.io/submitqueue/ from main. It is not a required check.
  • make docs-serve / make docs-build run MkDocs through Bazel; docs-serve binds a free localhost port, like the local service containers (DOCS_PORT= pins one); bazel run //tool/docsite:requirements.update regenerates the lock.

Pages is already enabled on the repo (source: GitHub Actions, deploys restricted to main), so merging publishes the site.

Screenshots

docsite-home-dark docsite-home-light docsite-rfc-dark

Test Plan

✅ make docs-build (strict) and make docs-serve work through Bazel
✅ make test: 133 tests pass, including //tool/docsite:site_test; a deliberately broken link makes it fail
✅ make check-tidy, make gazelle and make fmt leave the tree unchanged; zizmor 1.25.2 and actionlint clean on docs.yml
✅ Local preview: checked landing page, tabs, sidebar order, links into code, light and dark modes, and an 845px-wide window

🤖 Generated with Claude Code

@behinddwalls
behinddwalls marked this pull request as ready for review October 8, 2026 01:17
@behinddwalls
behinddwalls requested review from a team and sbalabanov as code owners October 8, 2026 01:17
## Summary

### Why?

SubmitQueue's docs exist only as Markdown in the repo. A public site with a landing page, navigation and search (like cadenceworkflow.io) makes the project easier to discover and the RFCs easier to browse.

### What?

- `tool/docsite/`: MkDocs Material config that renders `doc/` in place, so docs are not copied and the nav picks up new RFCs automatically.
- Bazelified: MkDocs runs on a hermetic Python 3.13 toolchain with hash-locked deps (`pip.parse` hub `docsite_pip`; the default Python toolchain is unchanged). `//tool/docsite:site_test` runs the strict build, so `make test` and the required CI test job fail on broken links between docs.
- `hooks/repo_links.py` points links that leave `doc/` (code, package READMEs, `AGENTS.md`) at GitHub, so `--strict` stays on and still fails on broken links between pages.
- `hooks/nav_titles.py` titles the sections Guides and Design (RFCs) and puts Quickstart first.
- `doc/index.md` + `overrides/home.html`: landing page with a hero, feature cards and a quickstart snippet; green brand theme with light and dark modes.
- `.github/workflows/docs.yml`: builds the site on PRs that touch `doc/**` or `tool/docsite/**`, and deploys to https://uber.github.io/submitqueue/ from `main`. It is not a required check.
- `make docs-serve` / `make docs-build` run MkDocs through Bazel; `docs-serve` binds a free localhost port, like the local service containers (`DOCS_PORT=` pins one); `bazel run //tool/docsite:requirements.update` regenerates the lock.

Pages is already enabled on the repo (source: GitHub Actions, deploys restricted to `main`), so merging publishes the site.

## Test Plan

✅ `make docs-build` (strict) and `make docs-serve` work through Bazel
✅ `make test`: 133 tests pass, including `//tool/docsite:site_test`; a deliberately broken link makes it fail
✅ `make check-tidy`, `make gazelle` and `make fmt` leave the tree unchanged; zizmor 1.25.2 and actionlint clean on `docs.yml`
✅ Local preview: checked landing page, tabs, sidebar order, links into code, light and dark modes, and an 845px-wide window
@behinddwalls
behinddwalls merged commit f56154f into main Oct 8, 2026
18 checks passed
@behinddwalls
behinddwalls deleted the preetam/github-pages branch October 8, 2026 02:22
behinddwalls added a commit that referenced this pull request Oct 8, 2026
## Summary

### Why?

The documentation site is live at https://uber.github.io/submitqueue/
(#812), but the README links to it only through a badge.

### What?

- Add a **Documentation** link under the intro paragraphs.
- Open the Documentation section with a sentence pointing at the site;
the table of in-repo documents stays.


🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants