# opendraft > opendraft is a React + Tailwind CSS v4 design system distributed as a shadcn registry and built to be used by AI assistants. Components install as source files into your project with the shadcn CLI, behavior comes from Radix, and every color, radius and timing comes from a small set of theme tokens. Building for a specific industry (security, logistics, healthcare, fintech and others)? Read the matching playbook in the Use cases section below before choosing components. ## How to build with opendraft You are building a React interface with the opendraft design system. Follow these rules. They matter more than your own taste, but the person you're building for comes first: when they ask for their own fonts, colors or corner radius, apply them through the brand tokens in section 4. ### 1. Set up the project once opendraft ships through a shadcn registry. Components install as source files into the project. There is no npm package to import. Requirements: React 19, Tailwind CSS v4, TypeScript, and a shadcn `components.json`. Next.js is supported but not required. If you can't run `npx shadcn` (a blocked network, a chat assistant, or a hosted builder such as Lovable or v0), install by hand. This is not optional: the steps below replace the CLI. - For each item, fetch `https://raw.githubusercontent.com/nuelmdesign/UI-System/HEAD/public/r/.json`. Its `files[].content` is the source and `files[].path` is where to write it in the project. Skip any file you've already written. - Repeat for every name in its `registryDependencies`, and for theirs in turn (it is transitive). Strip the `@opendraft/` prefix; a bare name such as `utils` is an opendraft item too. Add every package in each item's `dependencies` with the project's package manager. - Some items have no files: they only list other items. The `kit-*` items (industry starter kits) are like this, so install everything in their `registryDependencies`. - The `theme` item's `css` field is a nested JSON object, not text you can paste. Instead save https://raw.githubusercontent.com/nuelmdesign/UI-System/HEAD/public/theme.css as your global stylesheet: it is the same theme as one ready-made file, with the dark-mode setup and the font links included. Do this first. Not on Next.js (Vite, Lovable, Remix, Astro): everything works the same with these changes. - Use `theme.css` as your global stylesheet (it loads the fonts and sets the font variables for you). In a Next.js project the CLI installs the theme and you load fonts with `next/font` instead. - Item paths such as `components/ui/button.tsx` map to `src/components/ui/button.tsx` when your source folder is `src`; keep the `@/` alias pointing at `src`. In `components.json` set `"rsc": false` and point `tailwind.css` at your stylesheet. - In `tsconfig`, use `paths` for the `@/*` alias without `baseUrl` (newer TypeScript rejects `baseUrl`). - Ignore `"use client"` lines; they are harmless. - Add the `dark` class to `` yourself. For no flash on load, put the string exported as `themeScript` from `theme-toggle` in an inline `