CMS-krønike·marts 2026·4 minutter læsning

CMS Chronicle #09: Rebranding og landing Rebranding og at tage vores egen medicin

CMS’en fik en ny identitet — webhouse.app-branding overalt, en branded loginoplevelse og en landingsside, der selv styres af CMS’en. Plus omdøbning af repoet, oprydning af deploy-filer og npm-publisering.

Et nyt ansigt

Projektet har internt været kaldt cms-engine siden starten. I dag er repository blevet omdøbt til blot cms — hvilket matcher npm-scopet @webhouse/cms — og webhouse.app-brandidentiteten er blevet anvendt overalt.

Øjet

webhouse.app-logoen er et stiliseret øje med en gylden iris. Det repræsenterer observation, opmærksomhed på detaljer og idéen om, at en CMS bør se dit indhold klart. Ikonet optræder nu i:

  • Admin-sidebjælken (stablet: øje + ordmærke + slogan)
  • Login-side (centreret, 72px)
  • Favicon (64px)
  • Landingsside (hero, navigation, footer)
  • webhouse-site footer ("Drevet af")

Ordmærket skifter mellem mørke og lyse varianter baseret på det aktive tema.

Brandfarver

FarveHexAnvendelse
Primær guld#F7BB2ELogo, CTAs, accenter
Mørk guld#D9A11AHover-tilstande, skygger
Næsten sort#0D0D0DPrimær mørk baggrund
Mørke blå-sorte#1C1C1C#2A2A3EOverfladevarianter med subtil blå undertone

Loginoplevelse

Login-siden blev tidligere gengivet inden i admin-layoutet — sidebjælke, faner og alt var synligt bag formularen. Nu er det en fuldskærms-overlejring med:

  • Mørk gradientbaggrund med gittermønster
  • Radial gylden glød som accenter
  • Øjeikon + ordmærke centreret
  • "Drevet af @webhouse/cms" i footeren
  • Glasagtig kort med baggrundsblur

Log ud sender dig til landingssiden i stedet for tilbage til login.

Landingssiden

Uautentificerede besøgende på localhost:3100 ser en markedsførings-side for webhouse.app. Den indeholder:

  • Hero med flydende øjeikon, ordmærke, terminal-eksempel
  • Statistikbjælke (opstartstid, nødvendig kode, Lighthouse-score)
  • Feature-kort (AI-agenter, skema-drevet indhold, statisk output mv.)
  • Arkitekturdiagram (det rigtige SVG fra Illustrator, ikke ASCII)
  • MCP-sektion (beskrivelser af offentlig + autentificeret server)
  • CTA-sektion med GitHub-link

Siden leveres som statisk HTML ved 120% zoom for en mere markant følelse. Autentificerede brugere bliver omdirigeret direkte til /admin.

Egen medicin: landing som CMS-eksempel

Her kommer det interessante. Landingssidens indhold er også defineret som et CMS-skema:

defineCollection({
  name: 'pages',
  label: 'Sider',
  urlPrefix: '/',
  fields: [
    { name: 'title', type: 'text', required: true },
    { name: 'metaDescription', type: 'textarea' },
    { name: 'sections', type: 'blocks', blocks: ['hero', 'stats', 'features', 'architecture', 'mcp', 'cta'] },
  ],
})

Seks bloktyper — hero, stats, features, architecture, mcp, cta — hver med deres egne felter. Indholdet er seedet som content/pages/home.json med alle de reelle landingsside-data.

Dette ligger i examples/landing/ sammen med det eksisterende examples/blog/. Det er det andet eksempel-site, og takket være multi-site admin (Chronicle #08) kan begge sites administreres fra den samme admin-instans.

Oprydning i repoet

  • Repository omdøbt fra webhousecode/cms-enginewebhousecode/cms
  • Git-remote, scripts, Dockerfile, fly-start.sh alle opdateret
  • Deploy-filer flyttet til deploy/ inden i repoet (tracket i git)
  • webhouse-site’s afhængighedssti opdateret fra ../cms-engine/ til ../cms/

npm-publisering

Alle fem pakker er nu publiceret på npm:

  • @webhouse/cms — kerneengine
  • @webhouse/cms-ai — AI-agenter
  • @webhouse/cms-cli — CLI-værktøj
  • @webhouse/cms-mcp-client — offentlig MCP-server
  • @webhouse/cms-mcp-server — autentificeret MCP-server

npx @webhouse/cms init er nu en reel kommando.


Hvad kommer næste gang

Landingssiden er i øjeblikket en statisk HTML-fil. Det næste skridt er at bygge template-motoren, der gengiver blokbaseret indhold fra home.json til den samme HTML — så redigeringer i admin-UI’en opdaterer den levende landingsside. Det er Fase 3 af landingsside-migreringen.

Men først: multi-site-administration. Det er Chronicle #08.