- Add @payloadcms/sdk + @unom/cms (typed Config) to deps
- .npmrc maps @unom to git.unom.io/api/packages/unom/npm/
- Rewrite src/lib/cms.ts: PayloadSDK<Config> client + typed helpers
(findPageBySlug, findPostBySlug, findPosts, findFooter, findHeader)
- Re-export the structural types (Page, Post, Footer, Header) plus the
legacy aliases (RichTextBlock, LexRoot/LexNode, NavigationSection,
NavigationLink) so existing components keep compiling
- Dockerfile mounts /root/.npmrc as a build secret so bun install can
pull @unom/cms from the private gitea registry
- deploy.yml stages an .npmrc with REGISTRY_TOKEN auth + passes it as
the 'npmrc' build secret
- Add blog routes: /blog (list) + /blog/ (detail), PostCard, all
reading from the CMS via the SDK
- Fix two pre-existing TS errors (@fontsource/inter import, server.tsx
return type)
- Header link sizes to 70% of the header height (aspect-square) so it
fits at all breakpoints instead of overflowing the 100px default
height. Was hard-pinned to 120×120 which clipped on small headers.
- LegalPage adds pt-height-header so content starts below the fixed
header instead of being covered by it (the Landing route stays
full-bleed intentionally).
Without explicit dimensions the browser fell back to the SVG default
(300×150 CSS px), overflowing the 120×120 header link and hiding
behind the backdrop-blur.
Tailwind/CSS parser was normalizing the bare `100` lightness to
`10000%`, which is out of range — browsers fell back to the SVG
default (black), making the white logo invisible on the dark hero.
- Add src/lib/cms.ts: REST helpers (findPageBySlug, findFooter, findHeader)
- Add src/components/RichText.tsx: minimal Lexical → React renderer
(heading h1-h4, paragraph, list, listitem, link, text + linebreaks +
basic text-format bitflags).
- routes/legal/{imprint,privacy}.tsx now fetch via route loader; meta
title + description come from the Page's own fields.
- Footer reads the Footer global via the root route's loader using
getRouteApi('__root__'). Three sections + tagline match the previously
hardcoded structure (now editable via cms.unom.io/admin).
- Drop react-markdown + src/content/legal/*.md (CMS is the source of truth).
Replace the Astro static site with a TanStack Start (Bun runtime) app and
add Dockerfile + compose files so the site can be served from home-main-2
behind the home-reverse-proxy-1 Caddy instead of Netlify. CI workflow
rewritten to build a container image and SSH-deploy to the home host.