Files

Handoff: SummerCMS Alpha 0.1 Landing Page

Overview

A single-page marketing landing for summercms.io, launching with Alpha 0.1. It has a sticky header with section anchors and a link to /docs, a hero, four content sections (Why, Features, From WinterCMS, Get started) and a footer. It replaces the current "Under construction" page and keeps its navy, yellow and sun identity.

About the Design Files

SummerCMS Landing.dc.html is a design reference built in HTML. It shows the intended look and behavior and is not production code. Recreate it in the target site's stack. If the site has no stack yet, a static-site setup (Astro, Hugo, or a plain HTML/CSS page) is enough: the page is static apart from two small scripts (scroll-spy and copy-to-clipboard). The file loads a design-runtime script (support.js) for previewing; ignore it.

Fidelity

High-fidelity. Colors, type, spacing and copy are final. Match them exactly.

Global

  • Page background #233148. Text #e9edf3.
  • Fonts: Roboto (300/400/500/700) and Roboto Mono (400/500), from Google Fonts.
  • html { scroll-behavior: smooth; scroll-padding-top: 72px } so anchor jumps clear the sticky header.
  • Content container: max-width: 1120px; margin: 0 auto; padding: 0 24px.
  • Section vertical padding: 96px top and bottom.
  • Default link color #f5c55a; hover #fbe3a6. Selection: background #f5c55a, text #1d2940.

Sections

