Template Vanilla Site MIT
Product Launch
A clean, restrained product launch / waitlist landing page for a dev-focused product, built with semantic HTML, CSS, and vanilla JavaScript. Light, neutral, and typography-driven: a sticky header with brand mark, anchor nav, theme toggle, and responsive mobile drawer; an editorial hero with a clamp() headline, status meta, and a working waitlist card (name + email validation, simulated submission, success state, beta-capacity progress bar); a social-proof logo row; a three-column feature grid; a four-step how-it-works list; a two-plan pricing teaser; a single-open FAQ accordion (CSS-grid 0fr->1fr, aria-expanded/controls/region); and a final CTA panel + footer. Split into modular files: code.html + style.css (the --ds-* design-token system from design-tokens.md, light-default + calm opt-in dark mode, reduced-motion guard) + script.js (theme toggle, mobile nav, accordion, waitlist form validation, reveal), with preview.html as a self-contained single-file preview. No React, Vue, Next.js, Tailwind, Bootstrap, or backend.
- Vanilla
- HTML
- Pages
- Site
- Stack
- Vanilla HTML/CSS/JS + HTML
- Theme
- System
- Responsive
- Yes
- Files
- 7
- License
- MIT
Preview
The whole site, live.
Scroll inside the frame, switch viewports, or open the raw preview in a new tab — it is the same file the CLI installs.
devsnips.dev/templates/vanilla/product-launch/ What's inside
Everything the folder ships.
Straight from the registry's metadata — every line maps to a file you can open in the source tabs below.
- sticky header with brand mark, version badge, anchor nav, theme toggle, and responsive mobile drawer (aria-expanded)
- editorial hero with clamp() headline, status meta row (status / launch / platforms)
- working waitlist card: name + work-email fields with inline validation, simulated submission, success state, and beta-capacity progress bar
- social-proof logo row
- three-column responsive feature grid (six features)
- four-step how-it-works list with numbered rail
- two-plan pricing teaser (Free / Team) with per-team pricing and feature lists
- single-open FAQ accordion (CSS-grid 0fr->1fr, aria-expanded/aria-controls/role=region, chevron rotate)
- final CTA panel with primary + secondary actions
- light-default theme with calm opt-in dark mode (no-flash pre-paint script + persisted toggle)
- IntersectionObserver scroll-reveal (.reveal -> .is-visible, reduced-motion safe)
- DevSnips --ds-* shared design-token layer (design-tokens.md) with template tokens on top
- hairline 1px borders, small controlled radii, restrained shadows, single controlled accent
- modular file split (code.html + style.css + script.js)
Technical
Stack, scripts, structure.
Everything you need to know before you install.
root 4
-
AGENTS.mddoc -
metadata.jsonconfig -
preview.htmlpreview -
README.mddoc
pages/ 3
-
code.htmlcode -
script.jscode -
style.csscode
Install
One command, whole folder.
Pulls the template into your project through the DevSnips CLI. The registry path below is stable across the CLI, MCP server and Skills.
npx devsnips add Vanilla/Templates/product-launch Vanilla/Templates/product-launch AI-ready
Hand the whole job to your agent — Cursor, Cline, Claude Code or Windsurf. One prompt installs the template, fixes the theme toggle, optimises it and reshapes it for what you are building.
Scaffold the DevSnips template "Product Launch" (Vanilla/Templates/product-launch) into this project, then audit, fix and tailor it. 1. Install — if the DevSnips MCP server is connected, fetch the resource with get_resource(id="Vanilla/Templates/product-launch"). Otherwise run npx devsnips add Vanilla/Templates/product-launch and install the dependencies the template declares. 2. Audit — check the template end to end before changing anything: theme toggling (dark/light), responsive behaviour, accessibility, unused files and assets. 3. Fix — repair what the audit found, starting with the theme toggle: it must persist across reloads, never flash the wrong theme on first paint, and every component must read the same tokens in both modes. 4. Optimise and adapt — trim what the site does not need, then customise the template for the product being built here: replace the placeholder branding, copy, imagery, navigation and routes so it reads as this project rather than as a demo.
devsnips://templates/product-launch The same path the CLI, MCP server and Skills resolve — one registry, one resource URI.
Source
Read it before you ship it.
The README, manifest and entry document — verbatim, straight from the registry.
# Product Launch
A clean, restrained product launch / waitlist landing page for a dev-focused product. Part of the DevSnips Vanilla Templates collection and built on the shared [`design-tokens.md`](../design-tokens.md) `--ds-*` token system.
## Design language
Minimal · light · editorial · neutral · typography-driven · restrained.
- Light-default, calm opt-in dark mode (no-flash, persisted).
- Hairline 1px borders over shadows; small controlled radii.
- Inter (text) + JetBrains Mono (labels / metadata), system fallbacks.
- Single controlled blue accent; neutral-first palette.
- One primary action per section; hierarchy from type and spacing.
## Structure
```
product-launch/
├── pages/
│ ├── code.html # HTML structure (links style.css + script.js)
│ ├── style.css # design system (--ds-* tokens)
│ └── script.js # theme toggle, mobile nav, accordion, waitlist form, reveal
├── preview.html # self-contained single-file preview (inlines CSS+JS)
├── metadata.json
└── README.md
```
`preview.html` opens directly with no backend. The modular files in `pages/` are for customization.
## Sections
1. **Header** — brand mark + version badge, anchor nav, theme toggle, mobile drawer.
2. **Hero + waitlist** — editorial `clamp()` headline, status meta, working waitlist card (validation + success + progress bar).
3. **Social proof** — company logo row.
4. **Features** — three-column grid (six features).
5. **How it works** — four-step numbered list.
6. **Pricing** — two-plan teaser (Free / Team), per-team pricing.
7. **FAQ** — single-open accordion (CSS-grid, ARIA).
8. **Final CTA** — primary + secondary actions.
9. **Footer** — copyright + footer links.
## Interactions
Scoped, dependency-free vanilla JS:
- Theme toggle (light ↔ dark, persisted, no-flash pre-paint).
- Mobile nav drawer (`aria-expanded`, Esc closes, auto-close on link click).
- FAQ accordion (single-open, `aria-expanded`/`aria-controls`/`role=region`).
- Waitlist form (name + email inline validation, `aria-invalid` + `aria-live` errors, simulated submission, success state, count bump).
- Scroll-reveal (`.reveal` → `.is-visible`, reduced-motion safe).
## Accessibility
Skip link, semantic landmarks, single `h1`, ARIA on the accordion and form, `role=img` progress bar, `:focus-visible` rings, native controls throughout, `prefers-reduced-motion` guards.
## Responsive
Three breakpoints (640 / 768 / 1024). Zero horizontal overflow at 320–1920px. Header CTA hides on very small screens (available in the drawer); feature/pricing grids reflow; hero splits to two columns on desktop.
## Dependencies
Google Fonts (Inter + JetBrains Mono). No framework, no build step. # AGENTS.md — Product Launch
Guidance for an AI agent adapting this template. Read this before editing.
## What this template is
A clean, restrained product launch / waitlist landing page for a dev-focused product. Single page: header, hero + waitlist, social proof, features, how it works, pricing, FAQ, final CTA, footer.
## Design system
Built on the shared [`design-tokens.md`](../design-tokens.md) `--ds-*` token system. **Light-default**; calm opt-in dark mode (no-flash, persisted). Inter + JetBrains Mono. Hairline borders, small radii, single controlled blue accent, one primary action per section.
## File layout
```
product-launch/
├── pages/
│ ├── code.html # HTML structure (links style.css + script.js)
│ ├── style.css # design system (--ds-* tokens)
│ └── script.js # theme toggle, mobile nav, FAQ accordion, waitlist form, reveal
├── preview.html # self-contained preview (inlines CSS+JS)
├── metadata.json
└── README.md
```
## How to adapt it
1. **Swap the product**: edit `pages/code.html`—brand mark, name, version badge, hero headline/lede, status meta, feature copy, how-it-works steps, pricing tiers, FAQ items.
2. **Wire the waitlist to a backend**: the form in `script.js` currently simulates submission. Replace the success path with a real `fetch` to your endpoint; keep the inline validation and `aria-live` error messages.
3. **Rebrand**: edit the `--ds-*` tokens in `pages/style.css` `:root`—keep one controlled accent.
4. **Rebuild the preview**: run `python3 ../_build_preview.py .` from the template folder.
## Do not
- Do not add glassmorphism, neon, gradients, gradient text, or oversized hero/decoration.
- Do not introduce a framework. Vanilla HTML + CSS + JS only.
- Do not remove form validation or ARIA on the accordion/form.
## Quality bar
Skip link, semantic landmarks, single `h1`, ARIA on the FAQ accordion (`aria-expanded`/`aria-controls`/`role=region`), form `aria-invalid` + `aria-live` errors, `role=img` progress bar, `:focus-visible` rings, reduced-motion guard. Run `python3 scripts/qa/resources/qa_vanilla.py` after changes. Validate with `python3 scripts/qa/resources/_qa_template.py Vanilla/Templates/product-launch/preview.html`.