Skip to content

Milestone 0: Astro Starlight documentation site - #1

Merged
Exonical merged 5 commits into
mainfrom
devin/1779171418-docs-starlight
May 19, 2026
Merged

Exonical merged 5 commits into
mainfrom
devin/1779171418-docs-starlight

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented May 19, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Establishes the project's documentation site as the foundation for the
full STIG Manager re-implementation — it lands before any backend
or frontend code so the spec is the source of truth.

  • docs/ — Astro Starlight workspace (TypeScript strict, standalone
    pnpm package).
  • Information architecture mirrors the upstream readthedocs site:
    • Introduction (splash) — RMF context, "where to start" links.
    • Features — Overview, Common Tasks.
    • Installation & Setup — Overview, Quick Start (Docker), Database
      (Postgres 18), Authentication (OIDC), Environment Variables,
      Data & Permissions, Logging, Reverse Proxy, Hardening & TLS.
    • User Guide — Quick Start, Concepts & Workflow, Roles & Access,
      Review Handling, Rule Exceptions.
    • Admin Guide — Quick Start, Operations.
    • Reference — Overview + full OpenAPI v1 spec rendered inline via
      starlight-openapi. 174
      operation pages are auto-generated from the YAML.
    • The Project — Description, Architecture, Contributing, Testing,
      Related Repos, Roadmap, Examples, License & Intent.
  • OpenAPI spec carried verbatim into docs/openapi/stig-manager.yaml
    from upstream so /api/v1 byte-compatibility is documented.
  • Theme — shadcn-flavoured neutrals (src/styles/custom.css); dark
    mode auto by default with a manual selector.
  • CI — .github/workflows/docs.yaml runs astro check and pnpm build on every PR; deploys to GitHub Pages on main (deploy step is
    optional / skipped on PRs).
  • Repo root — README.md, LICENSE (MIT), .gitignore shaped for
    the multi-package repo (just docs/ for now; web/, api/ slots
    reserved for Milestone 1).

Stack adjustments from upstream that are reflected throughout the docs:

  • MySQL → Postgres 18 (jsonb / timestamptz / uuid / pgcrypto + pg_trgm).
  • Node/Express → Go binary (net/http + chi + oapi-codegen + sqlc).
  • ExtJS → React 19 SPA (Vite + shadcn/ui + TanStack Router/Query/Table).
  • Sphinx → Astro Starlight.

Local build is clean — 179 pages built in ~15 s with no warnings.

Screenshots

Homepage (dark mode):

docs homepage

OpenAPI reference (full list of operations rendered inline):

api reference

Review & Testing Checklist for Human

  • Spot-check the IA — open the sidebar and verify each top-level
    section (Features → Installation & Setup → User Guide → Admin
    Guide → Reference → The Project) reads in the order you expect.
  • Open /reference/api and click through a handful of operations to
    confirm request/response schemas render correctly (e.g.
    POST /collections, GET /collections/{id}/reviews,
    POST /stigs).
  • Confirm the wording on /installation/database and
    /installation/environment-variables matches the Postgres 18 +
    Go-binary direction you want — those are the pages most likely to
    need follow-up wording tweaks.
  • Review /project/roadmap and confirm the milestone ordering
    matches what you want for Milestones 1–16.
  • Local: cd docs && pnpm install && pnpm dev, then open
    http://127.0.0.1:4321.
  • GitHub Pages: to make the public site live after merge, enable
    Pages on the repo at Settings → Pages → Source: GitHub Actions.
    Until then the deploy preview / production job is intentionally
    skipped.

Notes

  • Not included on purpose: the Go backend, React SPA, Dockerfile,
    docker-compose. Those come in Milestone 1 (next PR).
  • Not included on purpose: my local PLAN.md planning scratch — the
    public roadmap lives at
    docs/src/content/docs/project/roadmap.mdx instead and is the
    canonical source for milestone status.
  • No link check yet. I initially wired up linkinator but the site
    is built with an absolute site: URL, so every internal link is
    absolute and gets filtered out by the same regex that skips remote
    URLs (i.e. it would scan zero links). I'll add a proper link check in
    a follow-up — likely lychee against pnpm preview on a real local
    server, gated to a separate job.
  • OpenAPI spec is the upstream v1 file as-is. Any feature divergence
    between this implementation and upstream will be tracked by editing
    the spec in a future milestone PR; we did not alter it in this
    one.
  • License: the project itself is MIT; the OpenAPI spec, schema, and
    any forward-ported documentation language remain governed by
    upstream's LICENSE.md / INTENT.md.

Link to Devin session: https://app.devin.ai/sessions/022810763c4643c0848ba894c1512b92
Requested by: @Exonical

Establishes the project's documentation site as a static Astro Starlight
build under `docs/`. The site mirrors the upstream NUWCDIVNPT/stig-manager
information architecture, with content adapted for this implementation's
stack (Go backend, PostgreSQL 18, React 19 + shadcn/ui SPA, OIDC PKCE auth).

- IA: Features, Installation & Setup, User Guide, Admin Guide, Reference
  (OpenAPI rendered inline), The Project.
- OpenAPI v1 spec rendered via starlight-openapi from the upstream spec
  carried verbatim in `docs/openapi/stig-manager.yaml` so /api/v1
  byte-compatibility is documented.
- Tailwind/shadcn-flavoured neutrals via `src/styles/custom.css`.
- CI workflow at `.github/workflows/docs.yaml`: install → astro check →
  build → linkinator → GitHub Pages deploy on main.
- pnpm workspace scaffolded; web/api packages will be added in Milestone 1.
- Repo root: README, LICENSE, .gitignore aligned to the project shape.

Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Bryce Anglin <brycemanglin@gmail.com>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

devin-ai-integration Bot and others added 4 commits May 19, 2026 06:44
The previous workflow ran `pnpm install --frozen-lockfile` with
`working-directory: docs` while a top-level `pnpm-workspace.yaml`
was present. pnpm then expected the lockfile at the workspace root
and failed with ERR_PNPM_NO_LOCKFILE.

For Milestone 0 there is only one package, so removing
`pnpm-workspace.yaml` makes `docs/` standalone and keeps the
lockfile co-located with the package. The workspace file will be
re-introduced in Milestone 1 alongside the `web/` package, at which
point the lockfile will move to the repo root in the same change.

Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Bryce Anglin <brycemanglin@gmail.com>
PLAN.md is a local planning scratchpad — the public roadmap lives in
`docs/src/content/docs/project/roadmap.mdx` and is the canonical
source for milestone status.

Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Bryce Anglin <brycemanglin@gmail.com>
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Bryce Anglin <brycemanglin@gmail.com>
linkinator's offline directory crawl reports zero scanned links when
all internal links are absolute URLs (the site is built with
`site: 'https://stig-manager-react.exonical.dev'`). A proper link
check needs a real local server (e.g. lychee against `pnpm preview`),
which we will add in a follow-up. Removing the step keeps CI honest:
astro build already catches broken Markdown references.

Also: the Caddy snippet in installation/reverse-proxy.mdx was tagged
`caddyfile`, which Shiki / astro-expressive-code does not bundle, and
which produced a build-time WARN about falling back to txt. Switching
to a plain `txt` fence silences the warning without changing the
rendered output.

Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Bryce Anglin <brycemanglin@gmail.com>
@Exonical
Exonical merged commit 3a01bb1 into main May 19, 2026
2 checks passed
@Exonical
Exonical deleted the devin/1779171418-docs-starlight branch May 19, 2026 06:56
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