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.
- package/README.md +110 -0
- package/bin/cdragon.js +170 -0
- package/package.json +31 -0
- package/skills/agent-browser/SKILL.md +50 -0
- package/skills/grill-me/SKILL.md +7 -0
- package/skills/herdr-agent/SKILL.md +142 -0
- package/skills/herdr-cli/SKILL.md +388 -0
- package/skills/herdr-cli/scripts/herdr-agent-run-and-wait +203 -0
- package/skills/herdr-cli/scripts/herdr-agent-wait-complete +168 -0
- package/skills/notion-presentation/SKILL.md +170 -0
- package/skills/notion-presentation/references/example-redis-deck.md +97 -0
- package/skills/setup-matt-pocock-skills/SKILL.md +127 -0
- package/skills/setup-matt-pocock-skills/domain.md +51 -0
- package/skills/setup-matt-pocock-skills/issue-tracker-github.md +34 -0
- package/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +35 -0
- package/skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
- package/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/skills/tdd/SKILL.md +108 -0
- package/skills/tdd/mocking.md +59 -0
- package/skills/tdd/refactoring.md +10 -0
- package/skills/tdd/tests.md +61 -0
- package/skills/to-html/SKILL.md +83 -0
- package/skills/to-html/designs/INDEX.md +74 -0
- package/skills/to-html/designs/airbnb.DESIGN.md +581 -0
- package/skills/to-html/designs/airtable.DESIGN.md +275 -0
- package/skills/to-html/designs/alipay.DESIGN.md +456 -0
- package/skills/to-html/designs/apple.DESIGN.md +566 -0
- package/skills/to-html/designs/banksalad.DESIGN.md +621 -0
- package/skills/to-html/designs/channeltalk.DESIGN.md +374 -0
- package/skills/to-html/designs/clay.DESIGN.md +398 -0
- package/skills/to-html/designs/clickhouse.DESIGN.md +374 -0
- package/skills/to-html/designs/cohere.DESIGN.md +361 -0
- package/skills/to-html/designs/coinone.DESIGN.md +218 -0
- package/skills/to-html/designs/coupang.DESIGN.md +502 -0
- package/skills/to-html/designs/cursor.DESIGN.md +416 -0
- package/skills/to-html/designs/elevenlabs.DESIGN.md +376 -0
- package/skills/to-html/designs/expo.DESIGN.md +373 -0
- package/skills/to-html/designs/figma.DESIGN.md +490 -0
- package/skills/to-html/designs/framer.DESIGN.md +393 -0
- package/skills/to-html/designs/freee.DESIGN.md +572 -0
- package/skills/to-html/designs/gangnamunni.DESIGN.md +621 -0
- package/skills/to-html/designs/gmarket.DESIGN.md +483 -0
- package/skills/to-html/designs/gogolook.DESIGN.md +131 -0
- package/skills/to-html/designs/hahow.DESIGN.md +158 -0
- package/skills/to-html/designs/hashicorp.DESIGN.md +369 -0
- package/skills/to-html/designs/hyundaicard.DESIGN.md +177 -0
- package/skills/to-html/designs/ibm.DESIGN.md +420 -0
- package/skills/to-html/designs/kakaobank.DESIGN.md +548 -0
- package/skills/to-html/designs/kakaopay.DESIGN.md +544 -0
- package/skills/to-html/designs/karrot.DESIGN.md +445 -0
- package/skills/to-html/designs/kdan.DESIGN.md +160 -0
- package/skills/to-html/designs/krds.DESIGN.md +997 -0
- package/skills/to-html/designs/line.DESIGN.md +431 -0
- package/skills/to-html/designs/linear.app.DESIGN.md +548 -0
- package/skills/to-html/designs/miro.DESIGN.md +272 -0
- package/skills/to-html/designs/mistral.ai.DESIGN.md +353 -0
- package/skills/to-html/designs/money-forward.DESIGN.md +401 -0
- package/skills/to-html/designs/mongodb.DESIGN.md +357 -0
- package/skills/to-html/designs/naver.DESIGN.md +533 -0
- package/skills/to-html/designs/nhncloud.DESIGN.md +174 -0
- package/skills/to-html/designs/opencode.ai.DESIGN.md +388 -0
- package/skills/to-html/designs/pinterest.DESIGN.md +322 -0
- package/skills/to-html/designs/posthog.DESIGN.md +430 -0
- package/skills/to-html/designs/raycast.DESIGN.md +422 -0
- package/skills/to-html/designs/remember.DESIGN.md +460 -0
- package/skills/to-html/designs/resend.DESIGN.md +396 -0
- package/skills/to-html/designs/sanity.DESIGN.md +449 -0
- package/skills/to-html/designs/sendbird.DESIGN.md +285 -0
- package/skills/to-html/designs/smarthr.DESIGN.md +404 -0
- package/skills/to-html/designs/socar.DESIGN.md +403 -0
- package/skills/to-html/designs/spotify.DESIGN.md +265 -0
- package/skills/to-html/designs/supabase.DESIGN.md +348 -0
- package/skills/to-html/designs/superhuman.DESIGN.md +414 -0
- package/skills/to-html/designs/together.ai.DESIGN.md +356 -0
- package/skills/to-html/designs/toss.DESIGN.md +655 -0
- package/skills/to-html/designs/uber.DESIGN.md +387 -0
- package/skills/to-html/designs/upstage.DESIGN.md +232 -0
- package/skills/to-html/designs/velog.DESIGN.md +168 -0
- package/skills/to-html/designs/vercel.DESIGN.md +479 -0
- package/skills/to-html/designs/wanted.DESIGN.md +529 -0
- package/skills/to-html/designs/wise.DESIGN.md +276 -0
- package/skills/to-html/designs/yanolja.DESIGN.md +463 -0
- package/skills/to-html/designs/yeogiotte.DESIGN.md +459 -0
- package/skills/to-html/designs/zapier.DESIGN.md +433 -0
- package/skills/to-html/designs/zigzag.DESIGN.md +633 -0
- package/skills/to-issues/SKILL.md +84 -0
- package/skills/to-prd/SKILL.md +75 -0
- package/src/colors.js +15 -0
- package/src/link.js +47 -0
- package/src/prompt.js +137 -0
- 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.
|