Template
Juvelle
A bright, confident marketing site for a customer-engagement CRM covering in-app onboarding, product analytics and micro-surveys. Saturated colour blocks and small UI snippets make each capability concrete for product and growth teams, and a 14-day trial and a sales contact are the two routes to convert.
Customer-engagement CRM landing site with colour-blocked split feature panels · Website · SaaS landing page · 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.
Start from this templateRead the build prompt
Typefaces
Inclusive Sans is a friendly, highly legible sans with a sturdy bold, so heavy headlines on saturated colour blocks stay clear and playful.
- Inclusive SansHeadings: H1 80px 700 at -1.5px, H2 56px at -0.5px
- Inclusive SansBody: lead 18px/1.8, body 16px/1.6 400, buttons 18px 500
Patterns
- bold stacked headline left with colour-block photo collage right
- blue solid plus outlined CTA pair with check-bullet row
- faint pixel/dot backdrop in hero
- colour-block cards (green, orange) with portrait cut-out and floating UI snippets
- customer story strip under hero collage
- large greyscale logo marquee
- half-and-half feature panels alternating tint and saturated colour
- flow diagrams with dashed connector arrows between UI cards
- in-app survey and modal mock cards
- integrations icon grid on grey band
- testimonial cards with star rows
- three-package pricing
- FAQ accordion and closing CTA
States it is designed for
- Trial sign-up: email validation, password rules, submitting, verification email sent, error
- Contact sales form: required fields, success, error
- Pricing: selected billing period persists in URL
- Blog: category filter empty state
- Integration tile tooltips on touch appear on tap
- Reduced motion: snippet cards static
Who it is for
- product managers
- growth and lifecycle marketers
- customer-success teams
- SaaS founders
Layout
- Header: logo left, links centre-right, white outlined 'buy/get' button
- Hero on light grey with faint pixel backdrop: 4-line bold H1, paragraph, blue solid trial button and outlined sales button, three check bullets; right side collage of a green stat card, cut-out portrait, orange card with UI snippets, and a story strip (avatar tile, name, role, 'see story' outlined button)
- Logo marquee with caption
- Feature panels: full-width rounded containers split 50/50 – text half on a pale tint, visual half on a saturated colour with UI cards linked by dashed arrows; alternating sides (onboarding green, analytics orange, feedback blue)
- Integrations: grey band, centred H2, 6x2 icon tile grid, blue button
- Testimonials: two-up cards with stars, quote, avatar, name, role; 'explore reviews' button
- Pricing: three packages; FAQ; closing CTA with trial button; footer
- Mobile: hero centres and stacks buttons full-width; collage below; panels stack visual under text
Palette
Energetic, clear, product-led. Saturated colour blocks feel playful but the layout stays disciplined.
- background
#ffffff - hero / band grey
#f8f8f8 - ink
#0b0b0c - body text
#3c3c3d - muted text
#545455 - primary blue (fixed)
#316afd - panel blue
#487afd - green panel
#31d097 - green icon on white (fixed)
#26a879 - orange panel
#f06e2e - pale blue tint
#ecf1ff - blush tint
#fcefea
Every checked pair, measured again
| Sample | Where | Ratio | Needs |
|---|---|---|---|
| Aa | body text on white | 11.02:1 | 4.5:1 |
| Aa | body text on pale blue | 9.76:1 | 4.5:1 |
| Aa | muted text on grey band | 7.12:1 | 4.5:1 |
| Aa | button label on blue | 4.55:1 | 4.5:1 |
| Aa | ink text on green panel | 9.93:1 | 4.5:1 |
| large white title on orange panel | 3.01:1 | 3:1 | |
| large white title on blue panel | 3.83:1 | 3:1 | |
| check icon green on white | 3.02:1 | 3:1 | |
| outlined button border | 7.56:1 | 3:1 | |
| focus ring blue | 4.55: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
- Inclusive Sans 700: H1 80px/1.1 at -1.5px; H2 56px/1.15 at -0.5px
- Body
- Inclusive Sans 400, 18px/1.8 for lead paragraphs, 16px/1.6 elsewhere; buttons 18px 500
Heavy, friendly headlines; plenty of line-height in body copy. Text on saturated panels is either ink (green) or white at 24px+ (orange, blue).
Spacing and imagery
1200px container with 16px gutter, 48px between feature panels, 120px sections. Radius 24px panels, 16px UI cards, 8px buttons, 12px icon tiles. UI cards shadow 0 8px 24px rgba(11,11,12,0.08).
Cut-out portrait over solid colour blocks; small white UI snippets (checklists, modals, surveys, charts) linked by dashed arrows; flat colourful integration icons; round avatar photos.
Components
- Header
- Primary blue button
- Outlined button
- Check bullet row
- Hero colour-block collage
- Stat card
- Story strip
- Logo marquee
- Split feature panel
- Flow snippet cards with dashed connectors
- Chart snippet
- Survey snippet
- Modal snippet
- Integration icon tile
- Testimonial card with stars
- Pricing card
- FAQ accordion
- CTA band
- Contact form
Interactions
- Snippet cards in panels float in sequence along the dashed path when panel enters view
- Integration tiles lift and show a tooltip label on hover/focus
- Buttons: blue darkens on hover, outlined fills grey; focus ring 2px blue offset 2px
- Logo marquee continuous, pausable
- Pricing monthly/annual toggle
- Testimonial cards slight tilt on hover (disabled under reduced motion)
Data
FeaturePanel{order, title, description, colour (green|orange|blue), tint, snippets[{type (checklist|modal|chart|survey|toast), text}]}Integration{slug, name_generic, category, icon}Testimonial{quote, name, role, company_alias, rating}Plan{id, name, price_monthly, price_annual, features[], cta}Faq{question, answer}SalesLead{name, work_email, company, seats, message, created_at}
Guardrails
Experience
- Each split panel covers one capability with a headline, two-sentence copy and one visual flow
- Alternate panel sides and colours in a fixed order (green, orange, blue)
- Trial CTA always blue; sales CTA always outlined
- UI snippets use generic, readable placeholder text without template syntax
- Integration tiles show names on hover and in a visible list for screen readers
- Testimonials use invented names and roles with no @-mentions
Accessibility
- Text on the green panel is ink, not white
- White text on orange and blue panels only at 24px+ (3:1)
- Primary buttons use #316afd so white labels pass 4.5:1
- Star ratings announced as text
- Dashed connectors and pixel backdrop are aria-hidden
- Marquee pausable, reduced motion respected
Security
- Trial sign-up via hosted auth with email verification and rate-limited attempts
- Sales lead form validated on server with zod; honeypot
- RLS on sales_leads (server insert only) and profiles (owner only)
- Privacy and terms pages linked from all forms
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 an entry'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 entries) - 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. ### SaaS screen baseline - Design every screen for its full set of states: first-run empty, loading skeleton, partial data, error with retry, permission-denied, and success feedback. Each entry lists the states its screen needs. - Keep destructive actions (delete, revoke, downgrade, remove member) behind a confirmation that names the object, and prefer undo over a second dialog where the action is reversible. - Enforce authorisation on the server for every action a screen exposes. Hiding a button is not access control; check the role again in the API or RLS policy. - Never show secrets (API keys, tokens) in full after creation. Show them once, then mask them, and offer rotate and revoke. - Keep the app shell (navigation, workspace switcher, account menu) consistent across screens, and preserve filters, sort and scroll position when the user navigates back.
### Goal Build **Juvelle**, the marketing site for a customer-engagement CRM that combines in-app onboarding flows, product analytics and micro-surveys. The design uses bold headlines, saturated colour blocks and small UI snippets joined by dashed arrows, so each capability is visible at a glance. The two conversions are a 14-day trial and a sales contact. ### Stack Next.js + TypeScript, Tailwind CSS, shadcn/ui (accordion, tooltip, tabs), Motion for snippet sequences, lucide-react icons, react-hook-form + zod. Supabase handles trial sign-up auth and a sales-leads table. MDX for blog. ### Pages & layout 1. **Home**: header (logo, links, outlined button). Hero on `--grey` with a faint pixel backdrop: a bold four-line H1, lead paragraph, blue trial button, outlined sales button and three check bullets. The right-side collage has a green stat card (ink text), a cut-out portrait, an orange card with UI snippets, and a story strip (icon tile, invented name, role, outlined "Read story"). Then a logo marquee; three split feature panels (pale tint text half plus a saturated visual half with snippet cards and dashed connectors), alternating sides; integrations on a grey band (6x2 icon tiles plus button); two-up testimonials; three pricing packages; FAQ; closing CTA; footer. 2. **About**, **Pricing**, **Testimonials**, **Blog** + post, **Contact**, **Privacy**, **Terms**, plus **Sign up** for the trial. Mobile: the hero centres and buttons go full-width; panels stack with the visual below the text; icon tiles go 3 per row. ### Design system - Colors: `--bg: #ffffff`, `--grey: #f8f8f8`, `--ink: #0b0b0c`, `--text: #3c3c3d`, `--muted: #545455`, `--blue: #316afd` (buttons), `--blue-panel: #487afd`, `--green: #31d097`, `--green-icon: #26a879`, `--orange: #f06e2e`, `--tint-blue: #ecf1ff`, `--tint-blush: #fcefea`, `--tint-mint: #e8f8f1`. - Fonts: Inclusive Sans only, from Google Fonts. H1 80px/1.1 at 700 and -1.5px; H2 56px/1.15; lead 18px/1.8; body 16px/1.6. - Spacing: 8px base, 48px between panels, 120px sections. - Radius: 24px panels, 16px snippet cards, 12px icon tiles, 8px buttons. - Shadow: snippet cards `0 8px 24px rgb(11 11 12 / .08)`. - Motion: snippet cards enter 120ms apart along the dashed path; 200ms hovers. ### Components & interactions Header, BlueButton, OutlineButton, CheckBullets, PixelBackdrop (aria-hidden), HeroCollage (StatCard, Portrait, SnippetStack, StoryStrip), LogoMarquee (pause), SplitPanel (tint half, colour half, Snippet types checklist/modal/chart/survey/toast, DashedConnector), IntegrationGrid (tooltip on hover, focus and tap; sr-only list), TestimonialCard (stars announced), PricingCards with toggle, FaqAccordion, CtaBand, SignUpForm, SalesForm. ### Data & state Typed data for feature panels (with snippet definitions), integrations, testimonials, plans and FAQ. Tables: `sales_leads(id, name, work_email, company, seats, message, created_at)` and `profiles(id, user_id, full_name, company)`. The billing period is a URL param. All names and figures are invented. ### Accessibility Use ink on green and white only at 24px+ on orange and blue panels. Buttons use `--blue`. Connectors and backdrop are aria-hidden. Snippets include readable text or an aria-label summary. Stars are announced as text. Focus ring: 2px `--blue` with offset. Reduced motion shows snippets statically. Verified contrast: body text on white: #3c3c3d on #ffffff = 11.02:1; body text on pale blue: #3c3c3d on #ecf1ff = 9.76:1; muted text on grey band: #545455 on #f8f8f8 = 7.12:1; button label on blue: #ffffff on #316afd = 4.55:1; ink text on green panel: #0b0b0c on #31d097 = 9.93:1; large white title on orange panel: #ffffff on #f06e2e = 3.01:1; large white title on blue panel: #ffffff on #487afd = 3.83:1; check icon green on white: #26a879 on #ffffff = 3.02:1; outlined button border: #545455 on #ffffff = 7.56:1; focus ring blue: #316afd on #ffffff = 4.55:1. ### Security Trial sign-up uses Supabase Auth with email verification, a password policy and rate limiting. Sales leads go through a server route with zod and a honeypot. RLS: `sales_leads` allows server inserts only with no anon select; `profiles` is owner-only (`user_id = auth.uid()`). Forms link to the privacy and terms pages. ### Performance & SEO Statically generate marketing pages. Export the portrait cut-out as AVIF with transparency fallback to WebP. Build snippets in HTML/CSS. Load Inclusive Sans 400/500/700. Give each page unique metadata and add Product and Review JSON-LD only for real reviews. Target LCP under 2s. ### Guardrails - Use original copy; invented people, companies and stats; generic integration icons. - Keep the panel colour order fixed; one saturated colour per panel. - Acceptance criteria: (1) all three panels animate once and are static under reduced motion; (2) no white body text on green; (3) trial sign-up covers every state; (4) integration names are available to screen readers; (5) the listed contrast pairs pass.