1. Header (sticky)

  • position: sticky; top: 0; z-index: 10. Height 64px. Background rgba(29,41,64,0.82) with backdrop-filter: blur(12px). Bottom border 1px solid rgba(255,255,255,0.07).
  • Row is flex, align-items: center, gap: 16px. Logo, the "ALPHA 0.1" pill and the Docs button all have flex-shrink: 0 and white-space: nowrap.
  • Logo (links to #top): a 30px sun icon (masked to a circle, scaled 1.35) next to the wordmark "Summer" + "CMS". Roboto 700, 18px, letter-spacing -0.01em. "Summer" #fff, "CMS" #fbd77e.
  • Pill "ALPHA 0.1": 11px/500, letter-spacing 0.12em, color #f5c55a, border 1px solid rgba(245,197,90,0.35), radius 999px, padding 3px 9px.
  • Section links: Why #why · Features #features · From WinterCMS #winter · Get started #start.
    • Right-aligned in a flex: 1; min-width: 0; overflow-x: auto wrapper; the inner row has margin-left: auto.
    • Each link: 14px/500, padding 8px 12px, radius 999px, color #c5ccd6.
    • Active link: color #f5c55a, background rgba(245,197,90,0.1).
    • Hidden at viewport ≤ 720px. Below that width the header shows only logo, pill and Docs.
  • Docs button → /docs: label "Docs →". Background #f5c55a, text #1d2940, 14px/500, padding 9px 16px, radius 999px. Hover background #fbd77e.

2. Hero (#top)

  • Padding 120px 24px 128px. Centered column, text-align: center, overflow: hidden.
  • Rays (behind everything, can be turned off): an absolutely positioned layer at inset: -40% -20%.
    • background: repeating-conic-gradient(from 0deg at 50% 50%, rgba(255,255,255,0.035) 0deg 7deg, transparent 7deg 15deg)
    • mask: radial-gradient(circle, #000 10%, transparent 62%)
  • Glow: a 520px circle centered 210px from the top, radial-gradient(circle, rgba(245,197,90,0.16), transparent 60%).
  • Sun badge: 180px circle with border 1px solid rgba(255,255,255,0.12) and background #29344a, containing the sun image.
  • H1 "Summer" + "CMS": clamp(44px, 7vw, 76px), weight 700, line-height 1, letter-spacing -0.02em, margin-top 28px.
    • "Summer" is #fff.
    • "CMS" uses a gradient text fill: linear-gradient(180deg, #fde9b4, #f5c55a).
  • Tagline "A new dawn in content management": clamp(18px, 2.2vw, 22px), weight 300, color #c5ccd6, margin-top 16px.
  • Description: max-width 600px, 17px, line-height 1.6, color #a3adbd, margin-top 24px. Copy: "A content management framework for Go, inspired by WinterCMS. Plugins, the admin SPA and console commands compile into a single binary."
  • CTAs: margin-top 40px, flex row, gap 12px, wraps on narrow screens.
    • Primary "Read the docs" → /docs: background #f5c55a, text #1d2940, 15px/500, padding 14px 26px, pill shape. Hover background #fbd77e.
    • Secondary "Alpha 0.1 is out" → #start: 8px #f5c55a dot before the label. Background rgba(255,255,255,0.06), border 1px solid rgba(255,255,255,0.14), padding 13px 24px. Hover background rgba(255,255,255,0.1).

Section heading pattern (used in every content section)

  • Eyebrow: 12px/500, letter-spacing 0.16em, uppercase, #f5c55a.
  • H2: clamp(30px, 4vw, 42px), weight 700, line-height 1.15, letter-spacing -0.015em, #fff, margin-top 12px.

3. Why (#why)

  • Eyebrow "WHY SUMMER". H2 "What you tested is exactly what you deploy." (max-width 720px).
  • Card grid: repeat(auto-fit, minmax(260px, 1fr)), gap 20px, margin-top 48px.
  • Cards: background #29344a, border 1px solid rgba(255,255,255,0.08), radius 16px, padding 28px.
    • Number: Roboto Mono 13px, #f5c55a.
    • Title: 20px/500, #fff, margin 16px 0 8px.
    • Body: 15px, line-height 1.6, #a3adbd.
  • Card copy:
    1. One binary: "Plugins are Go packages compiled in at build time. Nothing is scanned, loaded or installed at runtime."
    2. YAML-driven admin: "Describe lists and forms in fields.yaml and columns.yaml. An embedded SPA renders them." The file names use inline code: Roboto Mono 13px, #e9edf3.
    3. Headless by design: "A JSON API declared route by route, plus realtime channels. Build the public site in whatever frontend you like."

4. Features (#features)

  • Full-bleed band: background #1f2b42, top and bottom borders 1px solid rgba(255,255,255,0.07).
  • Eyebrow "WHAT'S IN THE BOX". H2 "The services a content app needs."
  • Grid: repeat(auto-fill, minmax(240px, 1fr)). The 1px dividers come from gap: 1px over a rgba(255,255,255,0.08) grid background. Outer border is the same color, radius 16px, overflow: hidden.
  • Each tile is a link: background #1f2b42, padding 24px, flex column, gap 6px. Hover background #253350.
    • Title: 16px/500, #e9edf3.
    • Body: 14px, line-height 1.5, #a3adbd.
Title Body Link
Admin SPA Embedded in the binary, driven by each plugin's YAML. /docs/backend/admin-spa
Models & migrations GORM structs with fill, validation and pagination helpers. /docs/database/models
Routing & auth Route groups, named middleware, tokens and OAuth. /docs/services/routing
Queued jobs Dispatched inside the caller's transaction. /docs/services/jobs
Realtime Broadcast model changes to subscribed clients. /docs/services/realtime
Search Searchable models, synced after commit. /docs/services/search
Mail & push Plugin mail templates and push notifications. /docs/services/mail
Console Scaffolding, scheduler, workers and your own commands. /docs/console/introduction

Doc URLs were derived from the docs folder structure. Confirm them against the built docs site.

5. From WinterCMS (#winter)

  • Two columns: repeat(auto-fit, minmax(300px, 1fr)), gap 48px, align-items: start.
  • Left column
    • Eyebrow "COMING FROM WINTERCMS". H2 "Same shape. Compiled and typed."
    • Paragraph (16px, line-height 1.65, #a3adbd, margin-top 20px): "Plugins still register and boot, require each other, ship migrations and admin YAML. A plugin ports file by file."
    • Link "See the full concept map →" (15px/500) → /docs/setup/coming-from-wintercms.
  • Right column: concept table
    • Container: background #29344a, border rgba(255,255,255,0.08), radius 16px.
    • Header row "WINTERCMS | SUMMERCMS": 12px/500, letter-spacing 0.12em, #8a94a3.
    • Rows: grid 1fr 1.3fr, padding 14px 20px, Roboto Mono 13px, divider rgba(255,255,255,0.06). Left cell #a3adbd, right cell #fbe3a6.
    • Row content:
WinterCMS SummerCMS
Plugin.php party.Plugin
version.yaml + updates/ pact.HasMigrations
Eloquent models GORM + lagoon
fields.yaml / columns.yaml Same YAML, compiled at boot
routes.php pact.HasRoutes
Event::listen / fire festival.Bus
Artisan commands bonfire.Command

6. Get started (#start)

  • Full-bleed band: background #1f2b42, top border rgba(255,255,255,0.07).
  • Two columns, same grid as the WinterCMS section, align-items: center.
  • Left column
    • Eyebrow "GET STARTED". H2 "Build your first app."
    • Requirement chips "Go 1.27" and "PostgreSQL 16": 13px, #c5ccd6, background rgba(255,255,255,0.06), border rgba(255,255,255,0.1), pill shape, padding 6px 12px.
    • Note: "Alpha 0.1 is for early adopters. APIs may change before 1.0."
    • Buttons:
      • "Installation guide" (primary style) → /docs/setup/installation.
      • "Source" (outline style) → https://git.golem15.com/golem15/summercms.
  • Right column: terminal card
    • Background #18223a, border rgba(255,255,255,0.08), radius 16px.
    • Title bar: label "terminal" (Roboto Mono 12px, #8a94a3) and a Copy button (12px/500, #c5ccd6, background rgba(255,255,255,0.06), border rgba(255,255,255,0.1), radius 6px, padding 5px 10px).
    • Body: padding 22px 20px, Roboto Mono 14px, line-height 1.9.
    • Each line is its own block element. Comments are #8a94a3. The $ prompt is #f5c55a. A 16px gap separates the two groups.
    # install the summer CLI
    $ go install ./cmd/summer
    
    # build and run the example app
    $ cd examples/hello
    $ summer build
    $ ./bin/hello greeter:hello
    
  • Top border rgba(255,255,255,0.07). Padding 32px 24px. 13px, #8a94a3.
  • Left: "© 2026 SummerCMS. Something bright is here."
  • Right links (#a3adbd, hover #f5c55a, gap 20px):
    • Docs → /docs
    • Source → https://git.golem15.com/golem15/summercms
    • Back to top ↑ → #top

Interactions & Behavior

  • Scroll-spy: on window scroll, the active section is the last of why, features, winter, start whose top is less than 140px from the viewport top. That link gets the active style. Above the first section, no link is active.
  • Copy button: writes the four commands (without $ or comments) to the clipboard. The label changes to "Copied" for 1.5s, then reverts.
  • Responsive: every grid uses auto-fit/auto-fill and collapses to one column on its own. Section links hide at ≤ 720px. Hero type scales with clamp().
  • Transitions: none are specified. Hover changes are instant; a 150ms ease on background and color is fine.

State

  • activeSection: string
  • copied: boolean
  • isWide: boolean (matchMedia min-width: 721px)

The prototype also has two config flags: showRays (default true) and scrollSpy (default true).

Design Tokens

Token Hex Used for
navy-900 #18223a terminal background
navy-850 #1d2940 header base, text on yellow
navy-800 #1f2b42 alternate bands
navy-700 #233148 page background
navy-650 #253350 feature tile hover
navy-600 #29344a cards
yellow-500 #f5c55a accent
yellow-400 #fbd77e accent hover, "CMS" in logo
yellow-200 #fbe3a6 link hover, code values
yellow-100 #fde9b4 top of the "CMS" gradient
text #e9edf3 body text
text-2 #c5ccd6 tagline, nav links
text-3 #a3adbd body copy
text-4 #8a94a3 captions, comments
  • Borders: white at 6, 7, 8, 10, 12 and 14% alpha.
  • Radius: 6px (small button), 16px (cards), 999px (pills).
  • Spacing in use: 4, 6, 8, 12, 16, 20, 24, 28, 32, 40, 48, 96 and 120px.

Assets

  • assets/sun-crop.png (180×180): a placeholder cropped from a screenshot of the current under-construction page. Replace it with the original sun artwork from the existing summercms.io site. A transparent PNG or SVG is best; the hero badge then provides the circle and border.

Files

  • SummerCMS Landing.dc.html: the full design reference.
  • assets/sun-crop.png: the placeholder sun icon.