Copy-paste React + Tailwind components and blocks. Own the source, ship faster.
Components · CLI · Website · Deploy
goltUI is a copy-paste UI library. There is no runtime package to depend on — the CLI writes each component's real source into your project, installs whatever npm packages it needs, and leaves you to edit the code freely.
The repo is a Turborepo monorepo with two publishable pieces:
| Artifact | Package | Ships to | Purpose |
|---|---|---|---|
| Website | apps/web |
Vercel | Docs, component gallery, blocks, live previews |
| CLI | packages/cli (goltui) |
npm | npx goltui add <component> |
- Features
- Tech Stack
- Repository Structure
- Getting Started
- CLI
- Component Catalog
- Adding a Component
- Deployment
- Attribution
- Contributing
- License
- You own the code — components are copied as source into
components/goltui/, not installed as an opaque dependency. - Zero-config CLI — no
init, no config file. It detects your package manager and whether you use asrc/layout. - 25 production-ready components & blocks — buttons, inputs, heroes, logo clouds, auth layouts, headers, loaders, cursor and sound effects.
- Motion-first — built with Framer Motion springs, layout and exit animations.
- Accessible & responsive — keyboard-friendly, mobile-ready, dark theme by default.
- Strictly typed — TypeScript throughout, Tailwind CSS v4, React 19, Next.js 16.
- Automatic dependency install — the CLI runs
bun add/pnpm add/yarn add/npm installfor you.
| Layer | Choice |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack) |
| UI | React 19 |
| Styling | Tailwind CSS v4 |
| Animation | Framer Motion 13 |
| Smooth scroll | Lenis |
| Icons | @icons-pack/react-simple-icons |
| Language | TypeScript (strict) |
| Monorepo | Turborepo + Bun workspaces |
| CLI runtime | Node.js (ESM, zero runtime deps) |
goltUI/
├── apps/
│ └── web/ # Next.js site (docs, gallery, blocks, /play game)
│ └── src/
│ ├── app/ # App Router routes
│ │ ├── components/ # Component gallery + per-component docs
│ │ ├── blocks/ # Block pages (+ [slug] "coming soon" fallback)
│ │ ├── docs/ # Introduction & guides
│ │ ├── play/ # Playable Framer Motion game
│ │ └── preview/ # Full-page component previews
│ ├── components/ # The actual component source
│ └── lib/ # Shared data (e.g. block categories)
└── packages/
└── cli/ # Published npm package: `goltui`
├── bin/goltui.js # CLI entry point
└── registry/ # Component source + registry.json (what the CLI copies)
Note:
packages/cli/registry/mirrors component source fromapps/web. When you add a component, add it to both (see Adding a Component).
-
Node.js ≥ 20 (this repo is developed on Node 22)
-
Bun ≥ 1.3 — the package manager of record (
bun.lock)npm, pnpm, and yarn work too, but Bun is what the lockfile and CI assume.
git clone https://github.com/sudoKrishna/goltUI.git
cd goltUI
bun install
bun run dev # starts apps/web at http://localhost:3000| Command | Description |
|---|---|
bun run dev |
Run all workspaces in dev (Turborepo) |
bun run build |
Production build of every workspace |
bun run lint |
Lint every workspace |
cd apps/web
bun dev # http://localhost:3000
bun build # next build
bun start # serve the production buildThe goltui CLI copies component source straight into your project.
# install a component (run in your own Next.js + Tailwind project)
npx goltui add input-mic
# see everything available
npx goltuiWhat it does, in order:
- Looks up the component in the bundled registry.
- Copies its file(s) into
components/goltui/…— orsrc/components/goltui/…if your project has asrc/directory. Existing files are skipped, never overwritten. - Copies any bundled assets into
public/. - Installs the component's npm dependencies using the package manager it detects from your lockfile.
- Prints the exact import to paste.
No init step. No config. No package added to your dependencies.
The CLI is self-contained — it ships its own registry and never calls the website or an API. Publishing new components means publishing a new CLI version.
Install any of these with npx goltui add <name>.
Buttons & inputs
| Name | Description |
|---|---|
button |
Base button, dark and light variants. |
button-sizes |
Extra Small, Small, Default, Large. |
button-destructive |
Destructive variant. |
button-spinner |
Loading buttons with a spinner. |
input-mic |
Chat input with a mic button, live waveform, optional speech-to-text. |
Text & scroll
| Name | Description |
|---|---|
text-reveal |
Sequentially fades in text word-by-word with optional blur. |
text-scroll |
Scroll-driven text and icon animation (3 variants) with Lenis. |
Heroes
| Name | Description |
|---|---|
hero-section |
Cursor-reactive grid background with a gradient headline. |
hero-section-two |
Animated glowing gradient blob background. |
plane-window-hero |
Full-viewport airplane-window intro with liquid-glass optics. |
Logo clouds
| Name | Description |
|---|---|
logo-cloud |
8-logo grid that drops in row by row. |
logo-cloud-two |
Heading, subtext, marquee, and a CTA button. |
Cursor, sound & loaders
| Name | Description |
|---|---|
mouse-follow |
Four cursor-following effects: direct, spring, velocity blob, image swap. |
voice-glow |
Sound-reactive beam that blooms with real microphone input. |
border-beam |
Traveling or breathing colorful beam around an element's edge. |
thinking-orbs |
Nine dotted thought-orb loading states for AI & agent UIs. |
Auth
| Name | Description |
|---|---|
signup-one |
Split-screen signup with an image side. |
signup-two |
Centered card signup. |
signup-three |
Minimal centered layout with Apple/Google sign-in. |
Headers
| Name | Description |
|---|---|
header-01 |
Two-column mega menu dropdown. |
header-02 |
Grid dropdown with promo panels. |
header-03 |
Compact single-column dropdown. |
header-04 |
Sidebar-label dropdown. |
header-05 |
Hides on scroll down, shows on scroll up, with a preview panel. |
header-06 |
Simple links with a full-screen mobile menu. |
-
Build it in
apps/web/src/components/<name>and add a docs page underapps/web/src/app/components/<slug>. -
Copy the source into
packages/cli/registry/<slug>/. -
Register it in
packages/cli/registry/registry.json:{ "my-component": { "description": "One-line description shown by the CLI.", "dependencies": ["framer-motion"], "files": [ { "source": "my-component/index.ts", "target": "components/goltui/my-component/index.ts" } ] } }-
files[]—sourceis relative topackages/cli/registry/;targetis relative to the consumer's project (src/is added automatically when present). -
assets[]— optional; always resolved from the consumer's project root. -
import— optional override for the printed import when the slug doesn't map cleanly:"import": { "name": "{ MyComponent }", "path": "@/components/goltui/my-component" }
-
-
Test it against a scratch project before publishing:
mkdir /tmp/goltui-test && cd /tmp/goltui-test && echo '{}' > package.json && mkdir src node /path/to/goltUI/packages/cli/bin/goltui.js add my-component
The two artifacts deploy independently.
- Import the repository into Vercel.
- Set Root Directory to
apps/web. - Framework preset Next.js (auto-detected). Bun is used from
packageManager/bun.lock. - No environment variables are required.
- Deploy.
From the CLI instead:
cd apps/web
npx vercel --prodcd packages/cli
npm login
npm publish --access public # package name: goltuiThen users can run npx goltui add <component>.
Some components are adapted from open-source work and carry their own credit requirements. Please preserve these credits:
- Skiper UI —
mouse-follow(simple & spring variants),text-scroll(credit required). - Aceternity UI —
plane-window-hero(WebGL cloud shader substituted with a canvas drift). - Libraries.dev (MIT) —
voice-glow,border-beam,thinking-orbs.
-
Fork the repo and create a branch:
git checkout -b feat/my-component. -
Follow Adding a Component.
-
Make sure it is clean before opening a PR:
bun run lint bun run build
-
Open a pull request describing the component and any dependencies it adds.
MIT © goltUI