Built on
One focused chapter from the Thorbis interface research. 10 rules. Read the research index for every chapter and focused study.
Built on
- Linear. The product grammar and the source of truth for project work. Inverted-L chrome, command palette, density, and the Method. linear.app (opens in a new tab) · Method (opens in a new tab) ·
- TanStack. The application is TanStack Start. File routes, type-safe search, Query for server state, Table for ledgers. We do not invent a second data or routing layer. tanstack.com (opens in a new tab) · Start (opens in a new tab) · Router (opens in a new tab) · Query (opens in a new tab) · Table (opens in a new tab) ·
- Cloudflare. How we ship. Workers, Pages, DNS, and the edge, not Vercel. cloudflare.com (opens in a new tab) · Docs (opens in a new tab) ·
- React. The UI runtime. React 19.
refis a prop,use()is context. Compound components, not boolean flags. react.dev (opens in a new tab) · - shadcn/ui. The component kit. We copy the source in: Button, Badge, Card, Input, and the rest. Then we dress it. Pills, not squares. No panel borders. A whisper of depth. The look is ours. The starting point is his. ui.shadcn.com (opens in a new tab) ·
- Base UI. Unstyled accessible primitives underneath, when a pattern needs them. Dialogs, menus, tabs. We own the styles. base-ui.com (opens in a new tab) ·
- Tailwind CSS. Utility classes over page-local CSS. Tokens live in
@theme. Spacing and type come from a scale. tailwindcss.com (opens in a new tab) · - Cursor. How we write software with agents. AI appears where it reduces work. Generated UI is audited, not trusted by default. cursor.com (opens in a new tab) ·
- Motion, cmdk, Sonner, Vaul. Motion for springs and layout when CSS is not enough. motion.dev (opens in a new tab). Command menus are Paco’s cmdk (opens in a new tab). Toasts are Sonner (opens in a new tab). Drawers are Vaul (opens in a new tab).
I built this for the dispatcher at 7 a.m., the tech in a crawlspace, and the owner closing the books. Quiet chrome. Precise work. I’m still learning. These are the notes.
Applied bookmark research
Reviewed 2026-09-06. These examples reinforce the existing owners; they do not introduce another visual style or claim the product behavior is implemented. Read the 26-source review and access limits.
Make invalid combinations difficult to express
Independent loading, success, and error flags can contradict each other; presentation and business logic become tangled as a component grows.
Choose an explicit state model and a semantic composition API. Reuse the approved primitives, keep domain operations outside them, and locate loading boundaries according to the work they protect. Documentation names which variants actually ship.
Thorbis example. A payment dialog composes an approved trigger, content, fields, and actions around a domain-owned operation. The button receives one coherent request state, not several competing booleans and a private set of colors.
Verify. Exercise each valid state and transition, keyboard and focus behavior, controlled and uncontrolled contracts where supported, server-rendered output, and slow or missing data. Check provenance and license before source adoption.
Do not import. No arbitrary color escape hatch, duplicate component kit, unregistered dependency, or migration from Astro merely because a source uses RSC.
Open the composition skill · Evidence: React handbook; components.build; Component Architecture for React Server Components; shadcncraft