@jaimevalasek/aioson 1.30.1 → 1.33.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +19 -6
  3. package/docs/design-previews/cognitive-core-ui-auth.html +95 -0
  4. package/docs/design-previews/cognitive-core-ui-kanban.html +231 -0
  5. package/docs/design-previews/cognitive-core-ui-list-detail.html +174 -0
  6. package/docs/design-previews/cognitive-core-ui-preview.css +1315 -0
  7. package/docs/design-previews/cognitive-core-ui-settings.html +142 -0
  8. package/docs/design-previews/cognitive-core-ui-website.html +190 -1009
  9. package/docs/design-previews/cognitive-core-ui.html +281 -463
  10. package/docs/design-previews/index.html +83 -31
  11. package/docs/en/5-reference/cli-reference.md +1 -1
  12. package/docs/pt/5-referencia/comandos-cli.md +1 -1
  13. package/docs/pt/5-referencia/harness-retro.md +2 -1
  14. package/package.json +1 -1
  15. package/src/cli.js +38 -21
  16. package/src/commands/classify.js +389 -327
  17. package/src/commands/harness-retro-promote.js +387 -0
  18. package/src/commands/prototype-check.js +163 -0
  19. package/src/commands/verify-implementation.js +428 -0
  20. package/src/commands/workflow-next.js +222 -9
  21. package/src/constants.js +569 -511
  22. package/src/lib/retro/retro-render.js +10 -1
  23. package/src/lib/retro/retro-sources.js +45 -27
  24. package/src/lib/retro/verification-reports.js +230 -0
  25. package/src/runtime-store.js +13 -9
  26. package/src/verification/evidence-bundle.js +251 -0
  27. package/src/verification/ledger-store.js +221 -0
  28. package/src/verification/path-policy.js +74 -0
  29. package/src/verification/policy-engine.js +95 -0
  30. package/src/verification/prompt-package.js +314 -0
  31. package/src/verification/redaction.js +77 -0
  32. package/src/verification/report-parser.js +132 -0
  33. package/src/verification/report-store.js +97 -0
  34. package/src/verification/result.js +16 -0
  35. package/src/verification/runners/index.js +319 -0
  36. package/src/verification/runtime-telemetry.js +144 -0
  37. package/src/verification/schema.js +276 -0
  38. package/src/verification/source-discovery.js +153 -0
  39. package/template/.aioson/agents/analyst.md +9 -6
  40. package/template/.aioson/agents/briefing-refiner.md +22 -0
  41. package/template/.aioson/agents/briefing.md +69 -12
  42. package/template/.aioson/agents/design-hybrid-forge.md +18 -14
  43. package/template/.aioson/agents/dev.md +23 -10
  44. package/template/.aioson/agents/deyvin.md +3 -2
  45. package/template/.aioson/agents/product.md +15 -11
  46. package/template/.aioson/agents/qa.md +13 -4
  47. package/template/.aioson/agents/scope-check.md +19 -5
  48. package/template/.aioson/agents/sheldon.md +4 -3
  49. package/template/.aioson/agents/ux-ui.md +3 -2
  50. package/template/.aioson/docs/feature-expansion-taxonomy.md +31 -3
  51. package/template/.aioson/docs/play/README.md +2 -0
  52. package/template/.aioson/docs/play/agent-usage-guide.md +7 -1
  53. package/template/.aioson/docs/play/app-compatibility-guide.md +6 -1
  54. package/template/.aioson/docs/play/auth-services-and-testing.md +16 -1
  55. package/template/.aioson/docs/play/manifest-and-runtime.md +23 -0
  56. package/template/.aioson/docs/prototype-contract.md +81 -0
  57. package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +266 -243
  58. package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -293
  59. package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -827
  60. package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -250
  61. package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -585
  62. package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -365
  63. package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +485 -482
  64. package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +386 -387
  65. package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +228 -205
  66. package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -338
  67. package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -977
  68. package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -218
  69. package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -326
  70. package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -461
  71. package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -293
  72. package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -352
  73. package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +233 -210
  74. package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -319
  75. package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -365
  76. package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -196
  77. package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -244
  78. package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -235
  79. package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -215
  80. package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -295
  81. package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +239 -203
  82. package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -339
  83. package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +417 -407
  84. package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +289 -272
  85. package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +525 -524
  86. package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +279 -279
  87. package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +355 -289
  88. package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +443 -437
  89. package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +245 -222
  90. package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -159
  91. package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -498
  92. package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -236
  93. package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -274
  94. package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -355
  95. package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -198
  96. package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -307
  97. package/template/.aioson/skills/design/interface-design/SKILL.md +68 -47
  98. package/template/.aioson/skills/design/interface-design/references/components-and-states.md +105 -105
  99. package/template/.aioson/skills/design/interface-design/references/design-directions.md +101 -101
  100. package/template/.aioson/skills/design/interface-design/references/handoff-and-quality.md +92 -71
  101. package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +74 -74
  102. package/template/.aioson/skills/design/interface-design/references/tokens-and-depth.md +173 -173
  103. package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +236 -213
  104. package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -228
  105. package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -855
  106. package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -334
  107. package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -342
  108. package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -286
  109. package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -458
  110. package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -723
  111. package/template/.aioson/skills/design/premium-command-center-ui/SKILL.md +83 -62
  112. package/template/.aioson/skills/design/premium-command-center-ui/references/operations.md +74 -74
  113. package/template/.aioson/skills/design/premium-command-center-ui/references/patterns.md +116 -116
  114. package/template/.aioson/skills/design/premium-command-center-ui/references/validation.md +47 -47
  115. package/template/.aioson/skills/design/premium-command-center-ui/references/visual-system.md +215 -215
  116. package/template/.aioson/skills/design/pt.squarespace.com/.skill-meta.json +31 -31
  117. package/template/.aioson/skills/design/pt.squarespace.com/SKILL.md +94 -66
  118. package/template/.aioson/skills/design/pt.squarespace.com/references/components.md +366 -366
  119. package/template/.aioson/skills/design/pt.squarespace.com/references/design-tokens.md +150 -150
  120. package/template/.aioson/skills/design/pt.squarespace.com/references/motion.md +270 -270
  121. package/template/.aioson/skills/design/pt.squarespace.com/references/patterns.md +189 -189
  122. package/template/.aioson/skills/design/pt.squarespace.com/references/websites.md +161 -161
  123. package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +232 -209
  124. package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -324
  125. package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -508
  126. package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -223
  127. package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -374
  128. package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -356
  129. package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -288
  130. package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -289
  131. package/template/.aioson/skills/process/briefing-expansion-scout/SKILL.md +25 -3
  132. package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +5 -3
  133. package/template/.aioson/skills/process/design-hybrid-forge/references/external-source-ingestion.md +89 -0
  134. package/template/.aioson/skills/process/product-scope-expansion/SKILL.md +29 -2
  135. package/template/.aioson/skills/process/prototype-forge/SKILL.md +92 -0
  136. package/template/.aioson/skills/process/sheldon-expansion-audit/SKILL.md +23 -2
