Nychthemeron/docs/superpowers/specs/2026-06-11-docs-site-and-docker-design.md
Matthew L McPeak 8b54df80ab
Some checks failed
ci / build (push) Failing after 27s
ci / publish (push) Has been skipped
ci / publish-docs (push) Has been skipped
Inital Commit
2026-07-15 19:32:31 -04:00

2.3 KiB

Docs site (playground) Docker image + install page

Goal

Publish the Storybook playground as a static "docs" site, package it as a Docker image (nychthemeron-docs), and add an Installation page documenting how to install @nychthemeron/library from the private Forgejo npm registry via npm, pnpm, yarn, and bun.

Install page

  • New file: packages/playground/stories/Install.mdx
  • Storybook addon-docs MDX page (no story export), Meta title Get Started/Installation so it sorts near the top of the sidebar.
  • Content:
    • Heading + short description of the library.
    • Registry config snippet (.npmrc) showing how to point the scoped @nychthemeron registry at https://git.mcpeakdev.com/api/packages/mcpeakdev/npm/.
    • Four code blocks showing install commands for @nychthemeron/library: npm, pnpm, yarn, bun.

Docker image (nychthemeron-docs)

  • New file: packages/playground/Dockerfile, multi-stage build:
    • Stage 1 (oven/bun:1): copy the workspace, bun install --frozen-lockfile, build @nychthemeron/library (cd packages/library && bun run build), then build Storybook (cd packages/playground && bun run buildpackages/playground/storybook-static).
    • Stage 2 (nginx:alpine): copy storybook-static into /usr/share/nginx/html, default nginx config, EXPOSE 80.
  • Build context is the repo root (so the workspace lockfile and all packages are available to stage 1).

CI changes

In .forgejo/workflows/ci.yml, add a new publish-docs job:

  • Parallel to the existing publish job (both depend on build).
  • Gated on startsWith(github.ref, 'refs/tags/v').
  • Steps:
    1. Checkout
    2. Log in to git.mcpeakdev.com using docker/login-action with secrets.FORGEJO_TOKEN (same credential as the library publish job).
    3. Extract version from tag (${GITHUB_REF_NAME#v}).
    4. docker/build-push-action with context ., dockerfile packages/playground/Dockerfile, push true, tags:
      • git.mcpeakdev.com/mcpeakdev/nychthemeron-docs:<version>
      • git.mcpeakdev.com/mcpeakdev/nychthemeron-docs:latest

Out of scope

  • No changes to the existing build or publish (npm) jobs beyond what's already in place.
  • No SPA routing / custom nginx config — Storybook's static output is served as-is.