Sections
Components
Vite
Set up Neobrutalism.com in a Vite + React project — Tailwind, path aliases, the shadcn CLI, and your first component.
1. Create your project#
Create a new React + TypeScript project with Vite:
pnpm create vite@latest my-app -- --template react-tsnpm create vite@latest my-app -- --template react-tsyarn create vite@latest my-app -- --template react-tsbun create vite@latest my-app -- --template react-ts
2. Install Tailwind CSS#
pnpm add tailwindcss @tailwindcss/vitenpm install tailwindcss @tailwindcss/viteyarn add tailwindcss @tailwindcss/vitebun add tailwindcss @tailwindcss/vite
Replace everything in src/index.css with:
@import "tailwindcss";3. Configure path aliases#
Add baseUrl and paths to both tsconfig.json and tsconfig.app.json so the @/* alias resolves:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
}
}4. Update vite.config.ts#
Install the Node types, then teach Vite to resolve the alias:
pnpm add -D @types/nodenpm install -D @types/nodeyarn add -D @types/nodebun add -D @types/node
import path from "path"
import tailwindcss from "@tailwindcss/vite"
import react from "@vitejs/plugin-react"
import { defineConfig } from "vite"
export default defineConfig({
plugins: [react(), tailwindcss()],
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
})5. Run the init#
pnpm dlx shadcn@latest initnpx shadcn@latest inityarn dlx shadcn@latest initbunx --bun shadcn@latest init
6. Add the fonts & theme#
Follow the Fonts & Theme steps to get the signature look — the tokens are plain Tailwind v4 CSS, nothing Vite-specific.
7. Add a component#
Install straight from the registry URL — swap /r/radix/ for /r/base/ if you're on Base UI primitives:
pnpm dlx shadcn@latest add https://neobrutalism.com/r/radix/button.jsonnpx shadcn@latest add https://neobrutalism.com/r/radix/button.jsonyarn dlx shadcn@latest add https://neobrutalism.com/r/radix/button.jsonbunx --bun shadcn@latest add https://neobrutalism.com/r/radix/button.json
Every other component installs the same way — each component page shows the exact URL for both variants.