Template
Rosewell
An editorial, magazine-style site for a holistic wellness and yoga platform offering online and in-person programs, coaching and a coach certification. Asymmetric image grids, a dusty-rose palette and long-form articles build trust, and the site steers visitors to a free trial, a session booking or a membership tier.
Editorial yoga and wellness platform · 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
DM Serif Display keeps the soft editorial voice, and Josefin Sans's elegant geometric caps give the nav and eyebrows a feminine wellness-magazine polish.
- DM Serif DisplayHeadings: hero 60px, section headings 48px, italic captions
- Josefin SansBody: body 16px at 1.7, uppercase nav, eyebrows, buttons
Who it is for
- Yoga and holistic wellness brands
- Online fitness and coaching platforms
- Aspiring wellness coaches seeking certification
- Members looking for flexible routines
Layout
- Header on dusty rose: serif wordmark left, uppercase links (Programs, Coaches, Certification, Blog) center, an outlined session pill and a filled deep-rose trial pill right
- Hero: large cocoa serif multi-line statement left, deep-rose get-started pill; right a cut-out yoga figure over a blurred rose circle
- Asymmetric 5/7 photo pair with italic serif captions
- Routine split: large photo left, eyebrow + serif heading right
- Alternating left-right coach profiles
- Three-tier pricing (Foundation, Unlimited, Certification)
- Programs grid with formats, scrolling three-row marquee ticker
- Staggered journal masonry of article cards
- Program detail pages (what you'll learn, weekly schedule, related), article pages with pull quotes, Join page
Palette
soft, nurturing, editorial, feminine, calm. It feels like a wellness magazine that you can join.
- cream background
#fef7ec - dusty rose hero/header
#dbbfb2 - primary rose
#d39797 - text cocoa
#5d3d37 - card taupe
#eaded6 - secondary
#e4d5cd - border
#cfbaaf
Every checked pair, measured again
| Sample | Where | Ratio | Needs |
|---|---|---|---|
| Aa | cocoa body text on cream | 9.02:1 | 4.5:1 |
| Aa | cocoa hero headline and nav on dusty rose | 5.53:1 | 4.5:1 |
| Aa | cocoa text on taupe cards | 7.27:1 | 4.5:1 |
| Aa | cocoa text on secondary | 6.72:1 | 4.5:1 |
| Aa | white text on primary-strong pills | 5.17:1 | 4.5:1 |
| Aa | primary-strong link text on cream | 4.85:1 | 4.5:1 |
| outlined pill border on dusty rose | 5.53:1 | 3:1 | |
| cocoa focus ring on cream | 9.02: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
- DM Serif Display 400, 60px hero (cocoa on dusty rose), 48px section headings in cocoa; italic serif captions
- Body
- Josefin Sans 16px, weight 400, line-height 1.7 for body; short Josefin Sans uppercase nav, eyebrows and buttons at 13 to 14px, weight 500, 0.2em tracking
Serif-led editorial voice with a clean sans for navigation and UI chrome.
Spacing and imagery
1216px container, asymmetric 5/7 and 7/5 splits, generous 128px sections, 16 to 20px radii on images and pill buttons, lots of cream whitespace.
Natural-light lifestyle photos of women practicing yoga and strength at home and in studios, rounded corners, italic captions; a cut-out hero figure on a soft rose glow.
Components
- Header with outline and filled pill CTAs
- Split hero with cut-out figure and glow
- Asymmetric captioned photo pairs
- Eyebrow + serif split sections
- Alternating coach profiles
- Three-tier pricing cards
- Program cards with format tags
- Program detail with learning outcomes and weekly schedule
- Three-row marquee ticker at different speeds
- Staggered masonry blog grid
- Article page with author, read time, pull quotes, related posts
- Join page
Interactions
- Fade-in entrance on headlines and hero
- Marquee rows scroll at varying speeds
- Sticky header with active route indicator
- Card hover lift on programs and articles
- Related content at the end of programs and articles
- Mobile drawer navigation
Data
Program{slug, title, format: online|studio|hybrid, level, summary, outcomes[], schedule[{day, time, session}], coachSlug, image}Coach{slug, name, specialties[], bio, photo}Article{slug, title, excerpt, author, readMinutes, cover, body, pullQuotes[], tags[]}Plan{name, price, period, features[], cta}TrialSignup{name, email, goal}
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 "Rosewell", an editorial website for a holistic wellness platform that offers yoga, strength and mindfulness programs online and in studios, plus a coach certification. The site should read like a calm lifestyle magazine: asymmetric photography, serif headlines and warm dusty-rose tones. It moves visitors toward a free trial, a booked session or a membership plan. ### Stack React 18 + TypeScript + Vite, Tailwind CSS, shadcn/ui (Card, Tabs, Sheet via Vaul, Form, Toast), lucide-react. Framer Motion for fades and the marquee. React Router for Home, Programs and program detail, Coaches, Certification, Blog and article, and Join. Content lives in typed TS or MDX. The free-trial and session forms (react-hook-form + zod) post to one serverless function; Supabase can store signups if needed. ### Pages & layout 1. **Header**: dusty rose, sticky, with a serif wordmark, uppercase links (active route underlined), an outlined "Book a session" pill and a filled `--primary-strong` "Start free trial" pill. 2. **Hero**: on the rose background, a large cocoa serif statement over about six lines with a deep-rose "Get started" pill. On the right, a cut-out figure in a meditative pose over a soft, blurred rose circle. 3. An asymmetric 5/7 photo pair with italic serif captions. 4. Routine split: large photo left; eyebrow, serif heading, copy and link right. 5. Coaches: six alternating left-right rows. 6. Plans: three plans (Foundation, Unlimited, Certification). 7. Programs grid with format tags and a three-row marquee of practice words at different speeds. 8. Journal: a staggered 4-column masonry of article cards. 9. **Program detail**: hero, what you'll learn, weekly schedule table, coach and related programs. 10. **Article**: title, author, read time, cover, long-form body with pull quotes, and related articles. 11. **Join**: plan comparison and trial form. ### Design system Tokens: `--background: #fef7ec` (cream), `--hero: #dbbfb2` (dusty rose), `--primary: #d39797`, `--primary-strong: #9e5a5a`, `--foreground: #5d3d37` (cocoa), `--card: #eaded6`, `--secondary: #e4d5cd`, `--border: #cfbaaf`, `--radius: 1rem`, pill buttons at 1.25rem. Fonts: DM Serif Display for headings and captions (italic), Josefin Sans 400/500 for nav, eyebrows, buttons and long body text. Scale: 60/48/32/22/17/13px; eyebrows 13px uppercase at 0.2em. Spacing: 8px base, 128px sections, 5/7 and 7/5 grid splits. Motion: 700ms fade-in; marquee rows at 30s, 45s and 60s. ### Components & interactions - Pills: filled `--primary-strong` with white text; hover darkens; focus shows a cocoa ring; outlined variant. - Program card: format tag chip; hover lift with image zoom 1.03. - Schedule: responsive table that becomes a stacked list on mobile. - Masonry: CSS columns with cards of varied height; keyboard order follows the DOM. - Trial form: name, email and goal Select, with success, error and loading states. - Marquee is decorative and pauses for reduced motion. ### Data & state `programs.ts`, `coaches.ts`, `articles/*.mdx` (frontmatter: title, excerpt, author, readMinutes, cover, tags), `plans.ts`. Related content comes from shared tags. No global state. Seed 6 fictional coaches, 6 programs and 8 articles, with invented captions for placeholder photos. ### Accessibility White fails on the dusty rose hero, so the hero headline is cocoa. Rose `#d39797` fails with both white and cocoa text, so it stays decorative and filled pills use `--primary-strong`. Captions must not be the only alt text; give images their own alt. The schedule table needs headers. Respect reduced motion for fades and marquee. Verified contrast: body #5d3d37 on #fef7ec = 9.02:1; hero #5d3d37 on #dbbfb2 = 5.53:1; pill #ffffff on #9e5a5a = 5.17:1; link #9e5a5a on #fef7ec = 4.85:1. ### Security Static content. Forms use zod validation on the client and in the function, plus a honeypot and rate limit, with API keys in function env. If article MDX includes HTML, sanitize it or disallow raw HTML. External links use `rel="noopener noreferrer"`. Do not collect health details in the trial form. ### Performance & SEO The site has many photos, so use responsive AVIF or WebP, lazy loading and fixed aspect ratios. Code-split article routes. Add Article JSON-LD, Course JSON-LD for the certification, per-page meta and OG tags, and an RSS feed for the blog. Target Lighthouse 90+. ### Guardrails - Use original copy and placeholder imagery only, with no trademarked names. - Do not present sample member captions or testimonials as real people. - Collect only the name, email and goal. - Keep components small and typed, with no `any`, and show errors visibly. - Done when: all routes render from content files; related content appears; hero and pill contrast pass AA; the marquee pauses for reduced motion; the masonry is keyboard navigable.