← Alle Beitrage

Design-Systeme für Startups: Wie ich meins rückwärts aufgebaut habe

Ich habe mein Design-System rückwärts aufgebaut. Die meisten Ratgeber sagen: „Warten Sie auf den Product-Market-Fit.” Ich habe am ersten Tag mit CSS Custom Properties begonnen, weil ein CLS-Bug auf meiner persönlichen Website mich die Kosten des Überspringens von Tokens gelehrt hat: ein Cumulative Layout Shift von 0,493, für dessen Ursache — ein inkonsistenter Spacing-Wert — ich zwei Debugging-Sitzungen brauchte. Die Behebung dauerte 15 Minuten. Die Untersuchung dauerte 3 Stunden. Tokens hätten den Bug vollständig verhindert.1

TL;DR

Design-Systeme lösen Koordinationsprobleme. Solo-Entwickler mit einem einzigen Projekt haben keine Koordinationsprobleme zwischen Personen, aber sie haben Koordinationsprobleme zwischen ihrem vergangenen und zukünftigen Ich. Nachdem ich das Design-Token-System für blakecrosley.com aufgebaut habe — 10 Farb-Tokens, 13 Typografie-Stufen, 8 Spacing-Werte — habe ich gelernt, dass die richtige Reihenfolge lautet: Tokens sofort (am ersten Tag), Muster wenn sie sich dreimal wiederholen, formales System nie (bei Solo-Projekten). Die Token-Investition amortisiert sich beim ersten Mal, wenn eine Spacing-Inkonsistenz einen Layout-Bug verursacht.


Mein Design-System: Tokens und sonst nichts

Die Farb-Nicht-Palette

Meine gesamte Website basiert auf 10 CSS Custom Properties ohne Markenfarben:

:root {
  --color-bg-dark:        #000000;
  --color-bg-elevated:    #111111;
  --color-bg-surface:     #1a1a1a;
  --color-text-primary:   #ffffff;
  --color-text-secondary: rgba(255,255,255,0.65);
  --color-text-tertiary:  rgba(255,255,255,0.4);
  --color-border:         rgba(255,255,255,0.1);
  --color-border-subtle:  rgba(255,255,255,0.05);
  --color-accent:         #ffffff;
}

Vier Transparenzstufen (100 %, 65 %, 40 %, 10 %) tragen die gesamte visuelle Hierarchie. Jede Textstufe erfüllt den WCAG-AAA-Kontrast gegenüber dem #000000-Hintergrund. Keine Verläufe, keine semantischen Farben, kein Dark-/Light-Mode-Umschalter. Die Beschränkung erzeugt ein kohärentes System, das eine Komponentenbibliothek nicht verbessern könnte.2

Die Entscheidung, auf Markenfarben zu verzichten, war eine gestalterische Wahl, keine technische. Während meiner 16 Produktdesign-Studien fiel mir auf, dass die Produkte, die ich am meisten schätzte (Linear, Vercel, Raycast), zurückhaltende Paletten verwendeten, bei denen die Typografie die Hierarchiearbeit übernahm.

Das 8-Punkt-Spacing-System

Jeder Spacing-Wert leitet sich von einer 8-Punkt-Basis ab:

:root {
  --spacing-xs:  0.5rem;  /* 8px */
  --spacing-sm:  1rem;    /* 16px */
  --spacing-md:  1.5rem;  /* 24px */
  --spacing-lg:  2rem;    /* 32px */
  --spacing-xl:  3rem;    /* 48px */
  --spacing-2xl: 4rem;    /* 64px */
  --spacing-3xl: 6rem;    /* 96px */
  --spacing-4xl: 8rem;    /* 128px */
}

Keine willkürlichen Werte. Das System enthält acht Stufen. Wenn ein Layout einen Abstand erfordert, der im System nicht existiert, ist das Design falsch — nicht das System.

Der --spacing-2xs-Bug

Ich habe die Regel auf die harte Tour gelernt. Ich verwendete --spacing-2xs für ein margin-top bei einem Untertitel. Der Token existierte nicht in meiner :root-Definition. CSS Custom Properties scheitern stillschweigend — der Browser wendete keinen Abstand an, statt einen Fehler auszugeben. Der Untertitel kollabierte gegen die Überschrift, das Layout verschob sich beim Laden, und mein Cumulative-Layout-Shift-Wert sprang auf 0,493.3

Der Debugging-Pfad: Lighthouse meldete CLS. DevTools identifizierten das sich verschiebende Element. Die Inspektion der berechneten Styles ergab margin-top: 0, wo ich 4px erwartet hatte. Eine Suche im Stylesheet nach --spacing-2xs zeigte eine Verwendung und null Definitionen.

