Template
Stillwater
A warm, reflective lifestyle and wellness blog with a pill-shaped floating header, a rounded split hero card, featured and category article cards with glassy overlays, and a newsletter panel. It serves independent writers publishing essays on wellness, travel and mindful living.
Calm wellness and living journal · Website · Small business site · static site
A mock-up of the homepage, drawn from this design’s layout, palette and typefaces. A build follows the full prompt below.
Start from this templateRead the build prompt
Typefaces
Merriweather stays for the bookish warmth, and the rounded Nunito Sans echoes the café notebook's soft forms.
- MerriweatherHeadings: headlines 56px 600, nav and buttons
- Nunito SansBody: body 18px, warm grey
Who it is for
- Wellness and mindfulness writers
- Slow-travel bloggers
- Independent newsletter publishers
- Personal-growth coaches
Layout
- Floating rounded pill header: monogram + name left, Home/Articles/Wellness/Travel/About center, moon toggle and dark 'Join Now' pill right
- Hero card on beige with large radius: rounded desk flat-lay photo left; serif headline, intro paragraph, Join Now button and circular social icons right
- Intro statement in large serif
- Featured articles row
- Category article cards with image, dark overlay, serif title and circular arrow button
- Newsletter panel with pill email input and Subscribe
- Footer with Explore/About columns
Palette
Warm, reflective, cozy, gentle, grounded. Like a café notebook -- calm beige tones and soft rounded forms.
- background
#f9f6f1 - text
#2e2e2e - hero panel
#e9e0d6 - primary charcoal
#2e2e2e - newsletter panel
#f3ede6 - muted text
#68635e - border
#e5dfd6 - input border
#9c8563
Every checked pair, measured again
| Sample | Where | Ratio | Needs |
|---|---|---|---|
| Aa | body text on background | 12.60:1 | 4.5:1 |
| Aa | body text on hero panel | 10.41:1 | 4.5:1 |
| Aa | muted text on background | 5.51:1 | 4.5:1 |
| Aa | muted text on hero panel | 4.55:1 | 4.5:1 |
| Aa | muted text on newsletter panel | 5.11:1 | 4.5:1 |
| Aa | white on charcoal pill | 13.58:1 | 4.5:1 |
| Aa | white card titles on photo scrim (rgb(0 0 0 / .55) over white) | 4.74:1 | 4.5:1 |
| pill input border on newsletter panel | 3.04:1 | 3:1 | |
| focus ring on background | 12.60:1 | 3:1 | |
| Aa | dark: text on background | 14.39:1 | 4.5:1 |
| Aa | dark: text on panel | 12.45:1 | 4.5:1 |
| Aa | dark: muted text on panel | 6.77:1 | 4.5:1 |
As vibld’s tokens
The palette on the fifteen colour tokens vibld styles a project with, each text colour on the fill it is read on. Marked tokens are solved from the palette, because no swatch held that role at 4.5:1.
- background
- card
- muted
- primary
- secondary
- accent
- destructive *
Type scale
- Display
- Merriweather 600, 56px, tight -0.06em tracking
- Body
- Nunito Sans 400 18px warm grey
Classic serif headlines with clean Nunito Sans body; serif also used in nav and buttons for bookish warmth
Spacing and imagery
1216px container; 32–40px radius panels, 24px radius cards, pill header and buttons; spacious 100px section rhythm
Moody, warm-toned flat-lay and lifestyle photography (desk, coffee, books, travel) with dark gradient overlays on cards.
Components
- Floating pill header
- Monogram logo
- Theme toggle
- Hero split card
- Circular social buttons
- Serif intro statement
- Featured article card
- Overlay card with arrow button
- Category pages
- Newsletter panel
- Author attribution
- Related articles
Interactions
- Header becomes translucent glass on scroll
- Staggered card entry animations
- Card hover lift and arrow rotate
- Dark mode toggle
- Newsletter submit states
- Share buttons
Data
Article{slug, title, excerpt, category(wellness|travel|lifestyle), cover, author_id, date, body_md, featured}Author{id, name, avatar, bio}Subscriber{email}
Build prompt
The baseline every prompt in the catalog assumes, then this design’s own ten sections, from goal to guardrails.
The baseline
### How to use these prompts Paste a template's build prompt into your coding agent as the first message. Each prompt names its own stack, tokens and acceptance criteria; the rules below apply to all of them and can be prepended once per project. ### Engineering baseline - TypeScript strict mode, no `any`, small typed components, feature folders, and one source of truth for design tokens (CSS variables consumed by Tailwind). - Validate every input with a shared zod schema on the client and again on the server or edge function. Never trust client-side checks alone. - Show loading, empty and error states for every async view. Surface errors in plain language with a retry, and log details to the console in development only. - Keep secrets out of the bundle. Only publishable keys (for example a Supabase anon key) belong in client code; service-role keys, API keys and webhooks live in server or edge-function environment variables. ### Data and auth baseline (full-stack templates) - Enable Row Level Security on every table before inserting data. Default-deny, then add owner-scoped policies (`auth.uid() = user_id`) and explicit role checks for admin views. - Store roles in a separate table checked by a security-definer function, never in a user-editable profile field. - Upload files to private storage buckets with size and MIME limits, and serve them through signed URLs. - Rate-limit public endpoints (forms, auth, AI calls) and add a honeypot field or captcha to anonymous forms. - Take payments through a hosted checkout and verify webhooks by signature. Never handle raw card data. ### Accessibility and UX baseline - Target WCAG 2.2 AA: 4.5:1 contrast for normal text and 3:1 for large text, input borders, focus rings and meaningful icons or chart lines. Every palette in this catalog lists its verified pairs; re-check with a contrast tool after any colour change. - Keep body text at 16px or larger with 1.5 line height, nothing below 12px, no light weights under 24px, and uppercase only for short labels. - Give every interactive element a visible focus ring, full keyboard support, semantic landmarks, labelled form fields, and alt text on meaningful images. - Respect `prefers-reduced-motion` for every animation. Give drag-and-drop and carousels keyboard and button alternatives. - Build mobile-first and test at 375px, 768px and 1280px. ### Content guardrails - Use original copy, fictional sample data and placeholder or licensed imagery. Do not reuse another product's name, logo, screenshots or marketing text. - Label demo testimonials and metrics as samples. Collect the minimum personal data the feature needs.
### Goal Build **Stillwater**, a reflective lifestyle blog about wellness, slow travel and simple living. Readers land on a warm hero card, browse featured essays and categories, and subscribe for new posts. The job: create a calm reading space that feels personal and invites return visits. ### Stack React 18 + TypeScript + Vite, Tailwind CSS, shadcn/ui (Radix), lucide-react. MDX content; Framer Motion for staggered card entry and header glass transition; react-hook-form + zod for newsletter; theme provider for dark mode. Backend only for newsletter (Edge Function or provider form). ### Pages & layout 1. **Home** – floating pill header inset 32px from edges (monogram circle + name, centered serif links, moon icon, dark "Join" pill); on scroll it turns translucent with backdrop blur. Hero: beige rounded panel (40px radius) with a rounded flat-lay photo left and, right, a 56px serif headline, short intro, dark pill CTA and three circular social buttons. A centered one-sentence serif statement. Featured articles (3 tall cards with image, dark gradient, category eyebrow, serif title, round arrow button). Latest by category. Newsletter panel. Footer with Explore/About columns. 2. **Category** pages (Wellness, Travel). 3. **Article** – serif title, author chip, hero image, 700px prose, share, related articles. 4. **About**. ### Design system `--background: #f9f6f1`, `--foreground: #2e2e2e`, `--panel: #e9e0d6`, `--panel-soft: #f3ede6`, `--primary: #2e2e2e`, `--muted-foreground: #68635e`, `--border: #e5dfd6` (decorative), `--input-border: #9c8563`. Dark: `--background: #1c1a18`, `--foreground: #efe9e1`, `--panel: #2a2622`, `--muted-foreground: #b5ada3`. Fonts: Merriweather 400/700 (headings, nav) + Nunito Sans 400/500 (body). Scale 14/16/18/24/32/56 (body 18px/1.7, ~70ch prose), headings tracking -0.03em. Radius: header 999px, panels 40px, cards 24px, image 24px. Shadows `0 12px 30px rgb(46 46 46 / .12)` on cards. Motion: entry 500ms with 80ms stagger; hover 200ms. ### Components & interactions FloatingHeader (solid/glass), ThemeToggle, HeroCard, CircleIconButton, StatementBlock, OverlayArticleCard (hover lift + arrow rotate 45°, focus ring), ArticleCard, NewsletterPanel (idle/loading/success/error), AuthorChip, ShareButtons, RelatedArticles, Footer. ### Data & state MDX frontmatter (title, slug, category, cover, excerpt, author, date, featured). Authors as a small typed list. Seed 9 original articles (self-care routines, slow travel, minimalism) with warm-toned placeholder photos and fictional authors. ### Accessibility White titles on photo cards sit on a `rgb(0 0 0 / .55)` gradient scrim so they hold 4.5:1 even over bright areas. Muted body text #68635e on #f9f6f1 ≈ 5.5:1 (4.5:1+ on the panels) -- do not lighten. Arrow buttons are part of a single card link (avoid nested interactive elements) or have their own labels. Glass header keeps sufficient contrast when over images. Reduced motion disables stagger and lifts. Theme toggle has an accessible name and `aria-pressed`. Verified contrast: body text #2e2e2e on #f9f6f1 = 12.6:1; muted text #68635e on #f9f6f1 = 5.5:1; muted text #68635e on #e9e0d6 = 4.5:1; white #ffffff on #2e2e2e = 13.5:1; white card titles #ffffff on #737373 = 4.7:1. ### Security Proportionate: newsletter email validated with zod client and server, honeypot and rate limiting, double opt-in; no keys in the client; sanitized MDX; external links `rel="noopener noreferrer"`. ### Performance & SEO Preload serif font weights actually used; lazy-load card images with fixed aspect ratios; pre-render routes. Meta/OG per article, Article schema, sitemap, RSS. Lighthouse 95+. ### Guardrails - Original, non-medical wellness copy; no health claims; placeholder imagery. - No fabricated testimonials or subscriber counts. - Only store emails with a clear unsubscribe. - Typed small components, no `any`, visible errors. - Done when: the header glass effect works over all sections, hero stacks correctly on mobile, cards are keyboard-accessible single links, dark mode passes contrast, and newsletter signup handles success and failure.