Skip to content

feat(ci): deploy website, storybook, and playground to GitHub Pages - #125

Merged
MLKiiwy merged 18 commits into
mainfrom
feat/deploy-all-apps-to-github-pages
Sep 15, 2026
Merged

MLKiiwy merged 18 commits into
mainfrom
feat/deploy-all-apps-to-github-pages

Conversation

@MLKiiwy

@MLKiiwy MLKiiwy commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Replace the single-app playground deploy workflow with a full three-app deployment: Astro website at root /, Storybook at /storybook/, playground at /playground/en|fr/
  • Add holos:build:deploy Nx target (nx:noop + dependsOn) so all three builds run in parallel with caching via nx run holos:build:deploy
  • Add STORYBOOK_BASE_PATH env var support to viteFinal in websites/storybook/.storybook/main.ts — CI sets it to /storybook/ so Vite prefixes assets correctly; local dev is unaffected
  • Extract site assembly logic into scripts/assemble-site.sh (Astro at root, storybook at /storybook/, playground at /playground/en/ and /playground/fr/ with a language-redirect index)

Test plan

  • CI passes on this branch
  • After merge, the deploy workflow triggers and completes successfully
  • www.alistigo.com/ serves the Astro/Starlight docs site
  • www.alistigo.com/storybook/ loads Storybook with no 404 asset errors
  • www.alistigo.com/playground/ redirects to /playground/en/ or /playground/fr/ based on browser language

🤖 Generated with Claude Code

MLKiiwy and others added 18 commits September 14, 2026 13:14
Reapplies work lost during the merge to main: PM2 ecosystem config,
server:* scripts, systemd service installer, lefthook restart hook,
ADR 0030, and Tailscale/LAN CSP + allowedHosts fixes for the playground.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Both websites/alistigo and websites/storybook are missing their source
files (package.json, astro.config.ts, .storybook/main.ts) — they were
never committed to git. The processes crash immediately with
ERR_PNPM_RECURSIVE_EXEC_NO_PACKAGE. Remove them from the ecosystem
config to stop the restart loop; add them back once the websites/ work
is committed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Recreates the alistigo documentation website from built dist artifacts.
Content recovered: home hero, platform overview, architecture constraints,
layer diagram, ADR index, and playground page. Adds ADR 0029 documenting
the Astro Starlight decision. Adds website process back to PM2 ecosystem
config and registers websites/* in pnpm workspace.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Astro/MDX files are not analyzable by fallow. Add websites/ dirs to
ignorePatterns and astro/starlight/sharp to ignoreDependencies.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Mirrors the vite.config.ts allowedHosts pattern so the Astro dev
server accepts Tailscale/LAN requests via os.hostname() and .local.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e global instance at websites/storybook

- Create websites/storybook with dynamic story discovery using globSync
  across all apps/* and packages/* — title prefix auto-derived from package name
- Remove .storybook/ dirs and storybook devDeps from 6 packages/apps
- Remove storybook/build-storybook Nx targets from all 6 project.json files
- Fix story titles in artifact-list-checkbox-plugin and artifact-user-plugin
  to drop the package-name prefix (now injected via global titlePrefix)
- Add storybook process to PM2 ecosystem config (port 6006, allowedHosts via viteFinal)
- Add storybook/glob to .fallowrc.json ignoreDependencies

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…stories to dynamicallyLoaded

Keep @storybook/react-vite in packages' devDeps for type declarations
while the storybook CLI remains consolidated in websites/storybook.
Add *.stories.{ts,tsx} to fallow dynamicallyLoaded so story files are
treated as valid entry points. Add react/react-dom to ignoreDependencies
since websites/storybook needs them as peer deps but .storybook/ is excluded
from fallow analysis.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace per-package CSS imports with a conditional global decorator in
preview.tsx that wraps playground stories in a #host-root div with
height: 100vh, restoring the host.css height cascade without bleeding
overflow:hidden into other packages' stories.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
os.hostname() is fragile — it can return an FQDN that doesn't match
the hostname the browser connects to. Switching to true allows any
host, which is appropriate for a private dev server.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…sform

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…d packages

globals.css only scanned list-components-react files via its @source directive,
so playground utility classes were never emitted. A dedicated preview.css
extends the scope to apps/** and packages/**.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add holos:build:deploy Nx target using nx:noop + dependsOn to build all
  three deployed apps in parallel with caching
- Add STORYBOOK_BASE_PATH env var support to storybook viteFinal so assets
  resolve correctly when served at /storybook/ subpath
- Extract site assembly into scripts/assemble-site.sh (Astro at root,
  storybook at /storybook/, playground at /playground/en|fr/ with redirect)
- Replace deploy-playground.yml with full three-app deployment workflow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@storybook/react-vite uses the automatic JSX transform — explicit import
is not needed and fails biome noUnusedImports.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Fallow audit report

Found 3 findings.

Details
Severity Rule Location Description
minor fallow/unused-dev-dependency package.json:51 Package '@finos/calm-cli' is in devDependencies but never imported
minor fallow/unused-dev-dependency package.json:52 Package '@finos/calm-schema' is in devDependencies but never imported
minor fallow/unused-dev-dependency websites/storybook/package.json:13 Package 'glob' is in devDependencies but never imported

Generated by fallow.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fallow audit report

1 inline finding selected for GitHub review.

"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^4.3.4",
"glob": "^11.0.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warn fallow/unused-dev-dependency: Package 'glob' is in devDependencies but never imported

@MLKiiwy
MLKiiwy merged commit 386f4c9 into main Sep 15, 2026
2 checks passed
@MLKiiwy
MLKiiwy deleted the feat/deploy-all-apps-to-github-pages branch September 15, 2026 12:12
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.

1 participant