Skip to content

roadmap: move devantler.tech off GitHub Pages into the cluster + into its own repo #2062

Description

@devantler

🤖 Generated by the Daily AI Assistant, at the maintainer's request.

Problem

devantler.tech is the one product that doesn't follow the portfolio's own conventions:

  • It lives inside this monorepo (docs/ + repo root), not in its own repo aggregated as a submodule like every other product.
  • It deploys to GitHub Pages (.github/workflows/publish-pages.yaml), not to the Kubernetes platform every other app runs on.

So the site sits outside the platform's posture (Gateway API routing, cert-manager TLS, cosign-verified OCI delivery, default-deny NetworkPolicy, VPA/observability) and outside the repo/submodule structure the rest of the suite uses.

Goal

  1. Own repo: extract the Astro Starlight site into devantler-tech/devantler.tech and aggregate it back into this monorepo as a submodule (like every other product).
  2. On the cluster: host it as a GitOps app on the platform — ideally via the WebApp archetype (chore(deps): Bump platform from f834125 to a6dd705 #1933) — and retire GitHub Pages.

Proposed direction (decompose — sequence roughly in this order; each becomes a child issue when picked up)

  1. Create the new repo declaratively. devantler-tech/devantler.tech via .github deploy/ (Crossplane Repository). Note the net-new-repo caveat: the 5 required custom properties mean a one-time org-admin gh api POST bootstrap then Observe-adopt (precedent: provider-upjet-unifi). Move docs/ + the repo-root site config (Astro config, package.json, content) into it; wire its own CI from the shared actions/reusable-workflows, CODEOWNERS @devantler-tech/maintainers, and an AGENTS.md.
  2. Aggregate as a submodule. Add the new repo as a monorepo submodule (proposed path applications/devantler.tech); update the AGENTS.md portfolio map + product cards; keep site CI green.
  3. Containerize + publish a signed OCI artifact. Build the static site into a minimal container (serve dist/ via nginx/caddy) — or an Astro server adapter if SSR is wanted later — and publish a cosign-signed image/OCI artifact through the org release pipeline.
  4. Onboard as a cluster app (GitOps). Add it as a public-facing platform tenant/WebApp: namespace, cosign-verified Flux OCIRepository + Kustomization, Gateway API HTTPRoute on the shared gateway, cert-manager TLS, default-deny NetworkPolicy, resource requests + VPA. Prefer the WebApp archetype (chore(deps): Bump platform from f834125 to a6dd705 #1933 / RGD) now that its pilot exists (#2508).
  5. DNS + TLS cutover. Point the devantler.tech DNS record at the cluster ingress (Hetzner LB → Gateway), provision + validate the cert, then retire GitHub Pages (publish-pages.yaml + the Pages settings/CNAME, managed declaratively in .github).
  6. Cleanup. Remove the site from the monorepo root, reconcile references (docs: repoint the docs site + drift guard off reusable-workflows once actions#314 archives it #1964 docs-site repoint, roadmap: monorepo & devantler.tech site strategy (June 2026) #1813 site strategy), and confirm PR previews still work.

Rough size

L — a multi-child epic spanning net-new-repo bootstrap, platform onboarding, and a DNS/TLS cutover; several sequenced PRs across monorepo, the new repo, platform, and .github.

Acceptance criteria

  • devantler-tech/devantler.tech exists (declarative) and is a monorepo submodule; the site no longer lives in the monorepo root.
  • The site is served from the Kubernetes cluster behind the shared Gateway with cert-manager TLS, cosign-verified Flux delivery, and a default-deny NetworkPolicy.
  • devantler.tech resolves to the cluster; GitHub Pages (publish-pages.yaml + Pages settings) is retired.
  • AGENTS.md portfolio map, product cards, and CI reflect the new repo; PR previews still work.

Open decisions (maintainer to confirm; I'll default as noted and adjust)

  • Repo name (devantler.tech proposed) and submodule path (applications/devantler.tech proposed).
  • Onboard via the WebApp archetype (chore(deps): Bump platform from f834125 to a6dd705 #1933) vs. a plain hand-authored tenant (like wedding-app) for the first cut.
  • Keep it a static container (Starlight is static-first) vs. adopting Astro SSR.

Related

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions