Skip to main content
vibld

Template

Hollerday

A bold, poster-inspired and playful wedding site with a red marquee banner, heavy black serif names, cheeky copy, a curved pink story section with stat counters, block-shadow detail cards, a photo gallery and a celebratory RSVP. It is for couples who want humor and graphic punch rather than soft romance.

Poster-style wedding site · Website · Events and bookings · static site

A mock-up of the homepage, drawn from this design’s layout, palette and typefaces. A build follows the full prompt below.

Add app screens

Pick up to 6 screens, such as a dashboard, settings or an empty state. Each is built in this design’s own palette and typefaces, with its states and guardrails.

Account setup
Add edit
Analytics
Appearance
Calendar
Chat
Checklist
Checkout
Confirmation
Dashboard
Delete account
Details
Discovery questions
Empty state
Flowchart
Import export
Inbox
Integrations
Invite team
Loading
Login
Onboarding
Plans
Playground
Product tour
Referral
Search
Settings
Share
Sign up
Success
Table
Team members
Text editor
Upgrade
Usage
Verification
Welcome

Start from this templateRead the build prompt

Typefaces

Bodoni Moda's black weight gives a sharper, louder didone for gig-poster caps, and Rubik's slightly rounded grotesk keeps the jokes cheerful and readable.

  • Bodoni ModaHeadings: names 128px 900 uppercase at -2.5%, italic ampersand, two-tone section heads
  • RubikBody: body 16px, red tracked uppercase eyebrows

Who it is for

  • Couples wanting a standout, funny site
  • Wedding planners
  • Photographers presenting portfolios
  • Agencies reusing one design for many clients

Layout

  1. Full-width red marquee bar with 'FINALLY • YES • FOREVER • LET'S GO' repeating
  2. Navy date label box above giant black serif stacked names with a red ampersand between rules
  3. Playful subline and 'Scroll' cue with red arrow
  4. Curved pink section: 'Our Story' with photo left, story text right, and stat counters (4 years, infinity adventures, 1 forever)
  5. Wavy divider into 'Save the date -- The Details' with two-tone headline
  6. Offset block-shadow cards for ceremony ('The I Do's') and party
  7. 'Moments' interactive photo gallery
  8. 'We Can't Wait to Celebrate With You' RSVP and footer; dark mode toggle

Palette

Bold, cheeky, graphic, joyful, loud. It feels like a gig poster announcing a wedding.

  • background (warm white)#fbf7f4
  • text (ink navy)#18212b
  • primary (poster red)#c42130
  • secondary (blush)#f7dee2
  • accent (navy)#183559
  • card#f7f2ed
  • border#e4d9cd

Every checked pair, measured again

SampleWhereRatioNeeds
Aaink body text on warm white15.27:14.5:1
Aared eyebrow text on warm white5.46:14.5:1
Aared text on blush section4.57:14.5:1
Aawhite marquee text on red bar5.82:14.5:1
Aawarm-white label on navy date box11.65:14.5:1
Aaink text on blush12.78:14.5:1
Aaink text on card14.62:14.5:1
Aadark mode body text15.92:14.5:1
Aadark mode primary text5.08:14.5:1
Aadark mode label on primary5.08:14.5:1
input border on warm white3.15:13:1

As vibld’s tokens

The palette on the 15+ color tokens vibld styles a project with, each text color 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
Bodoni Moda 900, 128px uppercase names with -2.5% tracking; two-tone section headlines
Body
Rubik 16px; tracked uppercase eyebrows in red

Black-weight didone in caps gives poster drama; the plain sans keeps jokes readable.

Spacing and imagery

Centered hero with lots of air, full-bleed curved/wavy section edges, offset hard shadows on cards, 8px radius.

Warm golden-hour couple photos with rounded corners; strong color blocks and curved dividers instead of ornaments.

Components

  • Red marquee banner
  • Date label box
  • Stacked poster names with red ampersand
  • Scroll cue
  • Curved section divider
  • Story split with photo
  • Stat counters
  • Wavy divider
  • Two-tone section headline
  • Block-shadow detail cards
  • Interactive gallery
  • RSVP form
  • Dark mode toggle

Interactions

  • Infinite marquee
  • Counters animate on view
  • Scroll-triggered animation library (fade, slide, pop)
  • Gallery lightbox/carousel
  • Card hover shift of hard shadow
  • RSVP validation and toast
  • Dark mode toggle

Data

  • Couple{a, b, date, tagline}
  • Stat{value, label}
  • Detail{title, time, venue, address, notes}
  • Photo{src, alt, caption}
  • RSVP{name, email, attending, guests, dietary, songRequest}

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 color 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, labeled 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 **Hollerday**, a loud, funny, poster-style wedding site for fictional couple Priya & Leo. Guests should grin at the first screen, learn the story in a few punchy lines, find the details quickly and RSVP. The look is a gig poster: big black serif caps, poster red, navy labels, blush color fields and curved section edges.

### Stack
React 18 + TypeScript + Vite, Tailwind CSS, shadcn/ui (Form, RadioGroup, Input, Dialog, Switch), lucide-react, Embla Carousel for the gallery, Sonner for toasts, Vaul for a mobile menu, react-hook-form + zod, a small CSS animation library (fade-up, pop, slide) driven by IntersectionObserver. Theme tokens as CSS variables with a dark mode. RSVP posts to a serverless function or Supabase insert-only table.

### Pages & layout
1. **Marquee** – full-width poster-red bar with a repeating four-word chant in white bold caps.
2. **Hero** – navy rectangle label with the date in tracked caps; the two names stacked in a black-weight serif, with a red italic ampersand between two red rules; a cheeky one-line invitation; "Scroll" with a red arrow. The bottom of the hero curves into a blush section.
3. **Our story** – split: rounded photo left; right, a heading in two tones, three short paragraphs and three stat counters (years together, an infinity symbol for adventures, "1 forever").
4. **The details** – wavy divider; red eyebrow "Save the date"; headline with the second word in red; two cards with hard offset shadows (navy and red blocks), one for the ceremony and one for the party, each with time, venue, address, dress code.
5. **Moments** – gallery carousel with captions and a lightbox.
6. **RSVP** – "We can't wait…" headline, form, footer with a dark-mode switch.

### Design system
- Tokens: `--background: #fbf7f4`, `--foreground: #18212b`, `--primary: #c42130`, `--primary-foreground: #fbf7f4`, `--secondary: #f7dee2`, `--accent: #183559`, `--card: #f7f2ed`, `--border: #e4d9cd` (decorative), `--input-border: #a98660`, `--radius: 0.5rem`. Dark: background `#11161d`, foreground `#f5efe9`, secondary `#2a1d22`, primary `#e95360`, primary-foreground `#11161d`.
- Fonts: Bodoni Moda (900 caps, italic for ampersand) and Rubik. Scale: 12 (eyebrows, +0.25em) / 16 / 18 / 24 / 40 / 64 / 96 / clamp(72px, 12vw, 128px).
- Spacing: 8px base, sections 128px; hard shadows `8px 8px 0 var(--accent)`.
- Motion: marquee 25s linear; counters 1s ease-out; card hover moves shadow to 4px/4px over 150ms; pop-in 400ms spring.

### Components & interactions
Marquee (pause control), date label, poster name block, scroll cue, curved and wavy SVG dividers, stat counter, two-tone heading, block-shadow card (hover/focus), gallery (arrows, swipe, keyboard, lightbox), RSVP form (attending, guest count, names, dietary, song request; errors; submitting; success toast plus confetti-free thank-you; error), dark mode switch (persisted, no flash).

### Data & state
`Couple{a,b,dateISO,tagline}`, `Stat{value,label}`, `Detail{title,time,venue,address,dressCode}`, `Photo{src,alt,caption}`, `Rsvp{name,email,attending,guests,guestNames[],dietary,song}`. One typed config; swapping names, colors and fonts should rebrand the whole site. Placeholder couple photos only.

### Accessibility
Poster red is set to `#c42130` so eyebrows and links pass on warm white (5.5:1), blush (4.6:1) and cards (5.2:1), and white marquee text on the red bar reaches 5.8:1. Dark mode uses primary `#e95360` (5.1:1 on `#11161d`). Inputs use `--input-border: #a98660`; `#e4d9cd` borders are decorative. Marquee is decorative (`aria-hidden`) and stops under reduced motion. Infinity counter needs a text alternative ("countless adventures"). Hard-shadow cards remain readable in dark mode. Form uses labels and announced errors.
Verified contrast: ink body text on warm white #18212b on #fbf7f4 = 15.27:1; red eyebrow text on warm white #c42130 on #fbf7f4 = 5.46:1; red text on blush section #c42130 on #f7dee2 = 4.57:1; white marquee text on red bar #ffffff on #c42130 = 5.82:1; warm-white label on navy date box #fbf7f4 on #183559 = 11.65:1.

### Security
Proportionate: zod schema on client and function, honeypot, rate limit, optional invite code, no secrets shipped, insert-only storage, `rel="noopener noreferrer"` for map links, no public guest list.

### Performance & SEO
Only a few photos: responsive and lazy except the first story photo. Inline the SVG dividers. Font subsets for the black weight. `noindex` default, OG image that looks like the poster. Lighthouse 95+.

### Guardrails
- Fictional couple and placeholder photos; no real venues or brands.
- Keep humor original; no copied jokes or quotes from real people.
- Minimal RSVP data.
- Small typed components, no `any`, visible errors.
- Done when: marquee, hero, story, details, gallery and RSVP render from config; red text meets AA where small; dark mode has no flash and keeps contrast; reduced motion disables marquee and pops.

Open the builderAll templatesThis palette on its own