@@ -1,334 +1,334 @@
1
- # Dashboards — Neo-Brutalist UI
2
-
3
- Rules and presets for data-heavy interfaces. The dashboard punk expression mode applied in practice.
4
-
5
- ---
6
-
7
- ## General Rules
8
-
9
- ### Stat numbers
10
- - Always `font-family: var(--font-mono)` — the primary differentiator is mono, not serif or display
11
- - Large: `var(--text-3xl)` minimum for hero stats, `var(--text-xl)` for secondary
12
- - No decoration — the number is the visual
13
-
14
- ### Charts
15
- - No gradient fills — flat colors at fixed opacity (`opacity: 0.3` for area fills)
16
- - Bar charts: `border: var(--border-subtle)` on each bar, `border-radius: var(--radius-none)`
17
- - Line charts: `stroke-width: 2.5px` minimum, solid dots (not hollow)
18
- - Grid lines: `var(--border-subtle)`, full grid visible
19
- - Axis labels: `font-family: var(--font-mono)`, `font-size: var(--text-xs)`
20
- - No fancy tooltips — simple border box, mono text
21
-
22
- ### Tables
23
- - Full grid borders (every cell) — not minimal. This is non-negotiable for brutalist dashboards
24
- - Header: `bg-elevated`, font-mono uppercase
25
- - Data cells: mono font for numbers, dates, IDs, statuses
26
-
27
- ### General
28
- - Background: `bg-base` (cream off-white in light) — dashboards are "printed", not dark by default
29
- - All cards: `border-thicker`, `shadow-md`, hover → `shadow-lg`
30
- - Empty states: `[NO DATA]` in mono — no illustrations, no cheerful messages
31
- - Status indicators: saturated green/amber/red at full strength — never muted
32
-
33
- ---
34
-
35
- ## Chart Color Palette
36
-
37
- ```css
38
- --chart-1: var(--accent); /* #FACC15 — yellow — primary series */
39
- --chart-2: var(--accent-red); /* red — negative / error series */
40
- --chart-3: var(--accent-blue); /* blue — secondary series */
41
- --chart-4: var(--accent-green); /* green — positive / success */
42
- --chart-5: var(--accent-orange); /* orange — warning / tertiary */
43
- --chart-6: var(--border-color); /* black/white — neutral baseline */
44
- ```
45
-
46
- Usage:
47
- - Single series: `--chart-1` (yellow)
48
- - Two series: `--chart-1` + `--chart-3` (yellow + blue)
49
- - Success/failure: `--chart-4` + `--chart-2` (green + red)
50
- - Do not use more than 4 colors in a single chart
51
-
52
- ---
53
-
54
- ## Preset 1 — DevOps Dashboard
55
-
56
- For: CI/CD pipelines, deployment tracking, service health, infrastructure monitoring.
57
- Expression mode: Dashboard Punk.
58
-
59
- ### Layout
60
- ```
61
- [STATUS GRID: colored cells (green/amber/red), border-thick each, 4-8 cols]
62
-
63
- [DEPLOY TIMELINE: horizontal, mono timestamps, status badges]
64
-
65
- ┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
66
- │ ERROR RATE │ │ P95 LATENCY │ │ DEPLOY FREQUENCY │
67
- │ [line chart, red] │ │ [line chart, blue] │ │ [bar chart, green] │
68
- │ border-thicker │ │ │ │ │
69
- └────────────────────┘ └────────────────────┘ └────────────────────┘
70
-
71
- [SERVICE HEALTH TABLE: full grid, service name | status badge | uptime mono | p99 mono | last incident mono]
72
-
73
- [UPTIME COUNTERS: 3-4 stats in a strip — mono text-3xl, "99.97%"]
74
- ```
75
-
76
- ### Status grid pattern
77
- ```css
78
- .status-grid {
79
- display: grid;
80
- grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
81
- gap: 0;
82
- }
83
-
84
- .status-cell {
85
- border: var(--border-subtle);
86
- padding: var(--space-3);
87
- text-align: center;
88
- font-family: var(--font-mono);
89
- font-size: var(--text-xs);
90
- font-weight: var(--weight-bold);
91
- }
92
-
93
- .status-cell--healthy { background: var(--semantic-green-dim); color: var(--semantic-green); }
94
- .status-cell--warning { background: var(--semantic-amber-dim); color: var(--semantic-amber); }
95
- .status-cell--down { background: var(--semantic-red-dim); color: var(--semantic-red); }
96
- ```
97
-
98
- ### CLI-style status badges
99
- ```
100
- [PASS] → bg: semantic-green-dim, text: semantic-green, border: semantic-green
101
- [FAIL] → bg: semantic-red-dim, text: semantic-red, border: semantic-red
102
- [RUNNING] → bg: semantic-amber-dim, text: semantic-amber, border: semantic-amber
103
- [SKIP] → bg: bg-elevated, text: text-muted
104
- ```
105
-
106
- ---
107
-
108
- ## Preset 2 — Indie SaaS Dashboard
109
-
110
- For: bootstrapped SaaS, side projects, small products. Revenue and growth metrics.
111
- Expression mode: Indie Product.
112
-
113
- ### Layout
114
- ```
115
- [MRR HERO CARD: text-4xl mono bold, hard shadow-lg, sticker badge "[THIS MONTH]"]
116
-
117
- ┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
118
- │ NEW SIGNUPS │ │ CHURN RATE │ │ TRIAL → PAID │
119
- │ mono text-2xl │ │ mono text-2xl │ │ mono text-2xl │
120
- │ trend badge │ │ trend badge │ │ progress bar thick │
121
- └────────────────────┘ └────────────────────┘ └────────────────────┘
122
-
123
- ┌───────────────────────────────────────────────────┐
124
- │ SUBSCRIBER CHART │
125
- │ Area chart, accent fill 0.3 opacity, no gradient │
126
- │ brutalist card, border-thicker │
127
- └───────────────────────────────────────────────────┘
128
-
129
- [RECENT SIGNUPS TABLE: full grid | avatar (square) | name | email mono | plan badge | date mono]
130
-
131
- [FUNNEL: horizontal bar chart — trial/active/churned with thick bars]
132
- ```
133
-
134
- ### MRR hero card
135
- ```css
136
- .mrr-hero {
137
- background: var(--bg-surface);
138
- border: var(--border-thickest);
139
- box-shadow: var(--shadow-lg);
140
- padding: var(--space-8) var(--space-10);
141
- position: relative;
142
- }
143
-
144
- .mrr-hero__label {
145
- font-family: var(--font-mono);
146
- font-size: var(--text-xs);
147
- text-transform: uppercase;
148
- letter-spacing: var(--tracking-wider);
149
- color: var(--text-secondary);
150
- margin-bottom: var(--space-2);
151
- }
152
-
153
- .mrr-hero__value {
154
- font-family: var(--font-mono);
155
- font-size: var(--text-4xl);
156
- font-weight: var(--weight-extrabold);
157
- color: var(--text-heading);
158
- letter-spacing: var(--tracking-tight);
159
- }
160
-
161
- /* Position sticker badge top-right */
162
- .mrr-hero__sticker {
163
- position: absolute;
164
- top: var(--space-4);
165
- right: var(--space-4);
166
- }
167
- ```
168
-
169
- ---
170
-
171
- ## Preset 3 — Project Tracker Dashboard
172
-
173
- For: task management, sprint tracking, team workload, project status.
174
- Expression mode: Indie Product or Dashboard Punk.
175
-
176
- ### Layout
177
- ```
178
- [STATUS BADGES STRIP: "[12 TODO]" "[5 IN PROGRESS]" "[28 DONE]" — mono, bordered, full saturation]
179
-
180
- ┌──────────────────────────┐ ┌────────────────────────────────┐
181
- │ BURNDOWN CHART │ │ TEAM WORKLOAD │
182
- │ line chart │ │ horizontal bar per member │
183
- │ ideal vs actual │ │ thick bars, mono name labels │
184
- └──────────────────────────┘ └────────────────────────────────┘
185
-
186
- [TASK TABLE: full grid | priority dot | title | assignee avatar square | due date mono | status badge]
187
-
188
- [DEADLINE COUNTDOWN: mono bold text-xl "3 DAYS REMAINING" in accent card]
189
- ```
190
-
191
- ### Status count strip
192
- ```css
193
- .status-strip {
194
- display: flex;
195
- gap: 0;
196
- border: var(--border-thick);
197
- overflow: hidden;
198
- }
199
-
200
- .status-strip__item {
201
- flex: 1;
202
- padding: var(--space-3) var(--space-4);
203
- border-right: var(--border-thick);
204
- font-family: var(--font-mono);
205
- font-size: var(--text-sm);
206
- font-weight: var(--weight-bold);
207
- display: flex;
208
- align-items: center;
209
- gap: var(--space-2);
210
- }
211
-
212
- .status-strip__item:last-child { border-right: none; }
213
- .status-strip__item--todo { background: var(--bg-elevated); }
214
- .status-strip__item--progress { background: var(--semantic-amber-dim); }
215
- .status-strip__item--done { background: var(--semantic-green-dim); }
216
- ```
217
-
218
- ---
219
-
220
- ## Preset 4 — Content Dashboard
221
-
222
- For: blogs, newsletters, media products, content teams tracking performance.
223
- Expression mode: Indie Product.
224
-
225
- ### Layout
226
- ```
227
- [CONTENT STATUS STRIP: sticker badges — "[12 PUBLISHED]" "[4 DRAFT]" "[2 SCHEDULED]"]
228
-
229
- ┌───────────────────────────────────────────────────────────────┐
230
- │ CONTENT CALENDAR │
231
- │ Grid: 7 cols (days), multiple rows (weeks), border all cells │
232
- │ Status: colored bg fills (published=green, draft=amber, etc.) │
233
- └───────────────────────────────────────────────────────────────┘
234
-
235
- ┌────────────────────┐ ┌───────────────────────────────────────┐
236
- │ TOP POSTS (7d) │ │ PERFORMANCE TABLE │
237
- │ rank | title | │ │ full grid | title mono | views | CTR │
238
- │ views mono │ │ mono numbers throughout │
239
- └────────────────────┘ └───────────────────────────────────────┘
240
- ```
241
-
242
- ### Content calendar cell
243
- ```css
244
- .cal-cell {
245
- border: var(--border-subtle);
246
- min-height: 80px;
247
- padding: var(--space-2);
248
- vertical-align: top;
249
- font-family: var(--font-mono);
250
- font-size: var(--text-xs);
251
- }
252
-
253
- .cal-cell__date {
254
- font-weight: var(--weight-bold);
255
- color: var(--text-muted);
256
- margin-bottom: var(--space-1);
257
- }
258
-
259
- .cal-item {
260
- background: var(--accent-dim);
261
- border: var(--border-subtle);
262
- padding: 2px var(--space-2);
263
- font-size: 11px;
264
- overflow: hidden;
265
- text-overflow: ellipsis;
266
- white-space: nowrap;
267
- }
268
-
269
- .cal-item--published { background: var(--semantic-green-dim); }
270
- .cal-item--draft { background: var(--semantic-amber-dim); }
271
- .cal-item--scheduled { background: var(--semantic-blue-dim); }
272
- ```
273
-
274
- ---
275
-
276
- ## Preset 5 — Monitoring Dashboard
277
-
278
- For: system uptime, infrastructure health, alert management, ops tooling.
279
- Expression mode: Dashboard Punk.
280
-
281
- ### Layout
282
- ```
283
- [TOP BAR: last updated "UPDATED 2m AGO" mono | incident count badge | ack button]
284
-
285
- [HEALTH BOARD: NxM grid of colored status squares — one per service]
286
- → green = healthy, yellow = degraded, red = down
287
- → each cell: service name mono text-xs, status dot, p99 mono
288
-
289
- ┌────────────────────┐ ┌────────────────────┐
290
- │ LATENCY CHART │ │ ERROR RATE CHART │
291
- │ line, blue │ │ line, red │
292
- │ threshold line: │ │ thick bars, border │
293
- │ dashed, red │ │ │
294
- └────────────────────┘ └────────────────────┘
295
-
296
- [RESOURCE USAGE: thick progress bars per service — cpu / memory / disk]
297
-
298
- [ALERT LOG: mono, timestamped, severity badge, scrollable with border]
299
- ```
300
-
301
- ### Alert log
302
- ```css
303
- .alert-log {
304
- background: var(--bg-surface);
305
- border: var(--border-thicker);
306
- max-height: 320px;
307
- overflow-y: auto;
308
- }
309
-
310
- .alert-item {
311
- display: grid;
312
- grid-template-columns: auto 1fr auto;
313
- gap: var(--space-3);
314
- padding: var(--space-3) var(--space-4);
315
- border-bottom: var(--border-subtle);
316
- align-items: start;
317
- font-family: var(--font-mono);
318
- font-size: var(--text-xs);
319
- }
320
-
321
- .alert-item__time {
322
- color: var(--text-muted);
323
- white-space: nowrap;
324
- }
325
-
326
- .alert-item__message {
327
- color: var(--text-primary);
328
- line-height: 1.4;
329
- }
330
-
331
- .alert-item--critical { border-left: 4px solid var(--semantic-red); }
332
- .alert-item--warning { border-left: 4px solid var(--semantic-amber); }
333
- .alert-item--info { border-left: 4px solid var(--semantic-blue); }
334
- ```
1
+ # Dashboards — Neo-Brutalist UI
2
+
3
+ Rules and presets for data-heavy interfaces. The dashboard punk expression mode applied in practice.
4
+
5
+ ---
6
+
7
+ ## General Rules
8
+
9
+ ### Stat numbers
10
+ - Always `font-family: var(--font-mono)` — the primary differentiator is mono, not serif or display
11
+ - Large: `var(--text-3xl)` minimum for hero stats, `var(--text-xl)` for secondary
12
+ - No decoration — the number is the visual
13
+
14
+ ### Charts
15
+ - No gradient fills — flat colors at fixed opacity (`opacity: 0.3` for area fills)
16
+ - Bar charts: `border: var(--border-subtle)` on each bar, `border-radius: var(--radius-none)`
17
+ - Line charts: `stroke-width: 2.5px` minimum, solid dots (not hollow)
18
+ - Grid lines: `var(--border-subtle)`, full grid visible
19
+ - Axis labels: `font-family: var(--font-mono)`, `font-size: var(--text-xs)`
20
+ - No fancy tooltips — simple border box, mono text
21
+
22
+ ### Tables
23
+ - Full grid borders (every cell) — not minimal. This is non-negotiable for brutalist dashboards
24
+ - Header: `bg-elevated`, font-mono uppercase
25
+ - Data cells: mono font for numbers, dates, IDs, statuses
26
+
27
+ ### General
28
+ - Background: `bg-base` (cream off-white in light) — dashboards are "printed", not dark by default
29
+ - All cards: `border-thicker`, `shadow-md`, hover → `shadow-lg`
30
+ - Empty states: `[NO DATA]` in mono — no illustrations, no cheerful messages
31
+ - Status indicators: saturated green/amber/red at full strength — never muted
32
+
33
+ ---
34
+
35
+ ## Chart Color Palette
36
+
37
+ ```css
38
+ --chart-1: var(--accent); /* #FACC15 — yellow — primary series */
39
+ --chart-2: var(--accent-red); /* red — negative / error series */
40
+ --chart-3: var(--accent-blue); /* blue — secondary series */
41
+ --chart-4: var(--accent-green); /* green — positive / success */
42
+ --chart-5: var(--accent-orange); /* orange — warning / tertiary */
43
+ --chart-6: var(--border-color); /* black/white — neutral baseline */
44
+ ```
45
+
46
+ Usage:
47
+ - Single series: `--chart-1` (yellow)
48
+ - Two series: `--chart-1` + `--chart-3` (yellow + blue)
49
+ - Success/failure: `--chart-4` + `--chart-2` (green + red)
50
+ - Do not use more than 4 colors in a single chart
51
+
52
+ ---
53
+
54
+ ## Preset 1 — DevOps Dashboard
55
+
56
+ For: CI/CD pipelines, deployment tracking, service health, infrastructure monitoring.
57
+ Expression mode: Dashboard Punk.
58
+
59
+ ### Layout
60
+ ```
61
+ [STATUS GRID: colored cells (green/amber/red), border-thick each, 4-8 cols]
62
+
63
+ [DEPLOY TIMELINE: horizontal, mono timestamps, status badges]
64
+
65
+ ┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
66
+ │ ERROR RATE │ │ P95 LATENCY │ │ DEPLOY FREQUENCY │
67
+ │ [line chart, red] │ │ [line chart, blue] │ │ [bar chart, green] │
68
+ │ border-thicker │ │ │ │ │
69
+ └────────────────────┘ └────────────────────┘ └────────────────────┘
70
+
71
+ [SERVICE HEALTH TABLE: full grid, service name | status badge | uptime mono | p99 mono | last incident mono]
72
+
73
+ [UPTIME COUNTERS: 3-4 stats in a strip — mono text-3xl, "99.97%"]
74
+ ```
75
+
76
+ ### Status grid pattern
77
+ ```css
78
+ .status-grid {
79
+ display: grid;
80
+ grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
81
+ gap: 0;
82
+ }
83
+
84
+ .status-cell {
85
+ border: var(--border-subtle);
86
+ padding: var(--space-3);
87
+ text-align: center;
88
+ font-family: var(--font-mono);
89
+ font-size: var(--text-xs);
90
+ font-weight: var(--weight-bold);
91
+ }
92
+
93
+ .status-cell--healthy { background: var(--semantic-green-dim); color: var(--semantic-green); }
94
+ .status-cell--warning { background: var(--semantic-amber-dim); color: var(--semantic-amber); }
95
+ .status-cell--down { background: var(--semantic-red-dim); color: var(--semantic-red); }
96
+ ```
97
+
98
+ ### CLI-style status badges
99
+ ```
100
+ [PASS] → bg: semantic-green-dim, text: semantic-green, border: semantic-green
101
+ [FAIL] → bg: semantic-red-dim, text: semantic-red, border: semantic-red
102
+ [RUNNING] → bg: semantic-amber-dim, text: semantic-amber, border: semantic-amber
103
+ [SKIP] → bg: bg-elevated, text: text-muted
104
+ ```
105
+
106
+ ---
107
+
108
+ ## Preset 2 — Indie SaaS Dashboard
109
+
110
+ For: bootstrapped SaaS, side projects, small products. Revenue and growth metrics.
111
+ Expression mode: Indie Product.
112
+
113
+ ### Layout
114
+ ```
115
+ [MRR HERO CARD: text-4xl mono bold, hard shadow-lg, sticker badge "[THIS MONTH]"]
116
+
117
+ ┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
118
+ │ NEW SIGNUPS │ │ CHURN RATE │ │ TRIAL → PAID │
119
+ │ mono text-2xl │ │ mono text-2xl │ │ mono text-2xl │
120
+ │ trend badge │ │ trend badge │ │ progress bar thick │
121
+ └────────────────────┘ └────────────────────┘ └────────────────────┘
122
+
123
+ ┌───────────────────────────────────────────────────┐
124
+ │ SUBSCRIBER CHART │
125
+ │ Area chart, accent fill 0.3 opacity, no gradient │
126
+ │ brutalist card, border-thicker │
127
+ └───────────────────────────────────────────────────┘
128
+
129
+ [RECENT SIGNUPS TABLE: full grid | avatar (square) | name | email mono | plan badge | date mono]
130
+
131
+ [FUNNEL: horizontal bar chart — trial/active/churned with thick bars]
132
+ ```
133
+
134
+ ### MRR hero card
135
+ ```css
136
+ .mrr-hero {
137
+ background: var(--bg-surface);
138
+ border: var(--border-thickest);
139
+ box-shadow: var(--shadow-lg);
140
+ padding: var(--space-8) var(--space-10);
141
+ position: relative;
142
+ }
143
+
144
+ .mrr-hero__label {
145
+ font-family: var(--font-mono);
146
+ font-size: var(--text-xs);
147
+ text-transform: uppercase;
148
+ letter-spacing: var(--tracking-wider);
149
+ color: var(--text-secondary);
150
+ margin-bottom: var(--space-2);
151
+ }
152
+
153
+ .mrr-hero__value {
154
+ font-family: var(--font-mono);
155
+ font-size: var(--text-4xl);
156
+ font-weight: var(--weight-extrabold);
157
+ color: var(--text-heading);
158
+ letter-spacing: var(--tracking-tight);
159
+ }
160
+
161
+ /* Position sticker badge top-right */
162
+ .mrr-hero__sticker {
163
+ position: absolute;
164
+ top: var(--space-4);
165
+ right: var(--space-4);
166
+ }
167
+ ```
168
+
169
+ ---
170
+
171
+ ## Preset 3 — Project Tracker Dashboard
172
+
173
+ For: task management, sprint tracking, team workload, project status.
174
+ Expression mode: Indie Product or Dashboard Punk.
175
+
176
+ ### Layout
177
+ ```
178
+ [STATUS BADGES STRIP: "[12 TODO]" "[5 IN PROGRESS]" "[28 DONE]" — mono, bordered, full saturation]
179
+
180
+ ┌──────────────────────────┐ ┌────────────────────────────────┐
181
+ │ BURNDOWN CHART │ │ TEAM WORKLOAD │
182
+ │ line chart │ │ horizontal bar per member │
183
+ │ ideal vs actual │ │ thick bars, mono name labels │
184
+ └──────────────────────────┘ └────────────────────────────────┘
185
+
186
+ [TASK TABLE: full grid | priority dot | title | assignee avatar square | due date mono | status badge]
187
+
188
+ [DEADLINE COUNTDOWN: mono bold text-xl "3 DAYS REMAINING" in accent card]
189
+ ```
190
+
191
+ ### Status count strip
192
+ ```css
193
+ .status-strip {
194
+ display: flex;
195
+ gap: 0;
196
+ border: var(--border-thick);
197
+ overflow: hidden;
198
+ }
199
+
200
+ .status-strip__item {
201
+ flex: 1;
202
+ padding: var(--space-3) var(--space-4);
203
+ border-right: var(--border-thick);
204
+ font-family: var(--font-mono);
205
+ font-size: var(--text-sm);
206
+ font-weight: var(--weight-bold);
207
+ display: flex;
208
+ align-items: center;
209
+ gap: var(--space-2);
210
+ }
211
+
212
+ .status-strip__item:last-child { border-right: none; }
213
+ .status-strip__item--todo { background: var(--bg-elevated); }
214
+ .status-strip__item--progress { background: var(--semantic-amber-dim); }
215
+ .status-strip__item--done { background: var(--semantic-green-dim); }
216
+ ```
217
+
218
+ ---
219
+
220
+ ## Preset 4 — Content Dashboard
221
+
222
+ For: blogs, newsletters, media products, content teams tracking performance.
223
+ Expression mode: Indie Product.
224
+
225
+ ### Layout
226
+ ```
227
+ [CONTENT STATUS STRIP: sticker badges — "[12 PUBLISHED]" "[4 DRAFT]" "[2 SCHEDULED]"]
228
+
229
+ ┌───────────────────────────────────────────────────────────────┐
230
+ │ CONTENT CALENDAR │
231
+ │ Grid: 7 cols (days), multiple rows (weeks), border all cells │
232
+ │ Status: colored bg fills (published=green, draft=amber, etc.) │
233
+ └───────────────────────────────────────────────────────────────┘
234
+
235
+ ┌────────────────────┐ ┌───────────────────────────────────────┐
236
+ │ TOP POSTS (7d) │ │ PERFORMANCE TABLE │
237
+ │ rank | title | │ │ full grid | title mono | views | CTR │
238
+ │ views mono │ │ mono numbers throughout │
239
+ └────────────────────┘ └───────────────────────────────────────┘
240
+ ```
241
+
242
+ ### Content calendar cell
243
+ ```css
244
+ .cal-cell {
245
+ border: var(--border-subtle);
246
+ min-height: 80px;
247
+ padding: var(--space-2);
248
+ vertical-align: top;
249
+ font-family: var(--font-mono);
250
+ font-size: var(--text-xs);
251
+ }
252
+
253
+ .cal-cell__date {
254
+ font-weight: var(--weight-bold);
255
+ color: var(--text-muted);
256
+ margin-bottom: var(--space-1);
257
+ }
258
+
259
+ .cal-item {
260
+ background: var(--accent-dim);
261
+ border: var(--border-subtle);
262
+ padding: 2px var(--space-2);
263
+ font-size: 11px;
264
+ overflow: hidden;
265
+ text-overflow: ellipsis;
266
+ white-space: nowrap;
267
+ }
268
+
269
+ .cal-item--published { background: var(--semantic-green-dim); }
270
+ .cal-item--draft { background: var(--semantic-amber-dim); }
271
+ .cal-item--scheduled { background: var(--semantic-blue-dim); }
272
+ ```
273
+
274
+ ---
275
+
276
+ ## Preset 5 — Monitoring Dashboard
277
+
278
+ For: system uptime, infrastructure health, alert management, ops tooling.
279
+ Expression mode: Dashboard Punk.
280
+
281
+ ### Layout
282
+ ```
283
+ [TOP BAR: last updated "UPDATED 2m AGO" mono | incident count badge | ack button]
284
+
285
+ [HEALTH BOARD: NxM grid of colored status squares — one per service]
286
+ → green = healthy, yellow = degraded, red = down
287
+ → each cell: service name mono text-xs, status dot, p99 mono
288
+
289
+ ┌────────────────────┐ ┌────────────────────┐
290
+ │ LATENCY CHART │ │ ERROR RATE CHART │
291
+ │ line, blue │ │ line, red │
292
+ │ threshold line: │ │ thick bars, border │
293
+ │ dashed, red │ │ │
294
+ └────────────────────┘ └────────────────────┘
295
+
296
+ [RESOURCE USAGE: thick progress bars per service — cpu / memory / disk]
297
+
298
+ [ALERT LOG: mono, timestamped, severity badge, scrollable with border]
299
+ ```
300
+
301
+ ### Alert log
302
+ ```css
303
+ .alert-log {
304
+ background: var(--bg-surface);
305
+ border: var(--border-thicker);
306
+ max-height: 320px;
307
+ overflow-y: auto;
308
+ }
309
+
310
+ .alert-item {
311
+ display: grid;
312
+ grid-template-columns: auto 1fr auto;
313
+ gap: var(--space-3);
314
+ padding: var(--space-3) var(--space-4);
315
+ border-bottom: var(--border-subtle);
316
+ align-items: start;
317
+ font-family: var(--font-mono);
318
+ font-size: var(--text-xs);
319
+ }
320
+
321
+ .alert-item__time {
322
+ color: var(--text-muted);
323
+ white-space: nowrap;
324
+ }
325
+
326
+ .alert-item__message {
327
+ color: var(--text-primary);
328
+ line-height: 1.4;
329
+ }
330
+
331
+ .alert-item--critical { border-left: 4px solid var(--semantic-red); }
332
+ .alert-item--warning { border-left: 4px solid var(--semantic-amber); }
333
+ .alert-item--info { border-left: 4px solid var(--semantic-blue); }
334
+ ```