Die Lösung: --spacing-2xs durch --spacing-xs ersetzen. Die umfassendere Lösung: strikte Einhaltung des Token-Systems ohne Ausnahmen.

Die Typografie-Skala

13 Stufen von 12px bis 80px, mit Systemschriften:

:root {
  --font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text",
                 "SF Pro Display", "Helvetica Neue", Arial, sans-serif;
  --font-size-xs:      0.75rem;   /* 12px */
  --font-size-sm:      0.875rem;  /* 14px */
  --font-size-base:    1rem;      /* 16px */
  --font-size-lg:      1.125rem;  /* 18px */
  --font-size-xl:      1.3125rem; /* 21px */
  --font-size-2xl:     1.5625rem; /* 25px */
  --font-size-3xl:     1.875rem;  /* 30px */
  --font-size-4xl:     2.25rem;   /* 36px */
  --font-size-5xl:     2.7rem;    /* 43.2px */
  --font-size-6xl:     3.25rem;   /* 52px */
  --font-size-7xl:     3.875rem;  /* 62px */
  --font-size-display: 5rem;      /* 80px */
}

Systemschriften eliminieren die Schriftlade-Latenz vollständig. Kein FOIT (Flash of Invisible Text), kein FOUT (Flash of Unstyled Text), null Netzwerkanfragen für Schriften. Diese Entscheidung trägt zu meinem 100/100 Lighthouse-Performance-Score bei.4


Das Timing-Problem

Zu früh: Die Falle der vorzeitigen Abstraktion

Startups in der Seed-Phase stehen vor extremer Unsicherheit darüber, was das Produkt werden wird. Ein Design-System kodifiziert Annahmen über Interaktionsmuster, Komponentenhierarchie und visuelle Sprache. Wenn das Produkt pivotiert, wird das Design-System zu einer Belastung, die sich gegen Veränderung sträubt.5

Ein Team aus drei Ingenieuren und einem Designer braucht keine Komponentenbibliothek mit Dokumentation, Versionierung und einer Storybook-Instanz. Der Koordinationsaufwand übersteigt das Koordinationsproblem.

Aber Tokens sind anders. Tokens sind keine Abstraktionen — sie sind Werte. Ein Farb-Token erzwingt keine Komponentenstruktur. Ein Spacing-Token schränkt keine Interaktionsmuster ein. Tokens überleben Pivots, weil sie unterhalb der Komponentenebene operieren.

Zu spät: Die Designschulden-Spirale

Series-B-Unternehmen mit 30 Ingenieuren und ohne gemeinsame Design-Muster stehen vor dem gegenteiligen Problem. Jedes Feature-Team erfindet eigene Button-Stile, Formularlayouts und Spacing-Werte. Das Produkt fühlt sich an wie drei verschiedene Anwendungen, die zusammengenäht wurden.6

Ich sehe dasselbe Muster im kleineren Maßstab in meinen eigenen Projekten. Wenn ich ein neues Projekt ohne Übernahme meiner :root-Tokens starte, tauchen Inkonsistenzen innerhalb der ersten Woche auf. Die Tokens sind eine günstige Versicherung gegen eine Schuldenspirale, deren Auflösung teuer wird.


Das Framework für progressive Investition

Stufe 1: Nur Tokens (Erster Tag, jede Teamgröße)

Definieren und teilen Sie nur die grundlegenden Werte. Meine Implementierung:

Token-Kategorie Anzahl Zweck
Farben 10 Hintergrund, Text, Rahmen, Akzent
Typografie 13 Schriftgrößen von xs bis display
Spacing 8 8px-Basiseinheit-Skala
Border-Radius 4 sm (8px), md (16px), lg (32px), xl (48px)
Übergänge 3 fast (150ms), base (300ms), slow (600ms)
Layout 3 max-width narrow (800px), default (1.400px), wide (1.600px)

41 Tokens insgesamt. Null Komponenten. Keine Dokumentationsseite. Das Ziel ist die Verhinderung von Divergenz auf der Werteebene bei gleichzeitiger Beibehaltung maximaler Flexibilität für Experimente.7

Stufe 2: Musterextraktion (Wenn Muster sich 3x wiederholen)

Wenn dasselbe UI-Element in drei verschiedenen Funktionen auftaucht, extrahieren Sie das Muster. Meine Website hat extrahierte Muster für: - Kartenlayouts (Projektkarten, Blogkarten, Social-Media-Karten): konsistentes Padding, Border-Radius, Hover-Zustände - Navigations-Unterstreichungen (Navigationslinks, Breadcrumbs): scaleX(0) → scaleX(1)-Übergang beim Hover - Glasmorphismus-Header: backdrop-filter: blur(20px) mit Border-Bottom

