Template
Dogear Weekly
A single-purpose landing page for a creator newsletter, laid out as a bento grid framed by thick black lines. It pitches the newsletter, shows sample issues, benefits and the author bio, and converts visitors through two email forms leading to a thank-you page with sharing.
Creator newsletter landing page · 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
Montserrat stays for the ultra-black geometric cover lines, and Source Sans 3 is a quiet humanist body that reads well in the bento cards.
- MontserratHeadings: headlines 72px 900 at -0.05em
- Source Sans 3Body: body 16-18px grey
Who it is for
- Newsletter writers launching a list
- Creators and coaches
- Marketers growing email audiences
- Indie founders writing weekly updates
Layout
- Header: heavy black wordmark left, Issues/Benefits/About links and black pill 'Subscribe' right
- Bento hero inside a large rounded black-outlined frame: left cell with huge headline and subcopy; right top stat cell; right bottom photo cell with overlaid statement
- Full-width subscribe strip with pill email input and peach-pink gradient button
- Sample issues cards with drop caps / blockquotes
- Benefits grid
- Author bio with grayscale portrait and social circles
- Black CTA band with second form
- Footer inside the frame; separate thank-you route with share buttons
Palette
Bold, editorial, confident, warm, modern. A premium magazine cover crossed with a bento dashboard.
- background
#f4f4f5 - text
#000000 - primary black
#000000 - accent peach
#f9d4c8 - gradient pink
#eda2c0 - card
#f8f7f7 - border
#e4e4e7 - muted text
#52525b - input border
#8c8c99
Every checked pair, measured again
| Sample | Where | Ratio | Needs |
|---|---|---|---|
| Aa | body text on background | 19.11:1 | 4.5:1 |
| Aa | body text on card | 19.64:1 | 4.5:1 |
| Aa | grey subcopy on background | 7.03:1 | 4.5:1 |
| Aa | grey subcopy on card | 7.23:1 | 4.5:1 |
| Aa | black text on gradient button (pink stop) | 10.53:1 | 4.5:1 |
| Aa | black text on gradient button (peach stop) | 12.95:1 | 4.5:1 |
| Aa | white on black CTA band / Subscribe pill | 21.00:1 | 4.5:1 |
| Aa | white statement on photo scrim (rgb(0 0 0 / .6) over white) | 5.74:1 | 4.5:1 |
| input border on card | 3.10:1 | 3:1 | |
| black frame lines / focus ring on background | 19.11:1 | 3: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
- Montserrat 900, 72px, -0.05em tracking, sentence case
- Body
- Source Sans 3 400 16–18px grey
Ultra-black geometric display against quiet Source Sans 3 creates poster-like punch
Spacing and imagery
1200px outer frame with 2px black border and 24px radius; internal cells divided by 2px black lines; pill inputs/buttons; roomy 60px cell padding
Candid lifestyle photo of creators working together with a dark gradient overlay and text; grayscale author portrait; no illustrations.
Components
- Bento frame grid
- Heavy display headline
- Stat cell
- Photo cell with overlay text
- Subscribe strip
- Gradient pill button
- Sample issue cards
- Drop cap and blockquote styles
- Benefits grid
- Author bio with socials
- Dark CTA band form
- Thank-you page with share buttons
Interactions
- Smooth scroll to sections
- Framer Motion reveal on scroll
- Email validation with loading and success states
- Redirect to thank-you
- Share buttons open prefilled share links
- Button gradient shift on hover
Data
Subscriber{email, source(hero|footer), created_at, confirmed}Issue{title, excerpt, date, slug}Benefit{icon, title, text}Author{name, role, bio, portrait, socials[]}
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 **Dogear Weekly**, a one-page landing site for a weekly creator newsletter. It explains what readers get, shows sample issues, introduces the (fictional) author and converts with two signup forms, ending on a thank-you page that invites sharing. The job: turn a visitor into a subscriber in under a minute.
### Stack
React 18 + TypeScript + Vite, Tailwind CSS, shadcn/ui (Radix), lucide-react. Framer Motion for reveals; react-hook-form + zod for email forms; React Router for `/`, `/thank-you`, `/privacy`, `/terms`. Supabase: one `subscribers` table and an Edge Function that validates, rate-limits and inserts (or forward to a newsletter provider API from the function).
### Pages & layout
1. **Landing** – header with heavy wordmark, anchor links, black pill Subscribe. A single large rounded frame with a 2px black border holding a bento grid: hero cell (72px black headline, grey subcopy), stat cell ("read every Thursday", open-rate line), photo cell with a dark gradient and a white statement. A full-width subscribe strip (label, pill input, peach-to-pink gradient button). Then sample issues (3 cards with date, title, excerpt, drop-cap preview), a benefits grid (4–6 items), author bio (rounded grayscale portrait, bio, circular social buttons), a black CTA band with the second form and privacy note, footer -- all within the frame.
2. **Thank-you** – confirmation, "check your inbox", share buttons (prefilled text), back link.
3. **Privacy / Terms**.
### Design system
`--background: #f4f4f5`, `--foreground: #000000`, `--card: #f8f7f7`, `--muted-foreground: #52525b`, `--border: #e4e4e7` (decorative), `--input-border: #8c8c99`, `--frame: #000000`, gradient `linear-gradient(90deg, #f5bfae, #eda2c0)`. Fonts: Montserrat 800/900 (display, tracking -0.05em) + Source Sans 3 400/500. Scale 14/16/18/24/48/72 (body 16-18px/1.6, ~65ch). Radius: frame 24px, pills 999px, portrait 24px. Borders 2px black inside the grid. Motion: reveals 400ms ease-out; button hover shifts gradient position over 300ms.
### Components & interactions
Header, BentoFrame, HeroCell, StatCell, PhotoCell, SubscribeStrip & CtaForm (idle/validating/loading/success/duplicate/error), IssueCard with drop cap, Blockquote, BenefitItem, AuthorBio, SocialCircle, ShareButtons, Footer. Smooth-scroll anchors with offset for sticky header.
### Data & state
Static content objects for issues, benefits, author. `subscribers` table: email (unique, lowercased), source, created_at, confirmed. Use neutral placeholder numbers or omit counts rather than claiming a specific subscriber total.
### Accessibility
Gradient button carries black text (≥ 7:1 on peach/pink). White text on the photo sits on a `rgb(0 0 0 / .6)` scrim (≥ 5.7:1 even over white areas). Email inputs have visible or sr-only labels plus privacy text linked via `aria-describedby`; success/error announced in a live region. Headings in order (one h1). Reveal animations respect reduced motion. Social circles need accessible names. Verified contrast: body text #000000 on #f4f4f5 = 19.1:1; grey subcopy #52525b on #f4f4f5 = 7.0:1; black text #000000 on #eda2c0 = 10.5:1; white #ffffff on #000000 = 21.0:1; white statement #ffffff on #666666 = 5.7:1.
### Security
Validate email with zod client-side and again in the Edge Function; honeypot field; per-IP rate limit; double opt-in email with signed token. No provider API keys in the client. RLS: `subscribers` has no public select; inserts only through the function (service role). Share URLs encoded; external links `rel="noopener noreferrer"`.
### Performance & SEO
Single lightweight route; preload display font; optimize the photo (AVIF/WebP, sizes). Meta description, OG image, Twitter card. Lighthouse 95+ across the board.
### Guardrails
- Fictional author and placeholder photos; no real social proof numbers unless true.
- No fabricated reader testimonials.
- Store only the email and signup source.
- Typed small components, no `any`, visible errors.
- Done when: both forms subscribe with proper states, duplicates are handled gracefully, the thank-you page shares correctly, the bento grid collapses to one column on mobile without broken borders, and Lighthouse accessibility is 100.