AI Assistant
The streaming answer, with its citations
An agent product’s working surface: transcript, reasoning, tool calls and the approval card, with sign-in and settings around it. Wiring a model in is your half.
The whole thing: marketing site, sign-in, dashboard, customer list, settings and billing. Eight routes, one runtime dependency.
app/billing/page.tsxapp/customers/page.tsxapp/dashboard/page.tsxapp/globals.cssapp/layout.tsxapp/login/page.tsxnpx hoverlab init saas-starter ./my-app
Or over MCP, from your editor's agent — no account needed.
Free to read, copy and install, for personal and non-commercial projects. Shipping it in client work or a paid product needs Pro ($79 once). The source lands in your repo and stops being ours — no attribution, nothing to upgrade.
/No component library to adopt, no design system to negotiate, no runtime to ship.
Trusted by teams shipping every day
The parts you would otherwise rebuild on every project.
No runtime, no hydration cost, no waterfall. What you paste is what the browser paints.
Copied code lives in your repo. Nothing phones home and nothing breaks when we ship.
Nothing to audit.
Every piece works alone or nested inside the next one up.
Keyboard paths, focus rings and reduced-motion fallbacks included.
Priya R., Staff Engineer
Whichever seat you are in, the work starts further along.
Ship polish without the busywork
Close the gap between the mock and the build
Make an MVP feel like a funded product
Read patterns that are actually in production
No install step, no configuration file, no build plugin.
import { PricingTiers } from '@/components/pricing-tiers'import { FaqAccordion } from '@/components/faq-accordion' export default function Page() { return ( <main> <PricingTiers /> <FaqAccordion /> </main> )}From teams that ship on a deadline.
“We replaced a week of design polish with an afternoon. The parts that used to get cut for time are just there now.”
“Dropped it in on a Friday and shipped Monday. No dependency argument with my team for once.”
“The thing I did not expect: it made our junior engineers faster, because the patterns are readable. They learn from what they paste.”
“Our marketing site went from three weeks to four days. Same designer, same headcount.”
“I stopped keeping a personal snippets file. That file had been following me between jobs for six years.”
Start free. Upgrade when it starts paying for itself.
Everything you need to try it properly.
For working developers shipping real products.
Shared access and billing for a whole team.
Every line, side by side.
| Feature | Free | ProPopular | Team |
|---|---|---|---|
| Projects | 3 | Unlimited | Unlimited |
| Commercial license | Not included | Included | Included |
| Full component library | Not included | Included | Included |
| Figma source files | Not included | Included | Included |
| Seats | 1 | 1 | Up to 10 |
| SSO and audit log | Not included | Not included | Included |
| Support | Community | Priority email | Dedicated |
Everything people ask before getting started.
Yes. Everything here is yours to ship in client work and paid products, with no attribution required.
No. The markup is plain HTML and the styling is utility classes, so it drops into any stack that can render an element.
Copied code is yours — nothing reaches back into your project. Pull a newer version whenever you want it.
There is. A large part of the catalog is free forever; the paid plan unlocks the rest and removes usage limits.
Most of what ships started as someone asking for it.
Start free and stay free until it is worth paying for. Every plan includes the full library — the tiers differ on scale and support, never on quality.
Everything you need to try it properly.
For working developers shipping real products.
Shared access and billing for a whole team.
Every line, side by side.
| Feature | Free | ProPopular | Team |
|---|---|---|---|
| Projects | 3 | Unlimited | Unlimited |
| Commercial license | Not included | Included | Included |
| Full component library | Not included | Included | Included |
| Figma source files | Not included | Included | Included |
| Seats | 1 | 1 | Up to 10 |
| SSO and audit log | Not included | Not included | Included |
| Support | Community | Priority email | Dedicated |
The questions people ask right before they buy.
Any time, in both directions. Upgrades take effect immediately and are prorated; downgrades apply at the end of the current period so you keep what you paid for.
Nothing breaks. We email you at 80% and again at 100%, and usage above the limit is billed at the listed overage rate rather than being cut off mid-request.
Within 30 days, in full, no questions asked. After that we will prorate the unused portion of an annual plan if you ask.
Two months free — that is the 20% you see on the toggle. Annual plans are invoiced and can be paid by bank transfer.
Yes to both. Email us with a sentence about what you are building and we will sort it out — we have never said no to a nonprofit.
Start on Free. You will know within a week whether you need more, and upgrading takes one click with no migration.
Create a free accountHow the business is doing, as of a minute ago.
Solid is this week. Faded is the week before.
| Period | This week | Previous week |
|---|---|---|
| Mon | $4,200 | $3,800 |
| Tue | $5,100 | $4,400 |
| Wed | $4,800 | $4,900 |
| Thu | $6,300 | $5,200 |
| Fri | $7,100 | $5,800 |
| Sat | $3,900 | $3,600 |
| Sun | $3,100 | $3,000 |
Northwind Ltd upgraded to Team annual
Marco Silva created an account
Priya Raman commented on Billing migration
Alex Chen pushed 3 commits to main
Dana Whitfield created an account
Everyone who has ever signed up, and where they stand today.
| Actions | |||||
|---|---|---|---|---|---|
| Contosobilling@contoso.io | Pro | $190 | active | ||
| Globexfinance@globex.co | Team | $980 | active | ||
| Initechadmin@initech.dev | Pro | $190 | trialing | ||
| Northwind Ltdops@northwind.com | Team | $490 | active | ||
| Umbrellait@umbrella.org | Free | — | churned | ||
| Vandelaygeorge@vandelay.com | Pro | $90 | trialing |
Showing 1–25 of 2,847
Manage your account, your workspace and how you sign in.
4 of 10 seats used
Ada Lovelace
ada@acme.com
Marco Silva
marco@acme.com
Priya Raman
priya@acme.com
alex@contractor.devInvite pending
Keys carry full account access. Treat them like passwords.
Production server
sk_live_••••••••••••4f2a
Created 12 Mar 2026
Last used 2 hours ago
CI pipeline
sk_live_••••••••••••9c1e
Created 3 Jun 2026
Last used Yesterday
Local development
sk_test_••••••••••••b7d0
Created 28 Jul 2026
Never used
These actions affect everyone in the workspace.
Hand this workspace to another member. You keep admin access, but billing and deletion move to them.
Make everything read-only and stop billing at the end of the period. You can un-archive at any time.
Permanently removes all projects, members and history. This cannot be undone and support cannot recover it.
Your plan, what you have used, and everything you have been charged.
Your plan, your next charge and how it is paid.
Current plan
Team$490/month
Next charge
$490.00
on 1 September 2026
Resets 1 September
You are over the limit on at least one quota. Overage is billed at the end of the period.
84% of your limit used
80% of your limit used
94% of your limit used
28 GB over your limit
No limit on this plan
Every charge on this account. PDFs are available for seven years.
The link may be out of date, or the page may have moved. Here are a few ways forward.
Live components in your current theme — switch routes, or the phone icon to check the mobile layout. Colours are this template’s Iris palette, which ships in app/globals.css. The indigo every SaaS reaches for, at a lightness that survives being link text as well as a button. The default, chosen rather than defaulted into.
then
cd saas-starter npm install npm run dev
The archive contains the whole project — routes, blocks, theme tokens, Tailwind and PostCSS config, tsconfig and a .gitignore. One runtime dependency, and no Hoverlab dependency at all: it is your code from the moment it unzips.
The component, its props, the design tokens it expects and the command that installs it — as one prompt. Paste it into Claude, Cursor, v0 or ChatGPT and what they build around it will match the rest of the catalog instead of inventing its own system.
| Path | Page | File |
|---|---|---|
| / | SaaS Landing Page | app/page.tsx |
| /pricing | Pricing Page | app/pricing/page.tsx |
| /login | Sign-In Screen | app/login/page.tsx |
| /dashboard | Dashboard Overview | app/dashboard/page.tsx |
| /customers | Customer List Screen | app/customers/page.tsx |
| /settings | Account Settings | app/settings/page.tsx |
| /billing | Billing & Usage Screen | app/billing/page.tsx |
| 404 | 404 Page | app/not-found.tsx |
Every file is listed. The 30 files in components/ are the blocks the pages import — each one has its own page if you want to read it on its own.
Everything except the blocks. Opens on app/globals.css — the file that makes the rest look right, since every block styles itself with bg-card and text-muted-foreground rather than literal colours.
@tailwind base;
@tailwind components;
@tailwind utilities;
/**
* Design tokens — the Iris palette.
*
* The indigo every SaaS reaches for, at a lightness that survives being link text as well as a button. The default, chosen rather than defaulted into.
*
* This file is the reason a pasted block looks right. Every block and page
* styles itself with semantic classes — `bg-card`, `text-muted-foreground`,
* `border-border` — rather than literal colours, so they inherit whatever
* you define here instead of fighting it. Change a value below and every
* section in the project moves with it. Change the hue on `--primary` and
* `--ring` together and you have rebranded the site.
*
* Values are bare HSL channels, not `hsl(...)` calls. That is what lets
* Tailwind compose them with an alpha suffix: `bg-primary/10` expands to
* `hsl(var(--primary) / 0.1)`, which is impossible if the variable already
* carries its own function wrapper.
*
* Every foreground/background pair below clears WCAG AA (4.5:1) in both
* themes. If you retune one, check the pair rather than trusting the eye —
* mid-lightness accents are the ones that fail.
*/
@layer base {
:root {
--background: 243 40% 99%;
--foreground: 243 40% 10%;
--card: 0 0% 100%;
--card-foreground: 243 40% 10%;
--popover: 0 0% 100%;
--popover-foreground: 243 40% 10%;
--primary: 243 72% 52%;
--primary-foreground: 0 0% 100%;
--secondary: 243 34% 96%;
--secondary-foreground: 243 40% 20%;
--muted: 243 24% 95%;
--muted-foreground: 243 12% 40%;
--accent: 268 50% 93%;
--accent-foreground: 268 50% 20%;
--destructive: 0 72% 47%;
--destructive-foreground: 0 0% 100%;
--border: 243 22% 90%;
--input: 243 22% 90%;
--ring: 243 72% 52%;
--radius: 0.75rem;
}
.dark {
--background: 243 38% 5%;
--foreground: 243 15% 97%;
--card: 243 30% 8%;
--card-foreground: 243 15% 97%;
--popover: 243 30% 8%;
--popover-foreground: 243 15% 97%;
--primary: 243 88% 76%;
--primary-foreground: 243 42% 7%;
--secondary: 243 24% 15%;
--secondary-foreground: 243 15% 97%;
--muted: 243 22% 15%;
--muted-foreground: 243 12% 68%;
--accent: 268 26% 18%;
--accent-foreground: 268 45% 88%;
--destructive: 0 62% 52%;
--destructive-foreground: 0 0% 100%;
--border: 243 20% 19%;
--input: 243 20% 19%;
--ring: 243 88% 76%;
}
}
@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground antialiased;
}
/**
* Global motion opt-out.
*
* Blocks guard their own animations with Tailwind's `motion-safe:`, but
* third-party CSS and anything you add later will not. This is the
* backstop: it neutralises every animation and transition on the page
* for users who have asked the OS for reduced motion, rather than
* relying on each author to remember.
*/
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
}
The streaming answer, with its citations
An agent product’s working surface: transcript, reasoning, tool calls and the approval card, with sign-in and settings around it. Wiring a model in is your half.
The approval queue, with its run trace
The operator’s half of an agent product: the approval queue it opens on, a run trace with tool calls, retries and cost, and the chat surface behind them.