Status · N0TB0T/n3 · 2026-07-08 · v0.1.2 · Kurzfassung

n3 — Farben · Fonts · Shapes

Design-Token-Modul auf M3-Basis: eine Spec, zwei bit-identische Renderer, eine Verwaltungs-App. Diese Seite ist die gekürzte, mobil-taugliche Fassung — Details stecken in den Klapp-Boxen.

→ vollständiger Report (Desktop)
95
Tests grün
103
Paletten
3
Consumer

01 Überblick

Eine Spec, n Renderer. Die Dart-Engine ist kanonisch, @n3/web spiegelt sie bit-identisch nach (Cross-Language-Golden-Tests).

core/spec
Schemas · Paletten · Scales · Tokens
n3_flutter ≡ @n3/web
kanonisch · golden-gespiegelt
N3 Lab
einzige Schreib-Oberfläche

Drei Produktiv-Consumer: datada (Web + Flutter), PayMore (voller Engine-Swap), brokay (Livestyling-Pilot).

02 Stand

8 von 9 Roadmap-Phasen erledigt, eine umformuliert statt abgehakt.

R-1…R-7Monorepo, Flutter-/Web-Engine, Lab, datada- + PayMore-Migration erledigt
R-8Fiddle-Integration umformuliert → jetzt Teil von Livestyling (LS-2)
R-9Typo- + Shape-Engine, die Dreieinigkeit komplett erledigt

03 Fertig

Auswahl der größten Bausteine — vollständige Liste im Desktop-Report.

04 Offen

05 Verworfen

06 Pitfalls

Zum Aufklappen.

mcu-npm ist invalides Node-ESM
Extension-lose interne Imports → nacktes Node/esbuild scheitert, nur Vite/Rollup inlinen es. Deshalb existiert ein eigenes self-contained Bundle für rohe Worker-Consumer.
Seed-Round-Trip — bis zu 85/255 Abweichung
{hue,chroma} muss erst zu Color@tone50 und zurück zu HCT, bevor es eine TonalPalette treibt — sonst weicht Web trotz identischer mcu-Werte massiv ab. Der Golden-Test hat es gefunden, nicht Review.
M3-Text folgt nicht automatisch onSurface
Flutters Default-textTheme färbt aus der Typography-Tabelle (schwarz/weiß), nicht aus colorScheme.onSurface. Fix: textTheme.apply(bodyColor: scheme.onSurface, …).
Ein Shape-Corner hat keine Farbe
Highlight für Shapes läuft über Radius-Aufblähen (kostenlos) oder Kontur (Opt-in, braucht einen dormanten CSS-Hook) — nie beide Kosten gleichzeitig.
Tags sind Organisation, kein Zugriffsrecht
„App-getunt" heißt: Palette trägt den App-ID-Tag, kein Ordner. Schreibrechte laufen separat über das Lab-„acting as"-Modell.

07 Integration

Zwei Regeln tragen den ganzen Guide (voll: docs/INTEGRATION.md).

Stack-Wege
Flutter-App → n3_flutter nativ (PayMore, brokay)
Vite/Astro → @n3/web nativ (datada)
Roher Worker → self-contained Bundle (devhub)
Plugin/Release-Page → Rollout-Default

08 Arbeitsweise

Native-only: jeder Consumer zieht die Engine selbst, nie gebackene Hexe. Kann ein Stack das nicht direkt, gibt's einen wiederverwendbaren Adapter für alle — nie einen Einzelfall-Fix.

App-Aufgaben im App-Backlog: n3 liefert nur Doku, nie Aufgaben in fremde Repos. Ein zu eng ausgelegter Fall (trivialer Hook über mehrere Sessions gereicht) wurde korrigiert: Schnittstellen-Änderungen liefert die Owner-Session in einem Zug.

09 Auffälliges

Der Seed-Round-Trip-Fehler wäre bei reinem Review wohl durchgerutscht — erst der Golden-Test hat ihn gefangen.

Highlight ist als Debug-Hilfe entstanden, wirkt aber nebenbei wie ein Hardcode-Detektor.

Radius-Aufblähen (kostenlos) vs. Kontur (Opt-in) ist eine saubere API-Entscheidung — der Regelfall zahlt nicht für den Sonderfall.