cdragon 0.1.0

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 (91) hide show
  1. package/README.md +110 -0
  2. package/bin/cdragon.js +170 -0
  3. package/package.json +31 -0
  4. package/skills/agent-browser/SKILL.md +50 -0
  5. package/skills/grill-me/SKILL.md +7 -0
  6. package/skills/herdr-agent/SKILL.md +142 -0
  7. package/skills/herdr-cli/SKILL.md +388 -0
  8. package/skills/herdr-cli/scripts/herdr-agent-run-and-wait +203 -0
  9. package/skills/herdr-cli/scripts/herdr-agent-wait-complete +168 -0
  10. package/skills/notion-presentation/SKILL.md +170 -0
  11. package/skills/notion-presentation/references/example-redis-deck.md +97 -0
  12. package/skills/setup-matt-pocock-skills/SKILL.md +127 -0
  13. package/skills/setup-matt-pocock-skills/domain.md +51 -0
  14. package/skills/setup-matt-pocock-skills/issue-tracker-github.md +34 -0
  15. package/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +35 -0
  16. package/skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
  17. package/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  18. package/skills/tdd/SKILL.md +108 -0
  19. package/skills/tdd/mocking.md +59 -0
  20. package/skills/tdd/refactoring.md +10 -0
  21. package/skills/tdd/tests.md +61 -0
  22. package/skills/to-html/SKILL.md +83 -0
  23. package/skills/to-html/designs/INDEX.md +74 -0
  24. package/skills/to-html/designs/airbnb.DESIGN.md +581 -0
  25. package/skills/to-html/designs/airtable.DESIGN.md +275 -0
  26. package/skills/to-html/designs/alipay.DESIGN.md +456 -0
  27. package/skills/to-html/designs/apple.DESIGN.md +566 -0
  28. package/skills/to-html/designs/banksalad.DESIGN.md +621 -0
  29. package/skills/to-html/designs/channeltalk.DESIGN.md +374 -0
  30. package/skills/to-html/designs/clay.DESIGN.md +398 -0
  31. package/skills/to-html/designs/clickhouse.DESIGN.md +374 -0
  32. package/skills/to-html/designs/cohere.DESIGN.md +361 -0
  33. package/skills/to-html/designs/coinone.DESIGN.md +218 -0
  34. package/skills/to-html/designs/coupang.DESIGN.md +502 -0
  35. package/skills/to-html/designs/cursor.DESIGN.md +416 -0
  36. package/skills/to-html/designs/elevenlabs.DESIGN.md +376 -0
  37. package/skills/to-html/designs/expo.DESIGN.md +373 -0
  38. package/skills/to-html/designs/figma.DESIGN.md +490 -0
  39. package/skills/to-html/designs/framer.DESIGN.md +393 -0
  40. package/skills/to-html/designs/freee.DESIGN.md +572 -0
  41. package/skills/to-html/designs/gangnamunni.DESIGN.md +621 -0
  42. package/skills/to-html/designs/gmarket.DESIGN.md +483 -0
  43. package/skills/to-html/designs/gogolook.DESIGN.md +131 -0
  44. package/skills/to-html/designs/hahow.DESIGN.md +158 -0
  45. package/skills/to-html/designs/hashicorp.DESIGN.md +369 -0
  46. package/skills/to-html/designs/hyundaicard.DESIGN.md +177 -0
  47. package/skills/to-html/designs/ibm.DESIGN.md +420 -0
  48. package/skills/to-html/designs/kakaobank.DESIGN.md +548 -0
  49. package/skills/to-html/designs/kakaopay.DESIGN.md +544 -0
  50. package/skills/to-html/designs/karrot.DESIGN.md +445 -0
  51. package/skills/to-html/designs/kdan.DESIGN.md +160 -0
  52. package/skills/to-html/designs/krds.DESIGN.md +997 -0
  53. package/skills/to-html/designs/line.DESIGN.md +431 -0
  54. package/skills/to-html/designs/linear.app.DESIGN.md +548 -0
  55. package/skills/to-html/designs/miro.DESIGN.md +272 -0
  56. package/skills/to-html/designs/mistral.ai.DESIGN.md +353 -0
  57. package/skills/to-html/designs/money-forward.DESIGN.md +401 -0
  58. package/skills/to-html/designs/mongodb.DESIGN.md +357 -0
  59. package/skills/to-html/designs/naver.DESIGN.md +533 -0
  60. package/skills/to-html/designs/nhncloud.DESIGN.md +174 -0
  61. package/skills/to-html/designs/opencode.ai.DESIGN.md +388 -0
  62. package/skills/to-html/designs/pinterest.DESIGN.md +322 -0
  63. package/skills/to-html/designs/posthog.DESIGN.md +430 -0
  64. package/skills/to-html/designs/raycast.DESIGN.md +422 -0
  65. package/skills/to-html/designs/remember.DESIGN.md +460 -0
  66. package/skills/to-html/designs/resend.DESIGN.md +396 -0
  67. package/skills/to-html/designs/sanity.DESIGN.md +449 -0
  68. package/skills/to-html/designs/sendbird.DESIGN.md +285 -0
  69. package/skills/to-html/designs/smarthr.DESIGN.md +404 -0
  70. package/skills/to-html/designs/socar.DESIGN.md +403 -0
  71. package/skills/to-html/designs/spotify.DESIGN.md +265 -0
  72. package/skills/to-html/designs/supabase.DESIGN.md +348 -0
  73. package/skills/to-html/designs/superhuman.DESIGN.md +414 -0
  74. package/skills/to-html/designs/together.ai.DESIGN.md +356 -0
  75. package/skills/to-html/designs/toss.DESIGN.md +655 -0
  76. package/skills/to-html/designs/uber.DESIGN.md +387 -0
  77. package/skills/to-html/designs/upstage.DESIGN.md +232 -0
  78. package/skills/to-html/designs/velog.DESIGN.md +168 -0
  79. package/skills/to-html/designs/vercel.DESIGN.md +479 -0
  80. package/skills/to-html/designs/wanted.DESIGN.md +529 -0
  81. package/skills/to-html/designs/wise.DESIGN.md +276 -0
  82. package/skills/to-html/designs/yanolja.DESIGN.md +463 -0
  83. package/skills/to-html/designs/yeogiotte.DESIGN.md +459 -0
  84. package/skills/to-html/designs/zapier.DESIGN.md +433 -0
  85. package/skills/to-html/designs/zigzag.DESIGN.md +633 -0
  86. package/skills/to-issues/SKILL.md +84 -0
  87. package/skills/to-prd/SKILL.md +75 -0
  88. package/src/colors.js +15 -0
  89. package/src/link.js +47 -0
  90. package/src/prompt.js +137 -0
  91. package/src/skills.js +75 -0
