Restructure landing into a turborepo (@btravstack/theme + VitePress website)#1
Merged
Conversation
…ebsite Replace the static index.html landing with a pnpm + turbo + changesets monorepo so every btravstack site shares one theme: - packages/theme @btravstack/theme — VitePress theme wrapping DefaultTheme with the design tokens (beetroot brand, Montserrat/JetBrains Mono, light/dark surfaces, incl. the raised-specificity dark-mode fix). Built with tsdown, published to npm via changesets + OIDC Trusted Publishing. - apps/website VitePress home-layout landing (hero + 3 package cards) consuming @btravstack/theme via workspace:*, deployed to GitHub Pages. CI: .github/workflows/release.yml (publish theme) and deploy-website.yml (build + deploy site, base /). Verified: frozen install + turbo build of both packages, and the site renders with brand #E0589A/dark and #8E1A52/light, Montserrat, no console errors. Removes the old static index.html, assets/ and theme/ (the @v1.0.0 tag still serves the docs sites until they migrate to @btravstack/theme). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Restructures the repo from a single static index.html landing page into a pnpm + Turborepo monorepo that contains a publishable shared VitePress theme (@btravstack/theme) and a VitePress-based website app deployed to GitHub Pages.
Changes:
- Introduces Turborepo + pnpm workspace setup (root
package.json,pnpm-workspace.yaml,turbo.json, lockfile). - Adds
packages/themeas a buildable/publishable VitePress theme package (tokens/fonts/styles + tsdown build). - Adds
apps/websiteVitePress home-layout landing site and GitHub Actions workflows for theme release + Pages deploy.
Reviewed changes
Copilot reviewed 20 out of 37 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| turbo.json | Defines turbo task pipeline for build/dev/preview across apps/packages. |
| theme/theme.css | Removes legacy static-site CSS entrypoint (migrated to package). |
| theme/README.md | Removes legacy design-system docs (replaced by monorepo structure/docs). |
| theme/preview.html | Removes legacy token preview HTML (theme now packaged). |
| README.md | Adds monorepo-level documentation and dev/release instructions. |
| pnpm-workspace.yaml | Defines workspace packages and dependency catalogs. |
| pnpm-lock.yaml | Adds frozen dependency lock for the monorepo. |
| packages/theme/tsdown.config.ts | Adds tsdown build configuration for the theme package. |
| packages/theme/tsconfig.json | Adds strict TS config for the theme package. |
| packages/theme/src/tokens.css | Adds design tokens as the single source of truth. |
| packages/theme/src/style.css | Maps tokens onto VitePress theme variables + imports fonts/tokens. |
| packages/theme/src/index.ts | Exports a VitePress theme extending DefaultTheme and pulls in CSS. |
| packages/theme/src/fonts.css | Adds Google Fonts import for Montserrat + JetBrains Mono. |
| packages/theme/package.json | Defines publishable @btravstack/theme package metadata/exports/scripts. |
| package.json | Adds root scripts/engines/packageManager for pnpm+turbo+changesets. |
| index.html | Removes the legacy static landing page HTML. |
| apps/website/public/logos/unthrown-light.svg | Adds website assets for light-mode package icon. |
| apps/website/public/logos/unthrown-dark.svg | Adds website assets for dark-mode package icon. |
| apps/website/public/logos/temporal-contract-light.svg | Adds website assets for light-mode package icon. |
| apps/website/public/logos/temporal-contract-dark.svg | Adds website assets for dark-mode package icon. |
| apps/website/public/logos/btravstack-light.svg | Adds website assets for light-mode brand mark. |
| apps/website/public/logos/btravstack-dark.svg | Adds website assets for dark-mode brand mark. |
| apps/website/public/logos/amqp-contract-light.svg | Adds website assets for light-mode package icon. |
| apps/website/public/logos/amqp-contract-dark.svg | Adds website assets for dark-mode package icon. |
| apps/website/public/favicon.svg | Adds SVG favicon for the website app. |
| apps/website/public/apple-touch-icon.png | Adds Apple touch icon for the website app. |
| apps/website/package.json | Defines the VitePress website app and its workspace dependency on the theme. |
| apps/website/index.md | Implements the landing page using VitePress home layout frontmatter. |
| apps/website/.vitepress/theme/index.ts | Wires the website to consume @btravstack/theme. |
| apps/website/.vitepress/config.ts | Adds VitePress site config, head metadata, nav/footer/search. |
| .nojekyll | Ensures Pages doesn’t apply Jekyll processing to the output. |
| .gitignore | Adds monorepo-appropriate ignores for node/build outputs. |
| .github/workflows/release.yml | Adds changesets-based npm publish workflow for @btravstack/theme. |
| .github/workflows/deploy-website.yml | Adds GitHub Pages build/deploy workflow for apps/website. |
| .changeset/config.json | Adds changesets configuration and ignores the website package. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+9
to
+14
| paths: | ||
| - "apps/website/**" | ||
| - "packages/theme/**" | ||
| - "pnpm-lock.yaml" | ||
| - "pnpm-workspace.yaml" | ||
| - ".github/workflows/deploy-website.yml" |
Comment on lines
+33
to
+36
| - uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: 22 | ||
| cache: pnpm |
Comment on lines
+30
to
+33
| - uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: 22 | ||
| cache: pnpm |
Comment on lines
+34
to
+36
| # npm Trusted Publishing (OIDC) requires npm >= 11.5.1 | ||
| - run: npm install -g npm@latest | ||
| - run: pnpm install --frozen-lockfile |
| themeConfig: { | ||
| logo: { light: "/logos/btravstack-light.svg", dark: "/logos/btravstack-dark.svg" }, | ||
| nav: [ | ||
| { text: "Packages", link: "/#packages" }, |
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.
Migrates the landing page from static
index.htmlto a pnpm + turbo + changesets monorepo, so the website and the docs sites share one published theme.Structure
packages/theme—@btravstack/theme: VitePress theme wrapping DefaultTheme with the design tokens (beetroot brand, Montserrat/JetBrains Mono, light/dark surfaces, including the raised-specificity dark-mode fix). Built withtsdown, published to npm via changesets + OIDC Trusted Publishing.apps/website— VitePress home-layout landing (hero + 3 package cards) consuming@btravstack/themeviaworkspace:*, deployed to GitHub Pages (base: "/").CI
.github/workflows/release.yml— publishes@btravstack/theme..github/workflows/deploy-website.yml— builds + deploys the site to Pages.Verified
Frozen install +
turbo buildof both packages; site renders with brand#E0589A/dark,#8E1A52/light, Montserrat, no console errors.mainstill serves the staticindex.html.@btravstackorg/scope on npm + add a Trusted Publisher for@btravstack/theme→ this repo,release.yml.RELEASE_PATexists.Follow-up (separate PRs, after the theme publishes)
Migrate the 3 docs sites from the jsDelivr
@importtoimport Theme from "@btravstack/theme"+ a@btravstack/themedependency.🤖 Generated with Claude Code