Bolt prompt for a waitlist landing page
This Bolt prompt scaffolds a flat, runnable waitlist project with the form logic isolated in one file, so the localStorage stand-in can be swapped for a backend later. Every state is specified: invalid input, success with a queue number, referral hook. Structure is all the prompt carries — style, palette, type, and motion arrive from the customizer.
Last updated
Scaffold a runnable waitlist splash project for {{product}} that I can watch live in the preview while we iterate. Keep the structure flat: index.html, src/style.css, src/main.js, and src/waitlist.js with all form logic isolated so the storage layer can be swapped later. Front end only for now — use localStorage as the stand-in store.
Build in this order:
1. Hero — a small-caps label with a launch-date placeholder, a headline framing the pain {{product}} removes for {{audience}}, a one-line subhead, then the capture form.
2. Proof band — a horizontal strip of three items: an avatar cluster with a joined count, a one-sentence founder note signed with a name, and a blurred screenshot placeholder captioned "shipping at launch".
3. The form, full treatment — label, email input, submit; invalid input shakes the field and prints a message under it; success collapses the form into a card reading "You're #N in line", N read from the stored count, plus an invite link promising a five-spot jump per referral.
4. FAQ — four details/summary elements, zero JS: launch window, launch pricing, email policy, referral mechanics.
5. Footer — one row: name, year, contact link.
Visual direction:
{{style}}
Palette: {{palette}}
Typography: {{type}}
Motion: {{motion}}
Spacing and breakpoints:
- 6rem between sections on desktop, 4rem under 768px; internal gaps step 0.5rem / 1rem / 2rem only.
- Under 640px the proof band stacks vertically and the input and button both go full width.
The primary call to action is "{{cta}}" — the submit button reads exactly that.
After building, confirm in the preview: a refresh keeps the queue number (localStorage); an invalid email can never reach the success state; each FAQ item opens without console errors; and the hero plus form fit a 375px screen with no horizontal scroll.Customize it
Runs in your browser. Nothing you type here is sent anywhere.
Scaffold a runnable waitlist splash project for a project management SaaS that I can watch live in the preview while we iterate. Keep the structure flat: index.html, src/style.css, src/main.js, and src/waitlist.js with all form logic isolated so the storage layer can be swapped later. Front end only for now — use localStorage as the stand-in store. Build in this order: 1. Hero — a small-caps label with a launch-date placeholder, a headline framing the pain a project management SaaS removes for engineering managers at startups, a one-line subhead, then the capture form. 2. Proof band — a horizontal strip of three items: an avatar cluster with a joined count, a one-sentence founder note signed with a name, and a blurred screenshot placeholder captioned "shipping at launch". 3. The form, full treatment — label, email input, submit; invalid input shakes the field and prints a message under it; success collapses the form into a card reading "You're #N in line", N read from the stored count, plus an invite link promising a five-spot jump per referral. 4. FAQ — four details/summary elements, zero JS: launch window, launch pricing, email policy, referral mechanics. 5. Footer — one row: name, year, contact link. Visual direction: Minimal dark style. Near-black canvas (#0A0A0B) with one elevated surface tone (#141416) for cards — never more than two surface steps. Hairline borders (1px, white at 8% opacity) instead of shadows; if a shadow is unavoidable use 0 1px 2px rgba(0,0,0,0.4) and nothing softer. Text in exactly three steps: white at 92% for headings, 60% for body, 40% for captions. Generous negative space — section padding at least 120px on desktop, 64px on mobile. The accent color appears only on interactive elements and one hero highlight, nowhere else. Palette: a strict neutral ramp (white, #F5F5F5, #E5E5E5, #737373, #171717) carries the entire interface; pick one accent and use it only for primary CTAs, active states, and a single hero highlight. If the accent appears more than five times per viewport it stops being an accent. Keep semantic colors (success, error) desaturated so the accent stays in charge. Typography: one geometric sans (a Futura/Poppins-class face) at three weights maximum (400/500/700). Scale: 64-88px hero, 32px section heads, 18px lede, 16px body, 13px caps labels with 0.08em tracking. Tight headline leading (1.05-1.1), relaxed body (1.6). Let the geometry carry the personality — no italics; weight and size do all hierarchy. Motion: none. Zero scroll animations, zero entrance effects — the page is fully composed the instant it paints. Spend the motion budget on input feedback instead: 120-150ms ease-out color and transform transitions on hover and press states only. Hold this constraint absolutely; it is a statement, not an omission. Spacing and breakpoints: - 6rem between sections on desktop, 4rem under 768px; internal gaps step 0.5rem / 1rem / 2rem only. - Under 640px the proof band stacks vertically and the input and button both go full width. The primary call to action is "start a free trial" — the submit button reads exactly that. After building, confirm in the preview: a refresh keeps the queue number (localStorage); an invalid email can never reach the success state; each FAQ item opens without console errors; and the hero plus form fit a 375px screen with no horizontal scroll.
Same task in other tools
Questions about this prompt
Why localStorage instead of a real backend?
It keeps the scaffold instantly runnable in Bolt's preview with zero keys or config, so you judge the design and the form states first. When ready, tell Bolt to replace the store in src/waitlist.js with a POST to Supabase or a serverless endpoint — the file boundary exists so that swap touches one file.
Bolt built it as a React app instead of the flat files I asked for — does it matter?
Functionally no, but if you want the flat structure, open a fresh project and lead with "plain HTML/CSS/JS, no framework" — Bolt honors stack constraints far better up front than retroactively. The section anatomy and acceptance checks work either way.
How does the "move up five spots" referral actually work here?
In the scaffold it's cosmetic: a link carrying a ref parameter plus copy promising the jump. Real reordering needs a backend that credits the referrer on each signup, so ask Bolt to add it when you wire storage — and soften the promise until it's live.
Part of the Bolt landing-page cluster — start from the main Bolt landing page prompt.