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:
96pxtop 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. Backgroundrgba(29,41,64,0.82)withbackdrop-filter: blur(12px). Bottom border1px 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 haveflex-shrink: 0andwhite-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, border1px 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: autowrapper; the inner row hasmargin-left: auto. - Each link: 14px/500, padding 8px 12px, radius 999px, color
#c5ccd6. - Active link: color
#f5c55a, backgroundrgba(245,197,90,0.1). - Hidden at viewport ≤ 720px. Below that width the header shows only logo, pill and Docs.
- Right-aligned in a
- 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).
- "Summer" is
- 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#f5c55adot before the label. Backgroundrgba(255,255,255,0.06), border1px solid rgba(255,255,255,0.14), padding 13px 24px. Hover backgroundrgba(255,255,255,0.1).
- Primary "Read the docs" →
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, border1px 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.
- Number: Roboto Mono 13px,
- Card copy:
- One binary: "Plugins are Go packages compiled in at build time. Nothing is scanned, loaded or installed at runtime."
- YAML-driven admin: "Describe lists and forms in
fields.yamlandcolumns.yaml. An embedded SPA renders them." The file names use inline code: Roboto Mono 13px,#e9edf3. - 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 borders1px 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 fromgap: 1pxover argba(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: 16px/500,
| 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, borderrgba(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, dividerrgba(255,255,255,0.06). Left cell#a3adbd, right cell#fbe3a6. - Row content:
- Container: background
| 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 borderrgba(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, backgroundrgba(255,255,255,0.06), borderrgba(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.
- "Installation guide" (primary style) →
- Right column: terminal card
- Background
#18223a, borderrgba(255,255,255,0.08), radius 16px. - Title bar: label "terminal" (Roboto Mono 12px,
#8a94a3) and a Copy button (12px/500,#c5ccd6, backgroundrgba(255,255,255,0.06), borderrgba(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 - Background
7. Footer
- 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
- Docs →
Interactions & Behavior
- Scroll-spy: on window scroll, the active section is the last of
why,features,winter,startwhose 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: stringcopied: booleanisWide: boolean(matchMediamin-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.