Files
gridline/docs/superpowers/specs/2026-10-05-landing-page-design.md
adrianbonpin 501fed962c feat(www): landing page (#25)
* design: landing page spec + app icon asset

* chore(www): add anime.js, fonts, and landing page screenshot assets

* feat(www): add design tokens, fonts, shared layout

* feat(www): add landing page sections and styling

* feat(www): add theme toggle and anime.js viewport animations

* feat(www): feedback updates — no hero card, os-aware download, footer email, lowercase colored heading

* feat(www): remove screenshot borders, move macos hint below ctas, mobile github fallback

* feat(www): keep hero CTAs side by side

* feat(www): set initial nav border to transparent

* feat(www): add Rybbit prod-only, sitemap, SEO head, OG image, robots.txt, 404 page

* docs(AGENTS): include www landing page version in release sync checklist

* chore(www): add railpack.json for Dokploy deploy (force node provider, TZ)

* chore(www): use bun for Railpack deploy (packageManager + standalone www/bun.lock)

* docs(AGENTS): note www/bun.lock sync for Railpack deploys

* chore(www): add vitest test tooling

* feat(www): add FAQ data source

* feat(www): add SEO JSON-LD builders

* feat(www): add Seo JSON-LD component

* feat(www): wire Seo component and social/meta tags into Layout

* feat(www): add homepage JSON-LD, keyword H1, data-driven FAQ

* fix(www): point Roadmap footer link to GitHub

* feat(www): add lastmod to sitemap

* perf(www): self-host anime.js

* refactor(www): move nav and footer into shared Layout

* feat(www): add changelog page

* fix(www): make shared component styles global in Layout

* perf(www): optimize screenshots with Astro Image (webp/avif + srcset)

* feat(www): add web app manifest

* feat(www): add helpful links to 404 page

* fix(www): shorten homepage H1 copy

* fix(www): OS-aware navbar download + footer layout

* feat(www): build full changelog from v0.7.0 to v0.7.10
2026-08-17 09:16:58 +08:00

6.5 KiB
Raw Permalink Blame History

Gridline landing page — design spec

Date: 2026-10-05
Scope: www/ Astro site, single long-scrolling landing page, first public-facing marketing page.
Approach: Zen Browser layout + Gridline app visual identity. Dark-first with system-aware light mode.


Goal

Replace the current default Astro starter page with a focused landing page whose primary action is downloading the desktop app. Secondary actions: view GitHub repo, read feature highlights, open FAQ answers.


Sections (in order)

  1. Nav — fixed, translucent, pill nav on scroll
  2. Hero — eyebrow, headline, subtitle, dual CTA, app screenshot card
  3. Why Gridline — three value props
  4. Feature highlights — four feature cards with screenshots
  5. Open source — GitHub callout
  6. FAQ — five accordion items
  7. Footer — Zen-style big footer

Design system

Typography

Role Font Package
Serif display headings Literata @fontsource-variable/literata
Sans-serif body / UI Outfit @fontsource-variable/outfit
Monospace code / labels Space Mono @fontsource/space-mono

Color tokens

Token Dark value Light value
--bg #0a0a0a #fafafa
--surface rgba(255,255,255,0.04) rgba(0,0,0,0.03)
--surface-elevated rgba(255,255,255,0.07) rgba(0,0,0,0.06)
--border rgba(255,255,255,0.10) rgba(0,0,0,0.10)
--text rgba(255,255,255,0.90) #171717
--text-muted rgba(255,255,255,0.55) #737373
--primary #3b82f6 #2563eb
--primary-hover #60a5fa #1d4ed8
--accent #f59e0b #d97706

Radius & spacing

  • Buttons: 9999px pill
  • Large cards / screenshot frame: 1.5rem
  • Small cards: 1rem
  • Section vertical gap: 6rem desktop, 4rem mobile
  • Max container width: 1200px

Section details

Nav

  • Logo + wordmark on left (icon SVG + “Gridline” in Sans)
  • Links on right: Features, GitHub, Download
  • Theme toggle icon button
  • On scroll past hero: background gains --surface with backdrop blur

Hero

  • Eyebrow: OPEN-SOURCE DATABASE GUI in Space Mono uppercase, small, amber
  • H1: serif, “One app for every database.”
  • Subtitle: sans, max-width ~560px
  • CTA row:
    • Primary pill: “Download for macOS” (OS-detected, default macOS)
    • Secondary ghost pill: “View on GitHub”
  • App screenshot card: query-editor.png inside rounded glass frame with subtle gradient border
  • Version note below screenshot: “Free for personal and commercial use · Apache 2.0 · v0.7.10”

Why Gridline

  • Heading: “Everything the paid apps lock behind a subscription.”
  • Three glass cards:
    1. No limits — connections, tabs, saved queries, exports.
    2. DB-to-DB sync — pipe pg_dump → pg_restore between live connections.
    3. Deeper PG explorer — functions, triggers, sequences, enums, extensions.

Feature highlights

  • 2×2 grid of cards. Each card has:
    • Small icon / monospace label
    • Heading
    • One-line description
    • Screenshot image (home, er-diagram, data-grid, json-popover)

Cards:

  1. Query & edit — query editor + virtualized data grid — query-editor.png
  2. Visualize schemas — ER diagram with cross-schema FKs — er-diagram.png
  3. Move data — backup, restore, DB-to-DB sync — home.png or abstract graphic
  4. Manage objects — functions, triggers, roles, grants — data-grid.png

Open source

  • Centered section with GitHub star count (static for now, can be dynamic later)
  • Heading: “Built in public. No VC roadmap, no rug pulls.”
  • CTA: “Star on GitHub”

FAQ

  • Five accordion items, first open by default:
    1. Is Gridline really free for commercial use?
    2. Which databases are supported?
    3. How is this different from TablePlus / Beekeeper / DB Pro?
    4. Do you store my database credentials?
    5. Can I self-host or contribute?
  • Zen-style big footer, 4-column layout
  • Brand blurb + three link columns: Product, Project, Connect
  • Bottom bar: copyright + license + small tagline

Theme behavior

  • Default follows system prefers-color-scheme.
  • Toggle persists choice to localStorage key gridline-theme.
  • html gets class .light when light mode is active; base styles target :root for dark.
  • Tailwind v4 configured with CSS variables in global.css.

Motion

Use animejs loaded as a script in the landing page only (no need site-wide yet).

Hero entrance

  1. Nav: translateY(-20px), opacity 0 → 1, 600ms, easeOutExpo
  2. Eyebrow: 80ms delay, translateY(15px) → 0
  3. H1 words: split by word, stagger 60ms, translateY(30px) → 0
  4. Subtitle + buttons: 150ms delay, translateY(20px) → 0
  5. Screenshot card: scale 0.96 → 1, opacity 0 → 1, 800ms

Scroll reveals

  • Each section observes IntersectionObserver threshold 0.15.
  • On enter: direct children animate translateY(40px) → 0, opacity 0 → 1, stagger 80120ms.
  • prefers-reduced-motion: skip transform, only fade opacity.

Micro-interactions

  • Primary CTA hover: scale 1.02, brighter background, larger shadow
  • Nav link hover: underline slides in from left
  • Theme toggle: rotate + crossfade 300ms
  • FAQ accordion: height + opacity expand, chevron rotate 180°

Assets

Asset Source Destination
Gridline icon SVG desktop/src-tauri/icons/icon.svg www/public/gridline-icon.svg
Query editor screenshot screenshots/query-editor.png www/public/screenshots/query-editor.png
ER diagram screenshot screenshots/er-diagram.png www/public/screenshots/er-diagram.png
Home screenshot screenshots/home.png www/public/screenshots/home.png
Data grid screenshot screenshots/data-grid.png www/public/screenshots/data-grid.png
JSON popover screenshot screenshots/json-popover.png www/public/screenshots/json-popover.png

Tech notes

  • Astro 7 + Tailwind CSS v4 + TypeScript.
  • animejs added as dependency.
  • Fontsource packages added for all three typefaces.
  • Landing page implemented as www/src/pages/index.astro with Astro components / vanilla JS for motion.
  • No framework components needed for this version; keep it static and fast.

Open questions / future iterations

  • Dynamic GitHub star count.
  • OS-aware download button text.
  • Multi-page expansion (Docs, Changelog, Download) after landing page ships.
  • Testimonial / social proof section if we collect quotes.