feat(web): serve top-level docs publicly at /docs (BUNYIP-385) #379
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/BUNYIP-385-docs-route"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds a public /docs to bunyip-web (BUNYIP-385): an index at
/docsand a per-doc page at/docs/{slug}that renders markdown to HTML. Temporary home for the docs until the dedicated docs app matures.Decisions (from standup)
docs/*.mdonly;docs/dev-docs/internal notes excluded./pricing).How
bunyip-web/src/docs/*.md- crate-local copies of the top-leveldocs/*.md(canonical source stays the repodocs/; re-sync on change). Crate-local sidesteps the.dockerignoreexclusion of the repo-rootdocs/and keeps the OCI build context-independent.pulldown-cmark+ a small scoped CSS block (bunyip-web has no Tailwind typography plugin).Docs subdomain
The issue assumes the docs subdomain already terminates at Bunyip, so there's no app-side subdomain logic -
/docsis served on any domain routed to bunyip-web. If a dedicateddocs.<tld>Traefik router is wanted, it belongs in the docker repo (not added here); worth confirming it exists to satisfy the "reachable on the docs subdomain" AC.Migration
When the dedicated docs app lands, repoint
/docs(or 301) and delete this module + the embedded copies.Verified
fmt + clippy
-D warnings+ build + newdocs_tests(registry soundness + markdown render) green in the pinned rust-builder.#BUNYIP-385
Adds a public /docs to bunyip-web: an index (/docs) of the top-level repo docs plus a per-doc page (/docs/{slug}) that renders the markdown to HTML. This is the temporary home decided at standup, until the dedicated docs app matures. Scope is the top-level docs/*.md only; the docs/dev-docs/ internal notes are excluded. The markdown is embedded from bunyip-web/src/docs/*.md, which are crate-local COPIES of the top-level docs/*.md (canonical source is the repo docs/; re-sync the copies when those change). Embedding crate-local sidesteps the .dockerignore exclusion of the repo-root docs/ and keeps the build context-independent. Rendered with pulldown-cmark plus a small scoped CSS block, since bunyip-web has no Tailwind typography plugin. Public (unauthenticated, like /pricing and /our-story) per the chosen access level. Docs-subdomain note: the issue assumes the docs subdomain already terminates at Bunyip, so no app-side subdomain logic is needed; /docs is served on any domain routed to bunyip-web. A dedicated docs.<tld> Traefik router, if wanted, belongs in the docker repo (not added here). Migration path: when the dedicated docs app lands, repoint /docs (or 301) and delete this module plus the embedded copies. Verified green (fmt + clippy -D warnings + build + the new docs_tests covering registry soundness and markdown rendering) in the pinned rust-builder. #BUNYIP-385 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>The docs page route was written with axum 0.8 brace syntax (/docs/{slug}); bunyip-web is on axum 0.7, where that is a literal path segment and the Path<String> extractor fails at runtime. Switch to the colon form (/docs/:slug) that every other route here uses. Caught before merge - the build compiled either way since the path is just a string. #BUNYIP-385 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>