Skip to content
Theme
Accent
Voice
SkillCase StudiesComponentsExamplesThemingBest PracticesPhilosophyGitHub ↗
Philosophy · 001

A fixed point
for design decisions.

Every rule here was extracted from a decision that actually shipped in a real app — named, with the file it lives in. Read it as a portable file any AI tool can load, hand it to Claude as a Skill, or install the components it produced with one command.

or browse components →

terminal

$ npx @dhruvchoudhary/dsgn add button card
non-destructivecopy, not a dependencyshadcn-style

The CLI copies component source into your project. You own the file the moment it lands — edit it freely, nothing to eject later.

Embed the live component count

Backed by the real registry — updates itself on every build, never a stale number.

[![dsgn components](https://img.shields.io/endpoint?url=https://design.dhruvchoudhary.com/badge-data.json)](https://design.dhruvchoudhary.com/components)
[![dsgn recipes](https://img.shields.io/endpoint?url=https://design.dhruvchoudhary.com/badge-data-recipes.json)](https://design.dhruvchoudhary.com/examples)

Physical separation

01

Logic that can't import your UI framework, enforced by the build — not a naming convention.

shipped in lyric-viewer →

One scheduler

02

Every background job goes through one deliberate engine, never an ad-hoc thread per call site.

shipped in lyric-viewer →

Non-destructive by default

03

Edits are an overlay over an untouched original. Undo is structural, not reconstructed.

shipped in file-viewer →

Trust the data

04

Gatekeep structure, never content. The user's data is the user's data.

shipped in file-viewer →

Measure, don't guess

05

Performance claims are proven against the real thing, under real load, more than once.

shipped in lyric-viewer →

Idioms stay current

06

Framework footguns from stale training data get written down with their exact failure mode.

shipped in review-grader →
Accent
Voice
Corner radius

This is applied to the whole site live, not just this panel. Export it as CSS →