feat(products): aggregate Thrivestream docs from its own repo - #37
Merged
Conversation
The Herald product docs shipped with stray closing `</content>` tags (and a `</invoke>` in index.mdx) left over from generation, with no matching open tag. `fumadocs-mdx` tolerates them, but the vite build's MDX compiler rejects them, so `bun run build` failed on all five files. Strip the trailing tags so each page ends on real content and the site builds.
docs.omni.dev now mirrors a product's own docs at build time instead of redirecting to them. A manifest (scripts/productDocs.config.ts) lists which products to mirror; scripts/syncProductDocs.ts clones each at a pinned ref and copies its content into content/docs/products/<id>/, rewriting root-relative links to the mount path and injecting canonical, sourceUrl, and mirroredFrom frontmatter. The source of truth stays with each product, and the mirror is committed so a build without repo access ships the last good copy. Thrivestream is the first mirror, replacing its redirect stub. Mirrored pages point their canonical URL and "view source" link back to docs.thrivestream.live and its repo, and are excluded from this site's sitemap to avoid duplicate URLs. Also removes the "Hire Us" sidebar banner.
Document Fractal's S3-compatible object storage: creating buckets, private vs public buckets, the public media URL (<bucket>.media.omni.dev), connecting a bucket to a service via injected S3 credentials, serving public media, and plan limits. Adds the page to the Guides nav.
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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
docs.omni.dev now mirrors a product's own docs at build time instead of redirecting out to them. Thrivestream is the first product brought in; the mechanism generalizes to any product that keeps its own docs repo.
The source of truth stays with each product (docs live next to the code they document, so a product's feature PR updates its docs in the same change). This site aggregates them into one searchable portal.
Changes
scripts/productDocs.config.ts— manifest of products to mirror. Adding a product is one more row. Thrivestream is pinned to a specific ref ofcoopbri/thrivestream-docs.scripts/syncProductDocs.ts(bun run docs:sync, also wired intobuild) — clones each repo at its pinned ref intocontent/docs/products/<id>/. Rewrites upstream root-relative links to the mount path and injectscanonical/sourceUrl/mirroredFromfrontmatter. Idempotent (no build-time churn); the committed mirror is the last-good fallback if a fetch fails, mirroring the existinggenerateCatalogapproach.source.config.ts— frontmatter schema extended with optionalcanonical/mirroredFrom/sourceUrl.src/routes/$.tsx— mirrored pages emit their canonical URL and "view source" link pointing home (docs.thrivestream.live / its repo), not docs.omni.dev.src/routes/sitemap[.]xml.ts— mirrored pages (those carrying acanonical) are excluded to avoid duplicate URLs.products/thrivestream.mdxremoved; 13 mirrored pages added underproducts/thrivestream/.fix(herald)): the committed Herald docs carried stray trailing</content>/</invoke>tags that broke the vite MDX build (fumadocs-mdxtolerated them,vite builddid not). Stripped so the site builds.Testing
bun run buildpasses green.knip,tsc --noEmit, staged Biome) — no hook bypasses.Notes
refin the manifest, thenbun run docs:sync.