Loading the builder…
Builder
Pick sections from 307 blocks, drag them into order, and theme the lot in one go. What renders below is the actual component, not a picture of it — the same one the 126 pages in the catalog are built from. When it looks right, run it or take the source.
The layout and the theme both live in the address bar, so this page is shareable as a link and needs no account. Every edit is a normal navigation, which makes the back button an undo.
Hover a section to move, duplicate or remove it. Drag it to reorder.
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.
/v1/projects/{project_id}/deploymentsList the deployments for a project, newest first.
| Name | Type | Required | Description |
|---|---|---|---|
| project_id | string | Required | The project to list deployments for. Passed in the path. |
| status | string | Optional | Filter by state: building, ready or failed. |
| limit | integer | Optional | Page size, 1–100. Defaults to 20. |
| cursor | string | Optional | Opaque cursor from a previous page’s next_cursor. |
curl "https://api.acme.dev/v1/projects/prj_8kq2/deployments?limit=2" \
-H "Authorization: Bearer $ACME_API_KEY"{
"data": [
{
"id": "dep_9f2c1a",
"status": "ready",
"branch": "main",
"created_at": "2026-08-12T09:41:00Z"
},
{
"id": "dep_8e1b0d",
"status": "failed",
"branch": "fix/session-ttl",
"created_at": "2026-08-11T17:03:12Z"
}
],
"next_cursor": "dep_7d0a9c"
}Every block in the catalog, filtered by what it is. Click to append to the end of the page, or drag one into the outline to place it.
Writes each block to components/, which is where the page below imports them from.
npx hoverlab add faq-accordion api-endpoint-cardThese sections import lucide-react — everything else they use is React and Tailwind.
Sets the component name and the filename. Optional.
Saves as app/composed-page.tsx
/**
* ComposedPage — composed from 2 Hoverlab blocks.
*
* Install the sections this file imports:
* npx hoverlab add faq-accordion api-endpoint-card
*
* Packages the sections need: lucide-react
*
* Rebuild or edit this layout: https://hoverlab5.netlify.app/builder?b=faq-accordion,api-endpoint-card
*/
import * as React from 'react'
import { FaqAccordion } from '@/components/faq-accordion'
import { ApiEndpointCard } from '@/components/api-endpoint-card'
export default function ComposedPage() {
return (
<main className="min-h-screen bg-background text-foreground">
<FaqAccordion />
<ApiEndpointCard />
</main>
)
}