@@ -0,0 +1,265 @@
1
+ ---
2
+ id: spotify
3
+ name: Spotify
4
+ country: SE
5
+ category: consumer-tech
6
+ homepage: "https://www.spotify.com"
7
+ primary_color: "#1ed760"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=spotify.com&sz=128"
11
+ verified: "2026-06-05"
12
+ omd: "0.1"
13
+ ds:
14
+ name: Encore
15
+ url: "https://spotify.design"
16
+ type: system
17
+ description: Spotify's dark, content-first music UI — near-black surfaces, a singular Spotify Green accent, pill/circle geometry, and the Circular/CircularSp type family.
18
+ ---
19
+
20
+ # Design System Inspired by Spotify
21
+
22
+ ## 1. Visual Theme & Atmosphere
23
+
24
+ Spotify's web interface is a dark, immersive music player that wraps listeners in a near-black cocoon (`#121212`, `#181818`, `#1f1f1f`) where album art and content become the primary source of color. The design philosophy is "content-first darkness" — the UI recedes into shadow so that music, podcasts, and playlists can glow. Every surface is a shade of charcoal, creating a theater-like environment where the only true color comes from the iconic Spotify Green (`#1ed760`) and the album artwork itself.
25
+
26
+ The typography uses SpotifyMixUI and SpotifyMixUITitle — proprietary fonts from the CircularSp family (Circular by Lineto, customized for Spotify) with an extensive fallback stack that includes Arabic, Hebrew, Cyrillic, Greek, Devanagari, and CJK fonts, reflecting Spotify's global reach. The type system is compact and functional: 700 (bold) for emphasis and navigation, 600 (semibold) for secondary emphasis, and 400 (regular) for body. Buttons use uppercase with positive letter-spacing (1.4px–2px) for a systematic, label-like quality.
27
+
28
+ What distinguishes Spotify is its pill-and-circle geometry. Primary buttons use 500px–9999px radius (full pill), circular play buttons use 50% radius, and search inputs are 500px pills. Combined with heavy shadows (`rgba(0,0,0,0.5) 0px 8px 24px`) on elevated elements and a unique inset border-shadow combo (`rgb(18,18,18) 0px 1px 0px, rgb(124,124,124) 0px 0px 0px 1px inset`), the result is an interface that feels like a premium audio device — tactile, rounded, and built for touch.
29
+
30
+ **Key Characteristics:**
31
+ - Near-black immersive dark theme (`#121212`–`#1f1f1f`) — UI disappears behind content
32
+ - Spotify Green (`#1ed760`) as singular brand accent — never decorative, always functional
33
+ - SpotifyMixUI/CircularSp font family with global script support
34
+ - Pill buttons (500px–9999px) and circular controls (50%) — rounded, touch-optimized
35
+ - Uppercase button labels with wide letter-spacing (1.4px–2px)
36
+ - Heavy shadows on elevated elements (`rgba(0,0,0,0.5) 0px 8px 24px`)
37
+ - Semantic colors: negative red (`#f3727f`), warning orange (`#ffa42b`), announcement blue (`#539df5`)
38
+ - Album art as the primary color source — the UI is achromatic by design
39
+
40
+ ## 2. Color Palette & Roles
41
+
42
+ ### Primary Brand
43
+ - **Spotify Green** (`#1ed760`): Primary brand accent — play buttons, active states, CTAs
44
+ - **Near Black** (`#121212`): Deepest background surface
45
+ - **Dark Surface** (`#181818`): Cards, containers, elevated surfaces
46
+ - **Mid Dark** (`#1f1f1f`): Button backgrounds, interactive surfaces
47
+
48
+ ### Text
49
+ - **White** (`#ffffff`): `--text-base`, primary text
50
+ - **Silver** (`#b3b3b3`): Secondary text, muted labels, inactive nav
51
+ - **Near White** (`#cbcbcb`): Slightly brighter secondary text
52
+ - **Light** (`#fdfdfd`): Near-pure white for maximum emphasis
53
+
54
+ ### Semantic
55
+ - **Negative Red** (`#f3727f`): `--text-negative`, error states
56
+ - **Warning Orange** (`#ffa42b`): `--text-warning`, warning states
57
+ - **Announcement Blue** (`#539df5`): `--text-announcement`, info states
58
+
59
+ ### Surface & Border
60
+ - **Dark Card** (`#252525`): Elevated card surface
61
+ - **Mid Card** (`#272727`): Alternate card surface
62
+ - **Border Gray** (`#4d4d4d`): Button borders on dark
63
+ - **Light Border** (`#7c7c7c`): Outlined button borders, muted links
64
+ - **Separator** (`#b3b3b3`): Divider lines
65
+ - **Light Surface** (`#eeeeee`): Light-mode buttons (rare)
66
+ - **Spotify Green Border** (`#1db954`): Green accent border variant
67
+
68
+ ### Shadows
69
+ - **Heavy** (`rgba(0,0,0,0.5) 0px 8px 24px`): Dialogs, menus, elevated panels
70
+ - **Medium** (`rgba(0,0,0,0.3) 0px 8px 8px`): Cards, dropdowns
71
+ - **Inset Border** (`rgb(18,18,18) 0px 1px 0px, rgb(124,124,124) 0px 0px 0px 1px inset`): Input border-shadow combo
72
+
73
+ ## 3. Typography Rules
74
+
75
+ ### Font Families
76
+ - **Title**: `SpotifyMixUITitle`, fallbacks: `CircularSp-Arab, CircularSp-Hebr, CircularSp-Cyrl, CircularSp-Grek, CircularSp-Deva, Helvetica Neue, helvetica, arial, Hiragino Sans, Hiragino Kaku Gothic ProN, Meiryo, MS Gothic`
77
+ - **UI / Body**: `SpotifyMixUI`, same fallback stack
78
+
79
+ ### Hierarchy
80
+
81
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
82
+ |------|------|------|--------|-------------|----------------|-------|
83
+ | Section Title | SpotifyMixUITitle | 24px (1.50rem) | 700 | normal | normal | Bold title weight |
84
+ | Feature Heading | SpotifyMixUI | 18px (1.13rem) | 600 | 1.30 (tight) | normal | Semibold section heads |
85
+ | Body Bold | SpotifyMixUI | 16px (1.00rem) | 700 | normal | normal | Emphasized text |
86
+ | Body | SpotifyMixUI | 16px (1.00rem) | 400 | normal | normal | Standard body |
87
+ | Button Uppercase | SpotifyMixUI | 14px (0.88rem) | 600–700 | 1.00 (tight) | 1.4px–2px | `text-transform: uppercase` |
88
+ | Button | SpotifyMixUI | 14px (0.88rem) | 700 | normal | 0.14px | Standard button |
89
+ | Nav Link Bold | SpotifyMixUI | 14px (0.88rem) | 700 | normal | normal | Navigation |
90
+ | Nav Link | SpotifyMixUI | 14px (0.88rem) | 400 | normal | normal | Inactive nav |
91
+ | Caption Bold | SpotifyMixUI | 14px (0.88rem) | 700 | 1.50–1.54 | normal | Bold metadata |
92
+ | Caption | SpotifyMixUI | 14px (0.88rem) | 400 | normal | normal | Metadata |
93
+ | Small Bold | SpotifyMixUI | 12px (0.75rem) | 700 | 1.50 | normal | Tags, counts |
94
+ | Small | SpotifyMixUI | 12px (0.75rem) | 400 | normal | normal | Fine print |
95
+ | Badge | SpotifyMixUI | 10.5px (0.66rem) | 600 | 1.33 | normal | `text-transform: capitalize` |
96
+ | Micro | SpotifyMixUI | 10px (0.63rem) | 400 | normal | normal | Smallest text |
97
+
98
+ ### Principles
99
+ - **Bold/regular binary**: Most text is either 700 (bold) or 400 (regular), with 600 used sparingly. This creates a clear visual hierarchy through weight contrast rather than size variation.
100
+ - **Uppercase buttons as system**: Button labels use uppercase + wide letter-spacing (1.4px–2px), creating a systematic "label" voice distinct from content text.
101
+ - **Compact sizing**: The range is 10px–24px — narrower than most systems. Spotify's type is compact and functional, designed for scanning playlists, not reading articles.
102
+ - **Global script support**: The extensive fallback stack (Arabic, Hebrew, Cyrillic, Greek, Devanagari, CJK) reflects Spotify's 180+ market reach.
103
+
104
+ ## 4. Component Stylings
105
+
106
+ ### Buttons
107
+
108
+ **Dark Pill**
109
+ - Background: `#1f1f1f`
110
+ - Text: `#ffffff` or `#b3b3b3`
111
+ - Padding: 8px 16px
112
+ - Radius: 9999px (full pill)
113
+ - Use: Navigation pills, secondary actions
114
+
115
+ **Dark Large Pill**
116
+ - Background: `#181818`
117
+ - Text: `#ffffff`
118
+ - Padding: 0px 43px
119
+ - Radius: 500px
120
+ - Use: Primary app navigation buttons
121
+
122
+ **Light Pill**
123
+ - Background: `#eeeeee`
124
+ - Text: `#181818`
125
+ - Radius: 500px
126
+ - Use: Light-mode CTAs (cookie consent, marketing)
127
+
128
+ **Outlined Pill**
129
+ - Background: transparent
130
+ - Text: `#ffffff`
131
+ - Border: `1px solid #7c7c7c`
132
+ - Padding: 4px 16px 4px 36px (asymmetric for icon)
133
+ - Radius: 9999px
134
+ - Use: Follow buttons, secondary actions
135
+
136
+ **Circular Play**
137
+ - Background: `#1f1f1f`
138
+ - Text: `#ffffff`
139
+ - Padding: 12px
140
+ - Radius: 50% (circle)
141
+ - Use: Play/pause controls
142
+
143
+ ### Cards & Containers
144
+ - Background: `#181818` or `#1f1f1f`
145
+ - Radius: 6px–8px
146
+ - No visible borders on most cards
147
+ - Hover: slight background lightening
148
+ - Shadow: `rgba(0,0,0,0.3) 0px 8px 8px` on elevated
149
+
150
+ ### Inputs
151
+ - Search input: `#1f1f1f` background, `#ffffff` text
152
+ - Radius: 500px (pill)
153
+ - Padding: 12px 96px 12px 48px (icon-aware)
154
+ - Focus: border becomes `#000000`, outline `1px solid`
155
+
156
+ ### Navigation
157
+ - Dark sidebar with SpotifyMixUI 14px weight 700 for active, 400 for inactive
158
+ - `#b3b3b3` muted color for inactive items, `#ffffff` for active
159
+ - Circular icon buttons (50% radius)
160
+ - Spotify logo top-left in green
161
+
162
+ ## 5. Layout Principles
163
+
164
+ ### Spacing System
165
+ - Base unit: 8px
166
+ - Scale: 1px, 2px, 3px, 4px, 5px, 6px, 8px, 10px, 12px, 14px, 15px, 16px, 20px
167
+
168
+ ### Grid & Container
169
+ - Sidebar (fixed) + main content area
170
+ - Grid-based album/playlist cards
171
+ - Full-width now-playing bar at bottom
172
+ - Responsive content area fills remaining space
173
+
174
+ ### Whitespace Philosophy
175
+ - **Dark compression**: Spotify packs content densely — playlist grids, track lists, and navigation are all tightly spaced. The dark background provides visual rest between elements without needing large gaps.
176
+ - **Content density over breathing room**: This is an app, not a marketing site. Every pixel serves the listening experience.
177
+
178
+ ### Border Radius Scale
179
+ - Minimal (2px): Badges, explicit tags
180
+ - Subtle (4px): Inputs, small elements
181
+ - Standard (6px): Album art containers, cards
182
+ - Comfortable (8px): Sections, dialogs
183
+ - Medium (10px–20px): Panels, overlay elements
184
+ - Large (100px): Large pill buttons
185
+ - Pill (500px): Primary buttons, search input
186
+ - Full Pill (9999px): Navigation pills, search
187
+ - Circle (50%): Play buttons, avatars, icons
188
+
189
+ ## 6. Depth & Elevation
190
+
191
+ | Level | Treatment | Use |
192
+ |-------|-----------|-----|
193
+ | Base (Level 0) | `#121212` background | Deepest layer, page background |
194
+ | Surface (Level 1) | `#181818` or `#1f1f1f` | Cards, sidebar, containers |
195
+ | Elevated (Level 2) | `rgba(0,0,0,0.3) 0px 8px 8px` | Dropdown menus, hover cards |
196
+ | Dialog (Level 3) | `rgba(0,0,0,0.5) 0px 8px 24px` | Modals, overlays, menus |
197
+ | Inset (Border) | `rgb(18,18,18) 0px 1px 0px, rgb(124,124,124) 0px 0px 0px 1px inset` | Input borders |
198
+
199
+ **Shadow Philosophy**: Spotify uses notably heavy shadows for a dark-themed app. The 0.5 opacity shadow at 24px blur creates a dramatic "floating in darkness" effect for dialogs and menus, while the 0.3 opacity at 8px blur provides a more subtle card lift. The unique inset border-shadow combination on inputs creates a recessed, tactile quality.
200
+
201
+ ## 7. Do's and Don'ts
202
+
203
+ ### Do
204
+ - Use near-black backgrounds (`#121212`–`#1f1f1f`) — depth through shade variation
205
+ - Apply Spotify Green (`#1ed760`) only for play controls, active states, and primary CTAs
206
+ - Use pill shape (500px–9999px) for all buttons — circular (50%) for play controls
207
+ - Apply uppercase + wide letter-spacing (1.4px–2px) on button labels
208
+ - Keep typography compact (10px–24px range) — this is an app, not a magazine
209
+ - Use heavy shadows (`0.3–0.5 opacity`) for elevated elements on dark backgrounds
210
+ - Let album art provide color — the UI itself is achromatic
211
+
212
+ ### Don't
213
+ - Don't use Spotify Green decoratively or on backgrounds — it's functional only
214
+ - Don't use light backgrounds for primary surfaces — the dark immersion is core
215
+ - Don't skip the pill/circle geometry on buttons — square buttons break the identity
216
+ - Don't use thin/subtle shadows — on dark backgrounds, shadows need to be heavy to be visible
217
+ - Don't add additional brand colors — green + achromatic grays is the complete palette
218
+ - Don't use relaxed line-heights — Spotify's typography is compact and dense
219
+ - Don't expose raw gray borders — use shadow-based or inset borders instead
220
+
221
+ ## 8. Responsive Behavior
222
+
223
+ ### Breakpoints
224
+ | Name | Width | Key Changes |
225
+ |------|-------|-------------|
226
+ | Mobile Small | <425px | Compact mobile layout |
227
+ | Mobile | 425–576px | Standard mobile |
228
+ | Tablet | 576–768px | 2-column grid |
229
+ | Tablet Large | 768–896px | Expanded layout |
230
+ | Desktop Small | 896–1024px | Sidebar visible |
231
+ | Desktop | 1024–1280px | Full desktop layout |
232
+ | Large Desktop | >1280px | Expanded grid |
233
+
234
+ ### Collapsing Strategy
235
+ - Sidebar: full → collapsed → hidden
236
+ - Album grid: 5 columns → 3 → 2 → 1
237
+ - Now-playing bar: maintained at all sizes
238
+ - Search: pill input maintained, width adjusts
239
+ - Navigation: sidebar → bottom bar on mobile
240
+
241
+ ## 9. Agent Prompt Guide
242
+
243
+ ### Quick Color Reference
244
+ - Background: Near Black (`#121212`)
245
+ - Surface: Dark Card (`#181818`)
246
+ - Text: White (`#ffffff`)
247
+ - Secondary text: Silver (`#b3b3b3`)
248
+ - Accent: Spotify Green (`#1ed760`)
249
+ - Border: `#4d4d4d`
250
+ - Error: Negative Red (`#f3727f`)
251
+
252
+ ### Example Component Prompts
253
+ - "Create a dark card: #181818 background, 8px radius. Title at 16px SpotifyMixUI weight 700, white text. Subtitle at 14px weight 400, #b3b3b3. Shadow rgba(0,0,0,0.3) 0px 8px 8px on hover."
254
+ - "Design a pill button: #1f1f1f background, white text, 9999px radius, 8px 16px padding. 14px SpotifyMixUI weight 700, uppercase, letter-spacing 1.4px."
255
+ - "Build a circular play button: Spotify Green (#1ed760) background, #000000 icon, 50% radius, 12px padding."
256
+ - "Create search input: #1f1f1f background, white text, 500px radius, 12px 48px padding. Inset border: rgb(124,124,124) 0px 0px 0px 1px inset."
257
+ - "Design navigation sidebar: #121212 background. Active items: 14px weight 700, white. Inactive: 14px weight 400, #b3b3b3."
258
+
259
+ ### Iteration Guide
260
+ 1. Start with #121212 — everything lives in near-black darkness
261
+ 2. Spotify Green for functional highlights only (play, active, CTA)
262
+ 3. Pill everything — 500px for large, 9999px for small, 50% for circular
263
+ 4. Uppercase + wide tracking on buttons — the systematic label voice
264
+ 5. Heavy shadows (0.3–0.5 opacity) for elevation — light shadows are invisible on dark
265
+ 6. Album art provides all the color — the UI stays achromatic
@@ -0,0 +1,348 @@
1
+ ---
2
+ id: supabase
3
+ name: Supabase
4
+ country: US
5
+ category: backend-devops
6
+ homepage: "https://supabase.com"
7
+ primary_color: "#3ecf8e"
8
+ logo:
9
+ type: simpleicons
10
+ slug: supabase
11
+ verified: "2026-05-15"
12
+ omd: "0.1"
13
+ ds:
14
+ name: Supabase Brand Assets
15
+ url: "https://supabase.com/brand-assets"
16
+ type: brand
17
+ description: Supabase's brand guidelines with logos and integration button specs.
18
+ og_image: "https://supabase.com/images/og/supabase-og.png"
19
+ ---
20
+
21
+ # Design System Inspiration of Supabase
22
+
23
+ ## 1. Visual Theme & Atmosphere
24
+
25
+ Supabase's website is a dark-mode-native developer platform that channels the aesthetic of a premium code editor — deep black backgrounds (`#0f0f0f`, `#171717`) with emerald green accents (`#3ecf8e`, `#00c573`) that reference the brand's open-source, PostgreSQL-green identity. The design system feels like it was born in a terminal window and evolved into a sophisticated marketing surface without losing its developer soul.
26
+
27
+ The typography is built on "Circular" — a geometric sans-serif with rounded terminals that softens the technical edge. At 72px with a 1.00 line-height, the hero text is compressed to its absolute minimum vertical space, creating dense, impactful statements that waste nothing. The monospace companion (Source Code Pro) appears sparingly for uppercase technical labels with 1.2px letter-spacing, creating the "developer console" markers that connect the marketing site to the product experience.
28
+
29
+ What makes Supabase distinctive is its sophisticated HSL-based color token system. Rather than flat hex values, Supabase uses HSL with alpha channels for nearly every color (`--colors-crimson4`, `--colors-purple5`, `--colors-slateA12`), enabling a nuanced layering system where colors interact through transparency. This creates depth through translucency — borders at `rgba(46, 46, 46)`, surfaces at `rgba(41, 41, 41, 0.84)`, and accents at partial opacity all blend with the dark background to create a rich, dimensional palette from minimal color ingredients.
30
+
31
+ The green accent (`#3ecf8e`) appears selectively — in the Supabase logo, in link colors (`#00c573`), and in border highlights (`rgba(62, 207, 142, 0.3)`) — always as a signal of "this is Supabase" rather than as a decorative element. Pill-shaped buttons (9999px radius) for primary CTAs contrast with standard 6px radius for secondary elements, creating a clear visual hierarchy of importance.
32
+
33
+ **Key Characteristics:**
34
+ - Dark-mode-native: near-black backgrounds (`#0f0f0f`, `#171717`) — never pure black
35
+ - Emerald green brand accent (`#3ecf8e`, `#00c573`) used sparingly as identity marker
36
+ - Circular font — geometric sans-serif with rounded terminals
37
+ - Source Code Pro for uppercase technical labels (1.2px letter-spacing)
38
+ - HSL-based color token system with alpha channels for translucent layering
39
+ - Pill buttons (9999px) for primary CTAs, 6px radius for secondary
40
+ - Neutral gray scale from `#171717` through `#898989` to `#fafafa`
41
+ - Border system using dark grays (`#2e2e2e`, `#363636`, `#393939`)
42
+ - Minimal shadows — depth through border contrast and transparency
43
+ - Radix color primitives (crimson, purple, violet, indigo, yellow, tomato, orange, slate)
44
+
45
+ ## 2. Color Palette & Roles
46
+
47
+ ### Brand
48
+ - **Supabase Green** (`#3ecf8e`): Primary brand color, logo, accent borders
49
+ - **Green Link** (`#00c573`): Interactive green for links and actions
50
+ - **Green Border** (`rgba(62, 207, 142, 0.3)`): Subtle green border accent
51
+
52
+ ### Neutral Scale (Dark Mode)
53
+ - **Near Black** (`#0f0f0f`): Primary button background, deepest surface
54
+ - **Dark** (`#171717`): Page background, primary canvas
55
+ - **Dark Border** (`#242424`): Horizontal rule, section dividers
56
+ - **Border Dark** (`#2e2e2e`): Card borders, tab borders
57
+ - **Mid Border** (`#363636`): Button borders, dividers
58
+ - **Border Light** (`#393939`): Secondary borders
59
+ - **Charcoal** (`#434343`): Tertiary borders, dark accents
60
+ - **Dark Gray** (`#4d4d4d`): Heavy secondary text
61
+ - **Mid Gray** (`#898989`): Muted text, link color
62
+ - **Light Gray** (`#b4b4b4`): Secondary link text
63
+ - **Near White** (`#efefef`): Light border, subtle surface
64
+ - **Off White** (`#fafafa`): Primary text, button text
65
+
66
+ ### Radix Color Tokens (HSL-based)
67
+ - **Slate Scale**: `--colors-slate5` through `--colors-slateA12` — neutral progression
68
+ - **Purple**: `--colors-purple4`, `--colors-purple5`, `--colors-purpleA7` — accent spectrum
69
+ - **Violet**: `--colors-violet10` (`hsl(251, 63.2%, 63.2%)`) — vibrant accent
70
+ - **Crimson**: `--colors-crimson4`, `--colors-crimsonA9` — warm accent / alert
71
+ - **Indigo**: `--colors-indigoA2` — subtle blue wash
72
+ - **Yellow**: `--colors-yellowA7` — attention/warning
73
+ - **Tomato**: `--colors-tomatoA4` — error accent
74
+ - **Orange**: `--colors-orange6` — warm accent
75
+
76
+ ### Surface & Overlay
77
+ - **Glass Dark** (`rgba(41, 41, 41, 0.84)`): Translucent dark overlay
78
+ - **Slate Alpha** (`hsla(210, 87.8%, 16.1%, 0.031)`): Ultra-subtle blue wash
79
+ - **Fixed Scale Alpha** (`hsla(200, 90.3%, 93.4%, 0.109)`): Light frost overlay
80
+
81
+ ### Shadows
82
+ - Supabase uses **almost no shadows** in its dark theme. Depth is created through border contrast and surface color differences rather than box-shadows. Focus states use `rgba(0, 0, 0, 0.1) 0px 4px 12px` — minimal, functional.
83
+
84
+ ## 3. Typography Rules
85
+
86
+ ### Font Families
87
+ - **Primary**: `Circular`, with fallbacks: `custom-font, Helvetica Neue, Helvetica, Arial`
88
+ - **Monospace**: `Source Code Pro`, with fallbacks: `Office Code Pro, Menlo`
89
+
90
+ ### Hierarchy
91
+
92
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
93
+ |------|------|------|--------|-------------|----------------|-------|
94
+ | Display Hero | Circular | 72px (4.50rem) | 400 | 1.00 (tight) | normal | Maximum density, zero waste |
95
+ | Section Heading | Circular | 36px (2.25rem) | 400 | 1.25 (tight) | normal | Feature section titles |
96
+ | Card Title | Circular | 24px (1.50rem) | 400 | 1.33 | -0.16px | Slight negative tracking |
97
+ | Sub-heading | Circular | 18px (1.13rem) | 400 | 1.56 | normal | Secondary headings |
98
+ | Body | Circular | 16px (1.00rem) | 400 | 1.50 | normal | Standard body text |
99
+ | Nav Link | Circular | 14px (0.88rem) | 500 | 1.00–1.43 | normal | Navigation items |
100
+ | Button | Circular | 14px (0.88rem) | 500 | 1.14 (tight) | normal | Button labels |
101
+ | Caption | Circular | 14px (0.88rem) | 400–500 | 1.43 | normal | Metadata, tags |
102
+ | Small | Circular | 12px (0.75rem) | 400 | 1.33 | normal | Fine print, footer links |
103
+ | Code Label | Source Code Pro | 12px (0.75rem) | 400 | 1.33 | 1.2px | `text-transform: uppercase` |
104
+
105
+ ### Principles
106
+ - **Weight restraint**: Nearly all text uses weight 400 (regular/book). Weight 500 appears only for navigation links and button labels. There is no bold (700) in the detected system — hierarchy is created through size, not weight.
107
+ - **1.00 hero line-height**: The hero text is compressed to absolute zero leading. This is the defining typographic gesture — text that feels like a terminal command: dense, efficient, no wasted vertical space.
108
+ - **Negative tracking on cards**: Card titles use -0.16px letter-spacing, a subtle tightening that differentiates them from body text without being obvious.
109
+ - **Monospace as ritual**: Source Code Pro in uppercase with 1.2px letter-spacing is the "developer console" voice — used sparingly for technical labels that connect to the product experience.
110
+ - **Geometric personality**: Circular's rounded terminals create warmth in what could otherwise be a cold, technical interface. The font is the humanizing element.
111
+
112
+ ## 4. Component Stylings
113
+
114
+ ### Buttons
115
+
116
+ **Primary Pill (Dark)**
117
+ - Background: `#0f0f0f`
118
+ - Text: `#fafafa`
119
+ - Padding: 8px 32px
120
+ - Radius: 9999px (full pill)
121
+ - Border: `1px solid #fafafa` (white border on dark)
122
+ - Focus shadow: `rgba(0, 0, 0, 0.1) 0px 4px 12px`
123
+ - Use: Primary CTA ("Start your project")
124
+
125
+ **Secondary Pill (Dark, Muted)**
126
+ - Background: `#0f0f0f`
127
+ - Text: `#fafafa`
128
+ - Padding: 8px 32px
129
+ - Radius: 9999px
130
+ - Border: `1px solid #2e2e2e` (dark border)
131
+ - Opacity: 0.8
132
+ - Use: Secondary CTA alongside primary
133
+
134
+ **Ghost Button**
135
+ - Background: transparent
136
+ - Text: `#fafafa`
137
+ - Padding: 8px
138
+ - Radius: 6px
139
+ - Border: `1px solid transparent`
140
+ - Use: Tertiary actions, icon buttons
141
+
142
+ ### Cards & Containers
143
+ - Background: dark surfaces (`#171717` or slightly lighter)
144
+ - Border: `1px solid #2e2e2e` or `#363636`
145
+ - Radius: 8px–16px
146
+ - No visible shadows — borders define edges
147
+ - Internal padding: 16px–24px
148
+
149
+ ### Tabs
150
+ - Border: `1px solid #2e2e2e`
151
+ - Radius: 9999px (pill tabs)
152
+ - Active: green accent or lighter surface
153
+ - Inactive: dark, muted
154
+
155
+ ### Links
156
+ - **Green**: `#00c573` — Supabase-branded links
157
+ - **Primary Light**: `#fafafa` — standard links on dark
158
+ - **Secondary**: `#b4b4b4` — muted links
159
+ - **Muted**: `#898989` — tertiary links, footer
160
+
161
+ ### Navigation
162
+ - Dark background matching page (`#171717`)
163
+ - Supabase logo with green icon
164
+ - Circular 14px weight 500 for nav links
165
+ - Clean horizontal layout with product dropdown
166
+ - Green "Start your project" CTA pill button
167
+ - Sticky header behavior
168
+
169
+ ## 5. Layout Principles
170
+
171
+ ### Spacing System
172
+ - Base unit: 8px
173
+ - Scale: 1px, 4px, 6px, 8px, 12px, 16px, 20px, 24px, 32px, 40px, 48px, 90px, 96px, 128px
174
+ - Notable large jumps: 48px → 90px → 96px → 128px for major section spacing
175
+
176
+ ### Grid & Container
177
+ - Centered content with generous max-width
178
+ - Full-width dark sections with constrained inner content
179
+ - Feature grids: icon-based grids with consistent card sizes
180
+ - Logo grids for "Trusted by" sections
181
+ - Footer: multi-column on dark background
182
+
183
+ ### Breakpoints
184
+ | Name | Width | Key Changes |
185
+ |------|-------|-------------|
186
+ | Mobile | <600px | Single column, stacked layout |
187
+ | Desktop | >600px | Multi-column grids, expanded layout |
188
+
189
+ *Note: Supabase uses a notably minimal breakpoint system — primarily a single 600px breakpoint, suggesting a mobile-first approach with progressive enhancement.*
190
+
191
+ ### Whitespace Philosophy
192
+ - **Dramatic section spacing**: 90px–128px between major sections creates a cinematic pacing — each section is its own scene in the dark void.
193
+ - **Dense content blocks**: Within sections, spacing is tight (16px–24px), creating concentrated information clusters.
194
+ - **Border-defined space**: Instead of whitespace + shadows for separation, Supabase uses thin borders on dark backgrounds — separation through line, not gap.
195
+
196
+ ### Border Radius Scale
197
+ - Standard (6px): Ghost buttons, small elements
198
+ - Comfortable (8px): Cards, containers
199
+ - Medium (11px–12px): Mid-size panels
200
+ - Large (16px): Feature cards, major containers
201
+ - Pill (9999px): Primary buttons, tab indicators
202
+
203
+ ## 6. Depth & Elevation
204
+
205
+ | Level | Treatment | Use |
206
+ |-------|-----------|-----|
207
+ | Flat (Level 0) | No shadow, border `#2e2e2e` | Default state, most surfaces |
208
+ | Subtle Border (Level 1) | Border `#363636` or `#393939` | Interactive elements, hover |
209
+ | Focus (Level 2) | `rgba(0, 0, 0, 0.1) 0px 4px 12px` | Focus states only |
210
+ | Green Accent (Level 3) | Border `rgba(62, 207, 142, 0.3)` | Brand-highlighted elements |
211
+
212
+ **Shadow Philosophy**: Supabase deliberately avoids shadows. In a dark-mode-native design, shadows are nearly invisible and serve no purpose. Instead, depth is communicated through a sophisticated border hierarchy — from `#242424` (barely visible) through `#2e2e2e` (standard) to `#393939` (prominent). The green accent border (`rgba(62, 207, 142, 0.3)`) at 30% opacity is the "elevated" state — the brand color itself becomes the depth signal.
213
+
214
+ ## 7. Do's and Don'ts
215
+
216
+ ### Do
217
+ - Use near-black backgrounds (`#0f0f0f`, `#171717`) — depth comes from the gray border hierarchy
218
+ - Apply Supabase green (`#3ecf8e`, `#00c573`) sparingly — it's an identity marker, not a decoration
219
+ - Use Circular at weight 400 for nearly everything — 500 only for buttons and nav
220
+ - Set hero text to 1.00 line-height — the zero-leading is the typographic signature
221
+ - Create depth through border color differences (`#242424` → `#2e2e2e` → `#363636`)
222
+ - Use pill shape (9999px) exclusively for primary CTAs and tabs
223
+ - Employ HSL-based colors with alpha for translucent layering effects
224
+ - Use Source Code Pro uppercase labels for developer-context markers
225
+
226
+ ### Don't
227
+ - Don't add box-shadows — they're invisible on dark backgrounds and break the border-defined depth system
228
+ - Don't use bold (700) text weight — the system uses 400 and 500 only
229
+ - Don't apply green to backgrounds or large surfaces — it's for borders, links, and small accents
230
+ - Don't use warm colors (crimson, orange) as primary design elements — they exist as semantic tokens for states
231
+ - Don't increase hero line-height above 1.00 — the density is intentional
232
+ - Don't use large border radius (16px+) on buttons — pills (9999px) or standard (6px), nothing in between
233
+ - Don't lighten the background above `#171717` for primary surfaces — the darkness is structural
234
+ - Don't forget the translucent borders — `rgba` border colors are the layering mechanism
235
+
236
+ ## 8. Responsive Behavior
237
+
238
+ ### Breakpoints
239
+ | Name | Width | Key Changes |
240
+ |------|-------|-------------|
241
+ | Mobile | <600px | Single column, stacked features, condensed nav |
242
+ | Desktop | >600px | Multi-column grids, full nav, expanded sections |
243
+
244
+ ### Collapsing Strategy
245
+ - Hero: 72px → scales down proportionally
246
+ - Feature grids: multi-column → single column stacked
247
+ - Logo row: horizontal → wrapped grid
248
+ - Navigation: full → hamburger
249
+ - Section spacing: 90–128px → 48–64px
250
+ - Buttons: inline → full-width stacked
251
+
252
+ ## 9. Agent Prompt Guide
253
+
254
+ ### Quick Color Reference
255
+ - Background: `#0f0f0f` (button), `#171717` (page)
256
+ - Text: `#fafafa` (primary), `#b4b4b4` (secondary), `#898989` (muted)
257
+ - Brand green: `#3ecf8e` (brand), `#00c573` (links)
258
+ - Borders: `#242424` (subtle), `#2e2e2e` (standard), `#363636` (prominent)
259
+ - Green border: `rgba(62, 207, 142, 0.3)` (accent)
260
+
261
+ ### Example Component Prompts
262
+ - "Create a hero section on #171717 background. Headline at 72px Circular weight 400, line-height 1.00, #fafafa text. Sub-text at 16px Circular weight 400, line-height 1.50, #b4b4b4. Pill CTA button (#0f0f0f bg, #fafafa text, 9999px radius, 8px 32px padding, 1px solid #fafafa border)."
263
+ - "Design a feature card: #171717 background, 1px solid #2e2e2e border, 16px radius. Title at 24px Circular weight 400, letter-spacing -0.16px. Body at 14px weight 400, #898989 text."
264
+ - "Build navigation bar: #171717 background. Circular 14px weight 500 for links, #fafafa text. Supabase logo with green icon left-aligned. Green pill CTA 'Start your project' right-aligned."
265
+ - "Create a technical label: Source Code Pro 12px, uppercase, letter-spacing 1.2px, #898989 text."
266
+ - "Design a framework logo grid: 6-column layout on dark, grayscale logos at 60% opacity, 1px solid #2e2e2e border between sections."
267
+
268
+ ### Iteration Guide
269
+ 1. Start with #171717 background — everything is dark-mode-native
270
+ 2. Green is the brand identity marker — use it for links, logo, and accent borders only
271
+ 3. Depth comes from borders (#242424 → #2e2e2e → #363636), not shadows
272
+ 4. Weight 400 is the default for everything — 500 only for interactive elements
273
+ 5. Hero line-height of 1.00 is the signature typographic move
274
+ 6. Pill (9999px) for primary actions, 6px for secondary, 8-16px for cards
275
+ 7. HSL with alpha channels creates the sophisticated translucent layering
276
+
277
+ ## 10. Voice & Tone
278
+
279
+ Supabase's voice is **Postgres-pragmatic and OSS-confident.** "The Postgres Development Platform" — capability-driven, dev-first. Strong open-source positioning ("the open source Firebase alternative") with green primary `#3ecf8e` matching Postgres heritage.
280
+
281
+ | Context | Tone |
282
+ |---|---|
283
+ | CTA | Verb. "Start your project", "Get started", "Sign up" |
284
+ | Marketing | Postgres-credibility. Real SQL in marketing copy |
285
+ | Documentation | SQL-first, code-block-heavy |
286
+ | Error | Specific. "Foreign key constraint failed: table X column Y" |
287
+
288
+ **Voice samples**
289
+ - Tagline: *"The Postgres Development Platform"* <!-- verified: supabase.com homepage 2026-05 -->
290
+
291
+ **Forbidden phrases.** "Revolutionary BaaS". Generic Firebase-comparison framing.
292
+
293
+ ## 11. Brand Narrative
294
+
295
+ Supabase was founded **2020** by **Paul Copplestone (CEO)** + **Ant Wilson (CTO, joined January 2020)** ([Y Combinator — Supabase](https://www.ycombinator.com/companies/supabase), [Frederick AI — Founder Story Paul Copplestone](https://www.frederick.ai/blog/paul-copplestone-supabase)). **Y Combinator Summer 2020 (S20)** batch — founding coincided with the start of the COVID-19 pandemic; raised **$100K pre-seed from angels** before YC. Open-source Firebase alternative built on **Postgres → Realtime → Auth → Storage**. Funding ladder: **$30M Series A (Sept 2021)** → **$80M Series B (May 2022)** → **$2B valuation (April 2025)** → **$5B valuation October 2025** (Series E, just **4 months after $2B** — one of the fastest valuation jumps in OSS-developer-tooling) ([TechCrunch — Supabase $5B four months after $2B](https://techcrunch.com/2025/10/03/supabase-nabs-5b-valuation-four-months-after-hitting-2b/), [SuperbCrew — Supabase $100M Series E](https://www.superbcrew.com/supabase-raises-100-million-in-series-e-funding-round/)). The brand voice tracks the OSS-engineer positioning: Postgres-credible, open-by-default, never marketing-fluff. Primary green references Postgres elephant heritage with a modern lift — Tier 1 measurement on `/pricing` shows the canonical Primary CTA fill is `rgb(114, 227, 173)` = **`#72e3ad` Supabase Mint Green** (a **lighter shade** than the §2 doc's `#3ecf8e` deeper green, possibly a 2025 brand refresh).
296
+
297
+ ## 12. Principles
298
+
299
+ 1. **Postgres is the foundation.** *UI implication:* surfaces lead with Postgres-native features.
300
+ 2. **Open-source heritage.** *UI implication:* self-host first-class.
301
+ 3. **Pill (9999px) primary, 6px secondary, 8-16px cards.** *UI implication:* mixed radius with strict roles.
302
+ 4. **HSL with alpha channels.** *UI implication:* translucent layering using alpha, not opacity.
303
+ 5. **Green `#3ecf8e` for primary.** *UI implication:* preserve Postgres-heritage green.
304
+
305
+ ## 13. Personas
306
+
307
+ *Personas are fictional archetypes informed by Supabase user segments (full-stack developers, indie SaaS founders, AI app builders), not individual people.*
308
+
309
+ **Henrik Sondergaard, 33, Copenhagen.** Full-stack engineer. Supabase + Next.js for client SaaS projects.
310
+
311
+ **Sofia Russo, 28, Milan.** Indie founder shipping micro-SaaS. Supabase Auth + Postgres + Storage in one stack.
312
+
313
+ **Marcus Chen, 35, San Francisco.** AI app builder. Supabase Edge Functions + Vector for RAG infrastructure.
314
+
315
+ ## 14. States
316
+
317
+ | State | Treatment |
318
+ |---|---|
319
+ | **Empty (no projects)** | "Start your project" CTA |
320
+ | **Empty (no tables)** | "Create your first table" with SQL editor |
321
+ | **Loading (query)** | Per-row count + execution time |
322
+ | **Loading (function deploy)** | Step-by-step deploy log |
323
+ | **Error (SQL)** | Inline below editor + line:column |
324
+ | **Error (RLS)** | Specific policy + table |
325
+ | **Success (query)** | Result table + execution stats |
326
+ | **Success (deploy)** | Endpoint URL + invocation example |
327
+ | **Skeleton (table list)** | Translucent green-tinted placeholders |
328
+ | **Disabled (free tier)** | Upgrade link |
329
+ | **Loading (long migration)** | Persistent progress |
330
+
331
+ ## 15. Motion & Easing
332
+
333
+ | Token | Value | Use |
334
+ |---|---|---|
335
+ | `motion-instant` | 0ms | Selection |
336
+ | `motion-fast` | 150ms | Hover |
337
+ | `motion-standard` | 250ms | Modal, panel |
338
+
339
+ Standard cubic-bezier; no bounce. `prefers-reduced-motion: reduce` removes hover transitions.
340
+
341
+ ---
342
+
343
+ **Verified:** 2026-05-08 (omd:migrate run 56 — Apple-tier)
344
+ **Tier 1 sources:** supabase.com home + /pricing (live DOM via playwright — Primary **`#72e3ad`** Supabase Mint Green + `#171717` Near-Black text 6px / 38-42px / 8×16 / 14-16px·400; Outline `#fdfdfd` Soft White 6px; Banner pill 9999px; nav 6px / 14px·500).
345
+ **Tier 2 sources:** styles.refero.design / getdesign.md — no record.
346
+ **Tier 2 (Philosophy/founders/funding):** YC (S20), LinkedIn (Copplestone), Frederick AI (Copplestone story), TechCrunch (2025-10 $5B "4 months after $2B"), SuperbCrew, Supabase company page.
347
+ **Style ref:** `stripe`.
348
+ **Conflicts unresolved:** Mint Green HEX — §2 doc `#3ecf8e` (darker mid-green) vs live `#72e3ad` (lighter mint) — likely 3-shade palette w/ 2025 brand refresh; both retained, live wins for Primary. **Earlier mistake reverted:** prior footer captured nav-only — canonical Primary is `#72e3ad` Mint Green missed entirely.