Jedes Muster existiert, weil ich dasselbe dreimal gebaut und die Duplizierung bemerkt habe. Ich extrahiere Muster aus Produktivcode, anstatt sie im Voraus zu entwerfen. Produktivmuster kodifizieren reale Anforderungen.8

Stufe 3: Formales System (25+ Ingenieure, nie für Solo-Projekte)

Im großen Maßstab rechtfertigt das Koordinationsproblem Komponentenbibliotheken, Figma-Synchronisation, Beitragsprozesse und versionierte Changelogs. Ich habe diese Stufe bei keinem persönlichen Projekt erreicht und erwarte es auch nicht. Für Solo-Entwickler bieten Tokens + extrahierte Muster genug Struktur ohne den Wartungsaufwand eines formalen Systems.


Was ich komplett weglasse

Dokumentationsseite

Öffentlich zugängliche Design-System-Dokumentationsseiten verbrauchen Entwicklungszeit, die für Solo-Projekte null Benutzerwert erzeugt. Meine „Dokumentation” ist der :root-Block in critical.css. Jeder Entwickler (oder KI-Agent), der die Datei liest, versteht das System sofort.

Multi-Framework-Unterstützung

Meine Website verwendet reines CSS. Keine React-Komponenten, keine Vue-Wrapper, keine Web Components. Die Tokens funktionieren in jedem Framework, weil CSS Custom Properties Framework-agnostisch sind. Die Abstraktionsebene ist CSS selbst.

Vorzeitiges Barrierefreiheits-Theater

Barrierefreiheit ist wichtig — meine Website erreicht WCAG-AAA-Kontrast auf jeder Textstufe. Aber ich habe zuerst das Kontrastsystem aufgebaut (Tokens mit bekannten Verhältnissen) und die Konformität erst danach überprüft. Mit Tokens zu beginnen, die eingebaute Barrierefreiheit besitzen (jede Textstufe überschreitet ein Kontrastverhältnis von 7:1), ist effektiver als willkürliche Farbwahlen nachträglich zu auditieren.9


Wichtigste Erkenntnisse

Für Solo-Entwickler: - Definieren Sie CSS Custom Properties für Farbe, Typografie, Spacing und Übergänge am ersten Tag; die 41-Token-Investition verhindert Bugs und Inkonsistenzen, deren Debugging später Stunden kostet - Verzichten Sie auf Komponentenbibliotheken, Dokumentationsseiten und Storybook; bei Solo-Projekten übersteigt der Wartungsaufwand den Koordinationsnutzen - Extrahieren Sie Muster aus Produktivcode, wenn dasselbe Element an drei Stellen auftaucht; vorzeitige Extraktion verschwendet Aufwand für Muster, die die nächste Iteration möglicherweise nicht überleben

Für Design-Leads in Startups: - Beginnen Sie mit Tokens vor dem Product-Market-Fit; Tokens überleben Pivots, weil sie unterhalb der Komponentenebene operieren - Widerstehen Sie dem formalen System, bis 25+ Ingenieure ein echtes Koordinationsproblem schaffen; Formalisierung vor dieser Schwelle erzeugt Wartungsaufwand, der die Iteration verlangsamt


Referenzen


  1. CLS-Debugging-Erfahrung des Autors. Cumulative Layout Shift von 0,493, zurückgeführt auf den undefinierten Token --spacing-2xs. Dokumentiert in MEMORY.md-Fehlereinträgen. 

  2. CSS Custom Properties des Autors aus critical.css. 10 Farb-Tokens, alle abgeleitet aus Weiß-auf-Schwarz-Opazitätsbeziehungen. 

  3. Debugging-Erfahrung des Autors. --spacing-2xs verwendet, aber nie in :root definiert. CSS Custom Properties scheitern stillschweigend und erzeugen null Abstand statt des erwarteten Wertes. 

  4. Typografie-System des Autors. 13-stufige Schriftskala, Systemschrift-Stack. Null Schriftlade-Latenz, beitragend zum 100/100 Lighthouse-Performance-Score. 

  5. Cagan, Marty, Inspired: How to Create Tech Products Customers Love, Wiley, 2017. Product-Market-Fit und vorzeitige Optimierung. 

  6. Curtis, Nathan, „Adopting Design Systems,” EightShapes, 2018. Messung von Designschulden in skalierenden Unternehmen. 

  7. Token-Inventar des Autors. 41 CSS Custom Properties in 6 Kategorien, definiert in critical.css

  8. Frost, Brad, Atomic Design, Eigenverlag, 2016. Methodik der progressiven Komponentenabstraktion. 

  9. Barrierefreiheitsansatz des Autors. WCAG-AAA-Kontrast in Token-Definitionen eingebaut (Primary 21:1, Secondary 13,7:1, Tertiary 8,4:1).