Three steps, then never write it again
Public registry — no token, no auth headers. One line per app, one command per item.
Point the CLI at us
once per app
{
"registries": {
"@automindz": "https://components.automindz.app/r/{name}.json"
}
}{name} is filled in by the CLI — leave it exactly as written, and that one line covers all 77 items. No components.json yet? Run npx shadcn@latest init -b base first — and read the two rows below before you do.
- -b base, not -b radix
- Every item is written against Base UI — shadcn 4's default — because that is what your
components/uiprimitives will be. On aradixproject the same primitives takeasChildanddelayDurationwhere ours passrenderanddelay, and the install typechecks red. Yourcomponents.jsonshould say"style": "base-*". - check --font-sans after init
- On an app that already declares a font variable of its own —
--font-geist-sans, whatcreate-next-appwrites — the CLI adds--font-sans: var(--font-sans)to your@themeand leaveslayout.tsxalone. Nothing defines--font-sans, so the whole app silently falls back to the browser serif. Point it at the font you actually load:--font-sans: var(--font-geist-sans).
Install
once per item
Dependencies resolve themselves: the auth card brings the SSO buttons, the pricing table brings the checkout route. shadcn primitives come from your style, so they match the app they land in. Skipping step 1 is fine too — add https://components.automindz.app/r/auth-card.json works standalone.
Configure, don't edit
behaviour is data
- lib/automindz/sso-providers.ts
- Which providers appear, their labels and order, which are temporarily unavailable.
- lib/automindz/pricing.ts
- Tiers, prices, features, real Stripe Price IDs. The checkout route accepts nothing that is not in here.
- lib/automindz/support-topics.ts
- The support topics and what each one says.
- props
- Session- and database-shaped data — nav, user, organisations, billing, table columns. Not file-shaped, so it never became a file.
- your globals.css
- Theming. Nothing installed references this site's palette; the components take your shadcn tokens.
- server items
- Install by URL from any folder, no
components.json—npx shadcn@latest add https://components.automindz.app/r/<name>.json.~/in a target is the folder you ran the command from. Then run the shipped test.
Hand it to an agent
the whole point
An agent that installs beats an agent that regenerates. Every item page has a Copy agent prompt button — install command, files, dependencies, env vars, wiring, and what the component already handles so the loading and failure states do not get rebuilt from scratch. It is generated from registry.json, so it cannot drift from what the item installs.
Two routes fail closed
on purpose
- app/api/checkout/route.ts
- Accepts only Price IDs present in your pricing config, and clamps quantity — a tampered client cannot buy an arbitrary price or 10,000 seats. Needs
STRIPE_SECRET_KEYandNEXT_PUBLIC_APP_URL. - app/api/billing-portal/route.ts
- Answers
501until you implementgetCustomerIdForRequestagainst your session. It must never read the customer id from the request body — that would let any caller open someone else's billing portal. - SSO
- Auth-library agnostic. Pass
onSignInand wire better-auth, next-auth or your own; without it the buttons navigate to next-auth's default provider route.
Everything installable
77 items
- @automindz/sso-buttonsProvider sign-in buttons driven by a config list. Works with better-auth, next-auth or any custom handler.
- @automindz/auth-cardSign-in / sign-up card combining SSO providers with an optional email + password form.
- @automindz/user-menuAvatar trigger with an account dropdown and a sign-out that shows its own progress.
- @automindz/org-switcherSearchable workspace switcher with per-organisation avatars, an async switch and a create action.
- @automindz/stripe-checkoutCheckout button plus the API route that creates a Stripe Checkout Session, with a server-side Price ID allow-list.
- @automindz/pricing-tableConfig-driven pricing tiers with a monthly/yearly toggle wired to Stripe Checkout.
- @automindz/billing-summaryCurrent plan, subscription status, usage meters and a Stripe billing-portal link.
- @automindz/dashboard-shellApp shell with a config-driven sidebar, mobile sheet nav, top bar slots and active-route detection.
- @automindz/render-linkThe link-rendering contract every navigational item shares, so none of them depends on a router.
- @automindz/breadcrumbsBreadcrumb trail built from an array of crumbs, with a middle that collapses into a menu once the route gets deep.
- @automindz/page-headerPage title, description, breadcrumbs, meta, actions and tabs in one header, with a sticky variant that condenses on scroll.
- @automindz/data-tableSortable, searchable, paginated table with in-cell visualisations and every state, on real table semantics. No table engine, no chart library.
- @automindz/chart-cardLine, area, bar and donut charts in a card, drawn as inline SVG with honest axes, one hover readout and every state. No chart library.
- @automindz/filter-barFaceted filters whose state lives in the URL: single select, multi-select, debounced text and a native date range, with removable chips and a shareable link.
- @automindz/confirm-dialogControlled confirmation dialog with an awaited action, destructive styling and optional typed confirmation.
- @automindz/empty-stateEmpty, no-results and failed-to-load states with actions, in two sizes.
- @automindz/support-widgetFloating support launcher with a config-driven topic picker and an optional message form.
- @automindz/comboboxSearchable single-select built on Popover + Command.
- @automindz/multi-selectSearchable multi-select with badge display, selection cap and hidden inputs for plain form posts.
- @automindz/command-palette⌘K launcher that searches navigation, actions and recents in one result set, with awaited commands, scoped child lists and async results.
- @automindz/nav-commandsDerives command-palette commands from a dashboard-shell nav config, so a new route reaches both on one commit.
- @automindz/settings-layoutSettings shell with section navigation and a save bar that owns its own dirty state, awaits the save, and puts server field errors back on the fields.
- @automindz/site-navTop navigation with a grouped mega-panel, keyboard column navigation, active-route marking, a scroll condense and a mobile drawer.
- @automindz/hero-sectionMarketing hero in three compositions — split, centered or stacked — with a media frame that reserves its aspect ratio before the asset lands.
- @automindz/feature-gridA feature section in three layouts off one typed list: a card grid, full-width alternating rows, and a bento that re-packs its rows.
- @automindz/content-cardOne card in five shapes — copy, media on top, media beside, figure-first stat and quote — plus a grid that lays them out, with every state drawn and five opt-in effects.
- @automindz/logo-wallA logo band in three layouts — row, grid or marquee — where each mark degrades from supplied image to inline path to typeset wordmark, and the set's label states the claim it is making.
- @automindz/stat-stripNumbers band in four shapes, with optional deltas and area sparklines, an opt-in emphasis on the consumer's primary token, an unavailable figure, a loading skeleton and counting that cannot reflow the row.
- @automindz/cta-bandClosing call-to-action band with a link action or an email capture form that owns its pending, success and failure states.
- @automindz/footer-columnsSite footer with a nav landmark per column, external and disabled link states, a legal row and slots for the logo and a signup form.
- @automindz/motion-primitivesSix scroll-driven motion primitives — reveal, staggered group, marquee, scroll progress, sticky stack and count-up — with no animation library.
- @automindz/backdropA static pattern layer for the space behind a hero or a section: grid, dots, rings, mesh, noise or hatch, built from theme tokens and masked at the edges.
- @automindz/bento-gridAn asymmetric feature grid where every card declares its own footprint in tracks, clamped so no span can widen the grid or scroll the page.
- @automindz/testimonial-wallSocial proof in three arrangements off one typed list — a masonry column wall, two opposed marquee rows, and a featured lead quote.
- @automindz/faq-sectionA frequently-asked-questions section in three layouts, with diacritic-insensitive search that opens the answers it matched inside, category grouping and optional FAQPage structured data.
- @automindz/steps-sectionThe "how it works" section as an ordered list in four rhythms — a connected horizontal row, a vertical timeline, alternating media and copy, or an editorial big-numeral list — with a connector that draws itself, a pulse that travels down it, a ring that closes around each marker, and display numerals that fill in as their row arrives.
- @automindz/pricing-compareA feature-comparison matrix whose columns are derived from the pricing config, with a pinned feature column, a sticky header row and the tier CTAs repeated at the bottom.
- @automindz/orbiting-iconsThe integrations diagram: a centre mark with one or more rings of icons travelling around it, evenly distributed and always upright, in pure CSS.
- @automindz/announcement-barThe strip above the nav: dismissal that survives a reload, an optional live countdown that takes the bar down when it lapses, and one first render the server and the client both agree on.
- @automindz/integration-gridThe "works with your stack" section with per-integration state — connected, connectable, coming soon, and blocked with the reason on the card — filterable by category and searchable.
- @automindz/text-effectsNine CSS-only text effects — gradient, shimmer, rotating words, typewriter, split reveal, marker highlight, glitch, outline and extruded depth — with no animation library and no client boundary.
- @automindz/flow-diagramColumns of nodes joined by curves with light travelling along them — every coordinate computed from a declared layout, so it renders in a server component with nothing measured.
- @automindz/icon-cloudIcons spread over a real 3D sphere by a Fibonacci lattice, turning, each one counter-rotated to face the viewer and shaded by its own depth — in pure CSS.
- @automindz/rippleConcentric rings spreading outward from a centre slot at an even, cadence-capped beat, fading as they grow — the background mark for a logo or a feature icon, in pure CSS.
- @automindz/globeA dotted globe of real coastline whose pinned cities are land dots of the sphere's own lattice, lit inside two rings, with great-circle arcs between them — spherical trigonometry in a server component, no WebGL and no canvas, and an opt-in client wrapper that lets you grab the planet and turn it.
- @automindz/terminalThe staged CLI session every dev-tool homepage ships — commands typing themselves out with their output landing under them — with the whole schedule derived from the config and no client boundary.
- @automindz/circular-textText set around a circle — the rotating badge, the seal, the "scroll to explore" ring — as one <textPath> rather than one rotated span per character, so it still selects, searches and translates.
- @automindz/grid-beamsA grid with light travelling along its lines — the atmosphere layer for a hero, with every beam's line, phase and resting frame derived from the beam count and the grid pitch.
- @automindz/compare-sliderTwo images in one frame with a draggable wipe between them, driven by a real range input — so it arrives keyboard-operable, touch-capable and announced, with the frame reserved before a byte loads.
- @automindz/ripple-buttonYour own Button with a disc that expands from the point it was pressed — pointer or keyboard, clipped to the button's radius, in currentColor so it reads on every variant.
- @automindz/glyph-matrixA field of characters behind a hero that changes under the pointer and keeps what you leave behind, with a readability clearing and an opt-in glitch that tears two bands.
- @automindz/interactive-gridA tiled grid of real cells for the space behind a hero — square or honeycomb at a fixed cell size, flat or receding to a horizon and slanted across it on two degree props, inert, breathing on a deterministic hash, or lighting up under the pointer and taking a full second to let go, in pure CSS.
- @automindz/world-mapA flat dotted world map whose highlighted cities are dots of the field itself, snapped onto the lattice and lit inside two rings — with beams travelling the routes between them.
- @automindz/flickering-gridA field of squares flickering behind a hero on a canvas, drawn in the container's own computed colour, capped at 1.5Hz and stopped when it scrolls off screen.
- @automindz/world-dotsThe planet both map items are drawn from: a one-degree land mask as a string constant, a flat sampler and a spherical one, the marker and route declaration, and the shared traffic clock — no npm dependency and nothing fetched.
- @automindz/chat-threadA provider-agnostic AI chat: a log of turns with streaming replies, tool calls as collapsible blocks, Stop, Retry in place and a composer — driven by five events you map any model stream onto, with Markdown rendered as a tree and never as HTML.
- @automindz/qr-codeA QR code as inline SVG from a hand-rolled encoder — no npm dependency, no canvas, no client boundary — drawn as squares, dots or fluid pills, with a centre slot the item sizes so it still scans, a once-only bloom, and an opt-in pointer tilt with a scanning beam.
- @automindz/totp-setupThe whole turn-on-two-factor flow in one component — scan the QR or copy the key, confirm with the first code, save the recovery codes shown once — with every state owned, one native input instead of six boxes, and the secret coming only from your server.
- @automindz/physics-tagsTags that drop into a box with gravity, land on each other and can be picked up and thrown — hand-rolled AABB physics with no dependency, chips or icon tiles, over a plain list that is the base state for the server, reduced motion and print.
- @automindz/support-linearBackend half of support-widget: files each report as a Linear issue through the shared client_credentials OAuth app. Token cache, frozen scope, one 401 re-mint, one transient retry, 503 until configured.
- @automindz/http-retryThe one retrying HTTP client for Python server items: timeout, capped full-jitter backoff, Retry-After, status 0 when the request never landed, plus RateLimiter and TTLCache. Stdlib urllib.
- @automindz/http-retry-tsfetchWithRetry with per-attempt timeout, capped full-jitter backoff, Retry-After, HttpError on transport failure, plus RateLimiter and TTLCache. No dependencies.
- @automindz/support-linear-nextBackend half of support-widget for the Next.js App Router: files each report as a Linear issue through the shared client_credentials OAuth app. Same contract as support-linear.
- @automindz/log-jsonJSON-lines logger with key-suffix secret redaction. Installs a formatter on the root logger so third-party logging comes out as JSON too.
- @automindz/log-json-tsJSON-lines logger with key-suffix secret redaction, an injectable sink, and child loggers for request-scoped fields.
- @automindz/env-configOne MissingEnvError naming every missing required var at once, blank counts as missing, and capability flags that turn a feature off instead of crashing the process.
- @automindz/env-config-tsTyped loadEnv: one MissingEnvError naming every missing required var at once, blank counts as missing, and boolean capability flags so a feature degrades instead of crashing.
- @automindz/webhook-verifyFail-closed signature verification for Slack v0 and Standard Webhooks (Svix, Fathom): constant-time compare, 300 s replay window, signers exported for the consumer's own tests.
- @automindz/mcp-skill-promptsSKILL.md loader for MCP servers: registers each skill as an MCP prompt plus one get_skill_instructions tool, and syncs thin stubs into a Claude Code plugin repo.
- @automindz/mcp-oauthPostgres-backed OAuth 2.1 + PKCE provider for the MCP SDK's mcpAuthRouter: redirect-host allowlist, atomic single-use codes, constant-time PKCE, enforced expiry, rotating refresh tokens, scope enforcement, per-token rate limit. Nothing raw is stored.
- @automindz/openrouterOne OpenRouter chat client on http-retry: fallback models, strict json_schema output, usage.cost, served-model drift warning, fails closed without a key.
- @automindz/openrouter-tsThe TypeScript twin of openrouter, on http-retry-ts: fallback models, strict json_schema output, usage.cost, served-model drift warning, fails closed without a key.
- @automindz/supabase-nextThe Supabase client trio for the Next.js App Router — browser client, server client, and the auth-refreshing request interceptor — done once, with opt-in route protection.
- @automindz/healthThe one GET /api/health every Dokploy app needs: reruns every check per request, 200 when all pass, 503 when any fail, never caches, never leaks an env value or a stack trace.
- @automindz/health-nextThe Next.js twin of health: framework-free handler plus a two-line route.ts. 200 when every check passes, 503 when any fail, never cached, never leaks.
- @automindz/db-clientOne psycopg 3 access layer instead of five: lazily pooled, query/one/execute/transaction, bounded retry on connection-level failures only, healthcheck, and the two settings a Supabase pooler needs.
- @automindz/db-client-tsThe TypeScript twin of db-client on node-pg: query/one/execute/transaction, bounded retry on connection-level failures only, healthcheck, and a query that is already mcp-oauth's Query type. No npm dependency.
