oh-my-design-cli 1.5.0 → 1.6.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/AGENTS.md +1 -0
- package/README.ko.md +1 -1
- package/README.md +9 -9
- package/agents/omd-master.md +13 -1
- package/data/reference-fingerprints.json +1428 -523
- package/package.json +5 -4
- package/scripts/ctx-prime.cjs +266 -0
- package/skills/omd-harness/SKILL.md +135 -7
- package/skills/omd-kr-writer/SKILL.md +1 -1
- package/web/references/17live/DESIGN.md +424 -0
- package/web/references/alipay/DESIGN.md +456 -0
- package/web/references/appier/DESIGN.md +420 -0
- package/web/references/bilibili/DESIGN.md +426 -0
- package/web/references/class101/DESIGN.md +433 -0
- package/web/references/cookpad/DESIGN.md +357 -0
- package/web/references/dji/DESIGN.md +416 -0
- package/web/references/gogoro/DESIGN.md +403 -0
- package/web/references/ichef/DESIGN.md +411 -0
- package/web/references/kakaopay/DESIGN.md +1 -1
- package/web/references/kakaot/DESIGN.md +454 -0
- package/web/references/kkday/DESIGN.md +423 -0
- package/web/references/meituan/DESIGN.md +424 -0
- package/web/references/millie/DESIGN.md +533 -0
- package/web/references/money-forward/DESIGN.md +401 -0
- package/web/references/myrealtrip/DESIGN.md +445 -0
- package/web/references/naverwebtoon/DESIGN.md +429 -0
- package/web/references/note/DESIGN.md +318 -0
- package/web/references/publy/DESIGN.md +511 -0
- package/web/references/smarthr/DESIGN.md +404 -0
- package/web/references/smartnews/DESIGN.md +331 -0
- package/web/references/spoon/DESIGN.md +446 -0
- package/web/references/tada/DESIGN.md +528 -0
- package/web/references/tossbank/DESIGN.md +519 -0
- package/web/references/triple/DESIGN.md +434 -0
- package/web/references/tumblbug/DESIGN.md +530 -0
- package/web/references/watcha/DESIGN.md +425 -0
- package/web/references/wavve/DESIGN.md +438 -0
- package/web/references/wconcept/DESIGN.md +511 -0
- package/web/references/xiaohongshu/DESIGN.md +423 -0
- package/web/references/yogiyo/DESIGN.md +465 -0
|
@@ -0,0 +1,528 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: tada
|
|
3
|
+
name: TADA
|
|
4
|
+
display_name_kr: 타다
|
|
5
|
+
country: KR
|
|
6
|
+
category: consumer-tech
|
|
7
|
+
homepage: "https://tadatada.com"
|
|
8
|
+
primary_color: "#1ec59f"
|
|
9
|
+
logo:
|
|
10
|
+
type: favicon
|
|
11
|
+
slug: "https://www.google.com/s2/favicons?domain=tadatada.com&sz=128"
|
|
12
|
+
verified: "2026-05-27"
|
|
13
|
+
omd: "0.1"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Design System Inspiration of TADA (타다)
|
|
17
|
+
|
|
18
|
+
## 1. Visual Theme & Atmosphere
|
|
19
|
+
|
|
20
|
+
TADA is the Korean mobility brand that built its identity around a single, calming idea: that getting in a car should feel like a small relief, not a transaction. Its visual signature is a fresh mint-teal (`#1ec59f`) -- a color almost no incumbent transport service used, chosen the way Toss chose cerulean: to be *not* the aggressive yellow of a taxi nor the corporate navy of a logistics firm, but something that reads as clean, modern, and quietly premium. The mint is the brand. It anchors the wordmark, the primary "차량 호출" CTA, the active map pin, and the trip-in-progress state, against generous white space and a calm near-black type system.
|
|
21
|
+
|
|
22
|
+
The atmosphere TADA cultivates is *space*. The product's original differentiator was the roomy van interior, and the design language echoes that physical promise: airy layouts, soft rounded corners, comfortable type, and minimal chrome so the map and the single next action dominate. A ride-hailing app lives or dies on one-glance clarity -- where is my car, how long until it arrives, what do I tap next -- so TADA's screens resolve to one primary action at a time, the mint CTA pinned to a thumb-reachable bottom bar over a clean map canvas. The brand voice is reassuring and unhurried: the trip is handled, you can relax.
|
|
23
|
+
|
|
24
|
+
What defines TADA visually is the discipline of one signature hue against neutral calm. The mint is interaction and brand; everything else is white, soft gray surfaces, and a warm near-black for text. The result feels closer to a wellness or fintech app than to a legacy transport service -- a deliberate repositioning of "calling a car" from a stressful errand into a moment of ease.
|
|
25
|
+
|
|
26
|
+
**Key Characteristics:**
|
|
27
|
+
- TADA Mint (`#1ec59f`) as the signature brand + primary interactive color
|
|
28
|
+
- Calm near-black type on white, with soft gray surface fills
|
|
29
|
+
- Pretendard / system sans stack for Korean-Latin co-equal rendering
|
|
30
|
+
- Map-first, one-action-per-screen layouts — the mint CTA on a thumb-reachable bottom bar
|
|
31
|
+
- Soft rounded corners (8-16px) — airy, reassuring, never sharp or aggressive
|
|
32
|
+
- Generous whitespace echoing the brand's roomy-interior physical promise
|
|
33
|
+
- Minimal shadow — calm comes from clarity, not depth
|
|
34
|
+
- Reassuring, unhurried voice — "the trip is handled"
|
|
35
|
+
|
|
36
|
+
## 2. Color Palette & Roles
|
|
37
|
+
|
|
38
|
+
### Primary
|
|
39
|
+
- **TADA Mint** (`#1ec59f`): The signature brand color and primary interactive accent — wordmark, "호출하기" CTA, active map pin, trip-in-progress, links.
|
|
40
|
+
- **Mint Pressed** (`#17a384`): Pressed / hover state for mint CTAs.
|
|
41
|
+
- **Mint Light** (`#e6f8f3`): Subtle mint-tinted informational backgrounds, selected-state fills.
|
|
42
|
+
- **Pure White** (`#ffffff`): Page / map canvas, card surfaces, button text on mint.
|
|
43
|
+
- **Calm Near-Black** (`#1a1a1a`): Primary heading and strong text. Warm dark, softer than pure black.
|
|
44
|
+
|
|
45
|
+
### Neutral Scale
|
|
46
|
+
- **Gray 800** (`#333333`): Strong labels, navigation text.
|
|
47
|
+
- **Gray 700** (`#555555`): Emphasized body text.
|
|
48
|
+
- **Gray 600** (`#777777`): Body text, descriptions, ETA secondary labels.
|
|
49
|
+
- **Gray 500** (`#999999`): Caption text, secondary metadata.
|
|
50
|
+
- **Gray 400** (`#bbbbbb`): Placeholder text, disabled icons.
|
|
51
|
+
- **Gray 200** (`#e5e5e5`): Default border, dividers, input outlines.
|
|
52
|
+
- **Gray 100** (`#f2f2f2`): Secondary background, card fill, disabled surface.
|
|
53
|
+
- **Gray 50** (`#f7f7f7`): Lightest surface fill.
|
|
54
|
+
|
|
55
|
+
### Semantic
|
|
56
|
+
- **Success Mint** (`#1ec59f`): Trip-confirmed / arrived-state — the brand color doubles as success.
|
|
57
|
+
- **Error Red** (`#ff4452`): Error states, cancellation, destructive actions.
|
|
58
|
+
- **Warning Amber** (`#ff9f1c`): Surge / wait-time warnings, pending states.
|
|
59
|
+
- **Info Navy** (`#19254d`): Dark marketing / brand surface (current marketing site uses this deep navy as a contrast field; see footer note).
|
|
60
|
+
|
|
61
|
+
### Surface & Overlays
|
|
62
|
+
- **Map Scrim**: `rgba(0,0,0,0.3)`. Gradient veil for legibility of controls over the map.
|
|
63
|
+
- **Bottom Sheet Surface**: `#ffffff`. Trip detail, vehicle selection.
|
|
64
|
+
|
|
65
|
+
## 3. Typography Rules
|
|
66
|
+
|
|
67
|
+
### Font Family
|
|
68
|
+
- **Primary**: `"Pretendard", "Apple SD Gothic Neo", -apple-system, BlinkMacSystemFont, "Noto Sans KR", "Malgun Gothic", Roboto, sans-serif`
|
|
69
|
+
- **Design Principle**: No bespoke wordmark webfont on product surfaces. The system relies on Pretendard's clean geometric Korean glyphs and a warm near-black for a calm, modern read. Korean and Latin render co-equally. Map labels and ETA numbers favor tabular figures for stable alignment.
|
|
70
|
+
|
|
71
|
+
### Hierarchy
|
|
72
|
+
|
|
73
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
74
|
+
|------|------|------|--------|-------------|----------------|-------|
|
|
75
|
+
| Display | Pretendard | 28px | 700 | 38px | -0.4px | Onboarding / hero moment |
|
|
76
|
+
| Heading Large | Pretendard | 22px | 700 | 30px | -0.4px | Screen title, "어디로 갈까요?" |
|
|
77
|
+
| Heading | Pretendard | 18px | 700 | 26px | -0.3px | Section header, vehicle type title |
|
|
78
|
+
| Title | Pretendard | 16px | 600 | 24px | -0.3px | Bottom-sheet header, list header |
|
|
79
|
+
| Body Large | Pretendard | 16px | 400 | 24px | -0.2px | Descriptions, address text |
|
|
80
|
+
| Body | Pretendard | 14px | 400 | 22px | -0.2px | Default body, list metadata |
|
|
81
|
+
| ETA / Number | Pretendard | 22px+ | 700 | tight | -0.2px | Arrival minutes, fare — tabular numerals |
|
|
82
|
+
| Caption | Pretendard | 13px | 400 | 18px | -0.2px | Secondary metadata, timestamps |
|
|
83
|
+
| Caption Bold | Pretendard | 13px | 700 | 18px | -0.2px | Tag / status labels |
|
|
84
|
+
| Micro | Pretendard | 12px | 500 | 16px | -0.2px | Fine print, map labels |
|
|
85
|
+
|
|
86
|
+
### Principles
|
|
87
|
+
- **Calm warm dark**: Headings and body use warm near-black `#1a1a1a` for a reassuring rather than clinical read.
|
|
88
|
+
- **Numbers are typography**: ETA minutes and fares use 700 weight with tabular numerals — they're the most-glanced data and must align stably as they update.
|
|
89
|
+
- **Three weights**: 400 (body), 600 (titles), 700 (headings / numbers). Light is avoided on Korean glyphs.
|
|
90
|
+
- **One-glance hierarchy**: On the map screen, the next action and the ETA are the two largest elements; everything else recedes.
|
|
91
|
+
- **Tight Korean tracking**: `-0.2px` to `-0.4px` letter-spacing for clean compactness.
|
|
92
|
+
|
|
93
|
+
## 4. Component Stylings
|
|
94
|
+
|
|
95
|
+
### Buttons
|
|
96
|
+
|
|
97
|
+
**Primary (TADA Mint)**
|
|
98
|
+
- Background: `#1ec59f`
|
|
99
|
+
- Text: `#ffffff`
|
|
100
|
+
- Border: none
|
|
101
|
+
- Radius: 12px
|
|
102
|
+
- Padding: 16px 20px
|
|
103
|
+
- Font: 16px / 700 / Pretendard
|
|
104
|
+
- Hover: `#17a384`
|
|
105
|
+
- Pressed: `#149378`
|
|
106
|
+
- Disabled: `#bbbbbb` background, `#ffffff` text
|
|
107
|
+
- Use: Primary CTA — `호출하기`, `이대로 호출`, `결제하기`. The thumb-reachable bottom action.
|
|
108
|
+
|
|
109
|
+
**Dark (Navy Solid)**
|
|
110
|
+
- Background: `#19254d`
|
|
111
|
+
- Text: `#ffffff`
|
|
112
|
+
- Border: none
|
|
113
|
+
- Radius: 12px
|
|
114
|
+
- Padding: 16px 20px
|
|
115
|
+
- Font: 16px / 700 / Pretendard
|
|
116
|
+
- Use: Marketing-surface CTA / strong action where mint would feel too soft (`회원가입 없이 바로 타다 부르기` on the marketing site).
|
|
117
|
+
|
|
118
|
+
**Outline (Mint Border)**
|
|
119
|
+
- Background: `#ffffff`
|
|
120
|
+
- Text: `#1ec59f`
|
|
121
|
+
- Border: 1px solid `#1ec59f`
|
|
122
|
+
- Radius: 12px
|
|
123
|
+
- Padding: 16px 20px
|
|
124
|
+
- Font: 16px / 600 / Pretendard
|
|
125
|
+
- Hover: `#e6f8f3` background
|
|
126
|
+
- Use: Secondary CTA — `예약하기`, `경로 변경`
|
|
127
|
+
|
|
128
|
+
**Neutral (Gray Fill)**
|
|
129
|
+
- Background: `#f2f2f2`
|
|
130
|
+
- Text: `#333333`
|
|
131
|
+
- Border: none
|
|
132
|
+
- Radius: 12px
|
|
133
|
+
- Padding: 14px 16px
|
|
134
|
+
- Font: 14px / 500 / Pretendard
|
|
135
|
+
- Hover: `#e5e5e5` background
|
|
136
|
+
- Use: Tertiary actions — cancel, edit, more options
|
|
137
|
+
|
|
138
|
+
**Danger (Red)**
|
|
139
|
+
- Background: `#ff4452`
|
|
140
|
+
- Text: `#ffffff`
|
|
141
|
+
- Border: none
|
|
142
|
+
- Radius: 12px
|
|
143
|
+
- Padding: 16px 20px
|
|
144
|
+
- Font: 16px / 700 / Pretendard
|
|
145
|
+
- Use: Destructive confirm — `호출 취소`
|
|
146
|
+
|
|
147
|
+
### Inputs
|
|
148
|
+
|
|
149
|
+
**Default**
|
|
150
|
+
- Background: `#ffffff`
|
|
151
|
+
- Text: `#1a1a1a`
|
|
152
|
+
- Border: 1px solid `#e5e5e5`
|
|
153
|
+
- Radius: 12px
|
|
154
|
+
- Padding: 14px 16px
|
|
155
|
+
- Font: 16px / 400 / Pretendard
|
|
156
|
+
- Placeholder: `#bbbbbb`
|
|
157
|
+
- Focus: 1px solid `#1ec59f`
|
|
158
|
+
- Use: Default text input — phone, payment, settings forms
|
|
159
|
+
|
|
160
|
+
**Destination Search**
|
|
161
|
+
- Background: `#f2f2f2`
|
|
162
|
+
- Text: `#1a1a1a`
|
|
163
|
+
- Border: none
|
|
164
|
+
- Radius: 12px
|
|
165
|
+
- Padding: 14px 16px 14px 44px (left-pad for inline location icon)
|
|
166
|
+
- Font: 16px / 400 / Pretendard
|
|
167
|
+
- Placeholder: `#999999` ("어디로 갈까요?")
|
|
168
|
+
- Focus: `#ffffff` background, 1px solid `#1ec59f` border
|
|
169
|
+
- Use: The signature destination-entry field at the top of the home screen
|
|
170
|
+
|
|
171
|
+
**Error**
|
|
172
|
+
- Background: `#ffffff`
|
|
173
|
+
- Text: `#1a1a1a`
|
|
174
|
+
- Border: 1px solid `#ff4452`
|
|
175
|
+
- Radius: 12px
|
|
176
|
+
- Padding: 14px 16px
|
|
177
|
+
- Font: 16px / 400 / Pretendard
|
|
178
|
+
- Use: Form validation failure — helper text 13px/400 `#ff4452` below
|
|
179
|
+
|
|
180
|
+
### Cards
|
|
181
|
+
|
|
182
|
+
**Vehicle Option Card**
|
|
183
|
+
- Background: `#ffffff`
|
|
184
|
+
- Border: 1px solid `#e5e5e5`
|
|
185
|
+
- Radius: 16px
|
|
186
|
+
- Padding: 16px
|
|
187
|
+
- Shadow: none (selected gets mint border + `#e6f8f3` fill)
|
|
188
|
+
- Selected: 1.5px solid `#1ec59f`, `#e6f8f3` background
|
|
189
|
+
- Use: Vehicle type selection (타다 라이트 / 플러스 / 넥스트) with fare estimate
|
|
190
|
+
|
|
191
|
+
**Trip Card**
|
|
192
|
+
- Background: `#ffffff`
|
|
193
|
+
- Border: none
|
|
194
|
+
- Radius: 16px
|
|
195
|
+
- Padding: 20px
|
|
196
|
+
- Shadow: `0px 2px 8px rgba(0,0,0,0.08)`
|
|
197
|
+
- Use: Active-trip summary, driver + vehicle + ETA on the map screen
|
|
198
|
+
|
|
199
|
+
**Receipt Card**
|
|
200
|
+
- Background: `#ffffff`
|
|
201
|
+
- Border: 1px solid `#e5e5e5`
|
|
202
|
+
- Radius: 12px
|
|
203
|
+
- Padding: 16px
|
|
204
|
+
- Use: Trip history / fare breakdown
|
|
205
|
+
|
|
206
|
+
### Badges
|
|
207
|
+
|
|
208
|
+
**Status (Mint)**
|
|
209
|
+
- Background: `#e6f8f3`
|
|
210
|
+
- Text: `#149378`
|
|
211
|
+
- Border: none
|
|
212
|
+
- Radius: 8px
|
|
213
|
+
- Padding: 4px 8px
|
|
214
|
+
- Font: 12px / 700 / Pretendard
|
|
215
|
+
- Use: "배차 완료", "운행 중" status
|
|
216
|
+
|
|
217
|
+
**Promotion (Amber)**
|
|
218
|
+
- Background: `#fff3e0`
|
|
219
|
+
- Text: `#cc7a00`
|
|
220
|
+
- Border: none
|
|
221
|
+
- Radius: 8px
|
|
222
|
+
- Padding: 4px 8px
|
|
223
|
+
- Font: 12px / 700 / Pretendard
|
|
224
|
+
- Use: Surge / wait-time notice, scarce promotional flag
|
|
225
|
+
|
|
226
|
+
**Neutral**
|
|
227
|
+
- Background: `#f2f2f2`
|
|
228
|
+
- Text: `#555555`
|
|
229
|
+
- Border: none
|
|
230
|
+
- Radius: 8px
|
|
231
|
+
- Padding: 4px 8px
|
|
232
|
+
- Font: 12px / 700 / Pretendard
|
|
233
|
+
- Use: Metadata tag, vehicle-feature label
|
|
234
|
+
|
|
235
|
+
### Map Controls
|
|
236
|
+
|
|
237
|
+
**Floating Pin**
|
|
238
|
+
- Color: `#1ec59f` (origin/active) / `#1a1a1a` (destination)
|
|
239
|
+
- Use: Map markers — the active/origin pin carries the mint
|
|
240
|
+
|
|
241
|
+
**Bottom Action Bar**
|
|
242
|
+
- Background: `#ffffff`
|
|
243
|
+
- Border: 1px top `#e5e5e5` (or shadow `0px -2px 12px rgba(0,0,0,0.08)`)
|
|
244
|
+
- Radius: 16px (top corners) when raised as a sheet
|
|
245
|
+
- Use: Sticky container for the primary mint CTA + fare/ETA summary
|
|
246
|
+
|
|
247
|
+
### Navigation
|
|
248
|
+
- Top bar: transparent over map or `#ffffff`, ~56px, back/menu icon left, profile right.
|
|
249
|
+
- Bottom tab bar (mobile): `홈`, `이용 내역`, `더보기`. Active label `#1ec59f` / icon filled, inactive `#999999`. Mint marks the active tab.
|
|
250
|
+
|
|
251
|
+
## 5. Layout Principles
|
|
252
|
+
|
|
253
|
+
### Spacing System
|
|
254
|
+
- Base unit: 8px
|
|
255
|
+
- Scale: 4px, 8px, 12px, 16px, 20px, 24px, 32px, 40px
|
|
256
|
+
- Global gutter (mobile): 16-20px each side
|
|
257
|
+
- Bottom action bar: 16px inset + safe-area
|
|
258
|
+
- Card internal padding: 16-20px (generous, echoing the roomy-interior promise)
|
|
259
|
+
|
|
260
|
+
### Grid & Container
|
|
261
|
+
- Mobile-first, single-column over a full-bleed map canvas
|
|
262
|
+
- The map fills the screen; controls float as cards / bottom sheet
|
|
263
|
+
- Detail / history: single-column list, 16px gutter
|
|
264
|
+
- Marketing web (tadatada.com): full-width sections, centered content, navy contrast fields
|
|
265
|
+
|
|
266
|
+
### Whitespace Philosophy
|
|
267
|
+
- **Space is the product**: TADA's physical differentiator was room; the UI echoes it with airy layouts and generous card padding.
|
|
268
|
+
- **One action, lots of air**: The primary CTA sits alone at the bottom with breathing room around it — no competing buttons.
|
|
269
|
+
- **Map dominates**: Chrome is minimal so the map and the next action own the screen.
|
|
270
|
+
|
|
271
|
+
### Border Radius Scale
|
|
272
|
+
- Subtle (8px): Badges, small tags
|
|
273
|
+
- Comfortable (12px): Buttons, inputs, receipt cards
|
|
274
|
+
- Soft (16px): Vehicle cards, trip cards, bottom-sheet top corners
|
|
275
|
+
- Note: TADA is a *soft-corner* system — sharpness reads as aggressive / transactional, the opposite of the calm brand.
|
|
276
|
+
|
|
277
|
+
## 6. Depth & Elevation
|
|
278
|
+
|
|
279
|
+
| Level | Treatment | Use |
|
|
280
|
+
|-------|-----------|-----|
|
|
281
|
+
| Flat (Level 0) | No shadow | Map canvas, default surfaces |
|
|
282
|
+
| Subtle (Level 1) | `0px 1px 3px rgba(0,0,0,0.06)` | List separation, slight lift |
|
|
283
|
+
| Standard (Level 2) | `0px 2px 8px rgba(0,0,0,0.08)` | Trip cards, floating controls over map |
|
|
284
|
+
| Floating (Level 3) | `0px 4px 16px rgba(0,0,0,0.12)` | Bottom sheets, dialogs |
|
|
285
|
+
| Action Bar | `0px -2px 12px rgba(0,0,0,0.08)` | Sticky bottom CTA container |
|
|
286
|
+
|
|
287
|
+
**Shadow Philosophy**: TADA keeps shadows soft and neutral. The calm of a mobility app comes from clarity — knowing where your car is — not from dramatic depth. Floating controls over the map get just enough shadow to detach from the map texture. No brand-tinted shadows; the mint lives in fills and borders, not in elevation.
|
|
288
|
+
|
|
289
|
+
## 7. Do's and Don'ts
|
|
290
|
+
|
|
291
|
+
### Do
|
|
292
|
+
- Use TADA Mint (`#1ec59f`) for the primary CTA, active pin, and trip-in-progress state
|
|
293
|
+
- Keep warm near-black `#1a1a1a` for headings and body
|
|
294
|
+
- Pin the single mint CTA to a thumb-reachable bottom action bar over the map
|
|
295
|
+
- Use tabular numerals at 700 weight for ETA minutes and fares
|
|
296
|
+
- Keep corners soft (12-16px) — the brand is calm, not aggressive
|
|
297
|
+
- Give cards and the action bar generous padding — echo the roomy interior
|
|
298
|
+
- Use `#e6f8f3` mint-light for selected vehicle cards and informational fills
|
|
299
|
+
|
|
300
|
+
### Don't
|
|
301
|
+
- Don't use the mint as decoration — reserve it for interactive / brand / active states
|
|
302
|
+
- Don't put two primary buttons on one screen — one action at a time
|
|
303
|
+
- Don't sharpen corners to 0-4px — soft corners are the calm brand signal
|
|
304
|
+
- Don't crowd the map with chrome — controls float, the map dominates
|
|
305
|
+
- Don't use heavy or tinted shadows — calm comes from clarity, not depth
|
|
306
|
+
- Don't use red for anything but errors / cancellation
|
|
307
|
+
- Don't shout in copy — the voice is reassuring and unhurried
|
|
308
|
+
|
|
309
|
+
## 8. Responsive Behavior
|
|
310
|
+
|
|
311
|
+
### Breakpoints
|
|
312
|
+
| Name | Width | Key Changes |
|
|
313
|
+
|------|-------|-------------|
|
|
314
|
+
| Mobile (Primary) | <480px | Full map canvas, floating controls, bottom action bar |
|
|
315
|
+
| Tablet | 480-768px | Wider cards, optional side panel for trip detail |
|
|
316
|
+
| Desktop (Web) | >768px | Marketing site — centered sections, navy contrast fields; app mirrors mobile in a centered column |
|
|
317
|
+
|
|
318
|
+
### Touch Targets
|
|
319
|
+
- Primary CTA: ~52-56px height
|
|
320
|
+
- Vehicle cards: minimum 64px tap height
|
|
321
|
+
- Bottom tab items: 56px height
|
|
322
|
+
- Map pins / floating controls: large, thumb-friendly
|
|
323
|
+
|
|
324
|
+
### Collapsing Strategy
|
|
325
|
+
- Bottom sheet → centered modal on larger screens
|
|
326
|
+
- Sticky bottom CTA bar with safe-area insets on all devices
|
|
327
|
+
- Map stays full-bleed; controls reflow into a side panel on tablet+
|
|
328
|
+
|
|
329
|
+
### Image Behavior
|
|
330
|
+
- Vehicle illustrations: clean line/flat art, consistent sizing
|
|
331
|
+
- Driver photos: circular, 40-48px on the trip card
|
|
332
|
+
- Map tiles: full-bleed, controls layered above with scrim where needed
|
|
333
|
+
|
|
334
|
+
## 9. Agent Prompt Guide
|
|
335
|
+
|
|
336
|
+
### Quick Color Reference
|
|
337
|
+
- Primary CTA: TADA Mint (`#1ec59f`)
|
|
338
|
+
- CTA Pressed: Mint Dark (`#17a384`)
|
|
339
|
+
- Background: Pure White (`#ffffff`)
|
|
340
|
+
- Surface fill: Gray 100 (`#f2f2f2`)
|
|
341
|
+
- Heading text: Calm Near-Black (`#1a1a1a`)
|
|
342
|
+
- Body text: Gray 600 (`#777777`)
|
|
343
|
+
- Caption: Gray 500 (`#999999`)
|
|
344
|
+
- Placeholder: Gray 400 (`#bbbbbb`)
|
|
345
|
+
- Border: Gray 200 (`#e5e5e5`)
|
|
346
|
+
- Mint light (selected/info): (`#e6f8f3`)
|
|
347
|
+
- Error: Red (`#ff4452`)
|
|
348
|
+
- Marketing dark field: Navy (`#19254d`)
|
|
349
|
+
|
|
350
|
+
### Example Component Prompts
|
|
351
|
+
- "Create a TADA destination search field: #f2f2f2 bg, no border, 12px radius, 14px 16px 14px 44px padding (left location icon), placeholder '어디로 갈까요?' in 16px/400 #999999. Focus: #ffffff bg, 1px solid #1ec59f."
|
|
352
|
+
- "Build a primary CTA: #1ec59f bg, white text, 16px weight 700 Pretendard, padding 16px 20px, 12px radius, full-width, pinned to bottom action bar. Pressed #17a384. Label '호출하기'."
|
|
353
|
+
- "Design a vehicle option card: white bg, 1px #e5e5e5 border, 16px radius, 16px padding. Title 16px/600 #1a1a1a, fare estimate 16px/700 tabular #1a1a1a right-aligned. Selected: 1.5px #1ec59f border, #e6f8f3 fill."
|
|
354
|
+
- "Create a trip card over the map: white bg, no border, 16px radius, 20px padding, 0px 2px 8px rgba(0,0,0,0.08) shadow. Driver circular photo 44px, ETA in 22px/700 tabular #1a1a1a, status badge #e6f8f3 bg / #149378 / 8px radius '배차 완료'."
|
|
355
|
+
- "Design a status badge: #e6f8f3 bg, #149378 text, 12px/700 Pretendard, 4px 8px padding, 8px radius, '운행 중'."
|
|
356
|
+
|
|
357
|
+
### Iteration Guide
|
|
358
|
+
1. TADA mint `#1ec59f` is the brand + interactive accent — CTA, active pin, trip state
|
|
359
|
+
2. Headings and body are warm `#1a1a1a`, never pure `#000`
|
|
360
|
+
3. One primary action per screen, pinned to a thumb-reachable bottom bar
|
|
361
|
+
4. ETA / fare numbers: 700 weight, tabular numerals
|
|
362
|
+
5. Soft corners: 8px badges, 12px buttons/inputs, 16px cards/sheets
|
|
363
|
+
6. Shadows soft and neutral — calm from clarity, not depth
|
|
364
|
+
7. The map dominates; chrome floats and recedes
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## 10. Voice & Tone
|
|
369
|
+
|
|
370
|
+
TADA speaks like a calm, reliable driver who has everything handled — reassuring, unhurried, never salesy. The voice exists to reduce the small anxieties of getting somewhere: where is the car, how long, what's the fare. Korean copy uses warm, clear endings (`-요`, `-해요`) and direct imperatives (`호출하기`, `타러 가기`) over institutional `-ㅂ니다`. The brand's whole thesis is captured in its positioning that better movement makes for better living — that a ride should feel like ease, not a chore.
|
|
371
|
+
|
|
372
|
+
| Context | Tone |
|
|
373
|
+
|---|---|
|
|
374
|
+
| CTAs | Clear Korean imperatives (`호출하기`, `이대로 호출`, `결제하기`, `타러 가기`) |
|
|
375
|
+
| Status updates | Reassuring present-tense (`기사님이 배차되었어요`, `곧 도착해요`). |
|
|
376
|
+
| ETA / fare | Bare facts, exact numbers (`3분 후 도착`, `예상 요금 8,400원`). No vague "약". |
|
|
377
|
+
| Empty states | Gentle + next step (`최근 이용 내역이 없어요` + `호출하러 가기`). Never `데이터가 없습니다`. |
|
|
378
|
+
| Error messages | Blameless + actionable (`주변에 차량이 없어요. 잠시 후 다시 시도해 주세요`). No `오류가 발생했습니다`. |
|
|
379
|
+
| Cancellation | Clear, no guilt (`호출을 취소했어요`). |
|
|
380
|
+
| Onboarding | One idea per screen, calm and welcoming. |
|
|
381
|
+
|
|
382
|
+
**Forbidden phrases.** `지금 안 부르면 손해`, `초특가 호출!!!`, `데이터가 없습니다`, `오류가 발생했습니다`, `불편을 드려 죄송합니다`, vague fare approximations (`약 ~원`) on the confirm screen. The brand sells calm; urgency and hype are off-brand. Emoji avoided in trip-status and fare contexts.
|
|
383
|
+
|
|
384
|
+
**Voice samples.**
|
|
385
|
+
|
|
386
|
+
- `회원가입 없이 바로 타다 부르기` — frictionless-entry CTA on the marketing site. <!-- cited: live tadatada.com, 2026-05 -->
|
|
387
|
+
- `어디로 갈까요?` — destination-field placeholder, the home-screen greeting. <!-- illustrative: standard mobility destination-entry pattern -->
|
|
388
|
+
- `기사님이 배차되었어요` — driver-assigned status. <!-- illustrative: standard TADA trip-status pattern -->
|
|
389
|
+
- `곧 도착해요` — arrival-imminent status. <!-- illustrative: standard TADA trip-status pattern -->
|
|
390
|
+
- `호출하기` — primary call-a-car CTA. <!-- illustrative: standard TADA CTA pattern -->
|
|
391
|
+
|
|
392
|
+
## 11. Brand Narrative
|
|
393
|
+
|
|
394
|
+
TADA (타다) launched on **October 8, 2018**, built by **VCNC** — a startup best known for the couples app Between, which was acquired by car-sharing company **SOCAR** and redirected at mobility ([namu.wiki — 타다(서비스)](https://namu.wiki/w/%ED%83%80%EB%8B%A4(%EC%84%9C%EB%B9%84%EC%8A%A4)), [ko.wikipedia.org — 타다 플랫폼](https://ko.wikipedia.org/wiki/%ED%83%80%EB%8B%A4_(%ED%94%8C%EB%9E%AB%ED%8F%BC))). Its original product — roomy 11-seat vans summoned on demand with a driver — was a deliberate repositioning of "calling a car" away from the stress of hailing a taxi toward something clean, spacious, and premium. The mint-teal brand color, the airy interface, and the reassuring voice all served that single promise: *better movement, better living.*
|
|
395
|
+
|
|
396
|
+
TADA's early trajectory is also a famous chapter in Korean tech-regulation history — its rapid growth collided with the taxi industry and led to the so-called "타다 금지법," forcing a pivot of the original van service. The brand survived and continued under the VCNC / SOCAR umbrella, evolving into a franchise-based premium-taxi and reservation-mobility platform (airport transfers, premium taxi, business shuttles) while keeping the calm, space-forward design identity ([thevc.kr — VCNC](https://thevc.kr/VCNC), [mydailybyte.com — about TADA](https://mydailybyte.com/about_tada/)).
|
|
397
|
+
|
|
398
|
+
What TADA refuses: the aggressive yellow-and-meter aesthetic of legacy taxis, the surge-shaming red urgency of some global ride apps, and chrome-heavy interfaces that bury the map. Its design treats the act of moving through the city as something that can feel calm — a roomy seat, a clear ETA, one mint button, and the quiet confidence that the trip is handled.
|
|
399
|
+
|
|
400
|
+
*Note on color: the current public marketing site (tadatada.com) leans on a deep navy (`#19254d`) as its contrast field, reflecting the post-relaunch premium-taxi positioning. The mint-teal documented here as `primary_color` is TADA's signature brand identity established at launch and associated with the brand across its app and marketing; the navy is retained as the dark marketing surface (§2 Semantic / Info Navy).*
|
|
401
|
+
|
|
402
|
+
## 12. Principles
|
|
403
|
+
|
|
404
|
+
1. **Space is the brand.** TADA's physical promise was room; the UI echoes it with airy layouts and generous padding. *UI implication:* never compress cards or the action bar to fit more — the breathing room is the brand signal.
|
|
405
|
+
2. **One mint, one action.** The mint marks the single next thing to tap; each screen resolves to one primary action. *UI implication:* two primary buttons on a screen means it's two screens; mint never decorates.
|
|
406
|
+
3. **The map dominates, chrome floats.** A mobility app is judged on one-glance clarity. *UI implication:* controls float as cards / a bottom sheet over a full-bleed map; chrome stays minimal.
|
|
407
|
+
4. **Calm over urgency.** The brand sells ease, not pressure. *UI implication:* no surge-shaming red, no hype; status copy is reassuring and present-tense.
|
|
408
|
+
5. **Numbers are typography.** ETA and fare are the most-glanced data. *UI implication:* render them at 700 weight with tabular numerals so they stay stable as they update.
|
|
409
|
+
6. **Soft corners signal calm.** 12-16px radii throughout. *UI implication:* sharp 0-4px corners read as transactional / aggressive and should be softened.
|
|
410
|
+
|
|
411
|
+
## 13. Personas
|
|
412
|
+
|
|
413
|
+
*Personas are fictional archetypes informed by publicly described Korean premium-mobility user segments, not individual people.*
|
|
414
|
+
|
|
415
|
+
**수민 (Sumin), 34, Seoul.** Consultant who takes late client meetings in 강남. Calls TADA when she wants a clean, predictable ride home without the variability of hailing a taxi. Glances at the ETA and fare, taps the mint button once, and relaxes. Values that the app never makes her think.
|
|
416
|
+
|
|
417
|
+
**준호 (Junho), 41, Seoul.** Frequent flyer, books TADA airport transfers the night before a 6am flight. Needs the reservation flow to be unambiguous — pickup time, vehicle, fare locked in. Distrusts surge pricing; appreciates that TADA shows an exact estimate, not a vague range.
|
|
418
|
+
|
|
419
|
+
**예린 (Yerin), 29, Seongnam.** Marketing manager who uses TADA Business for client pickups. Treats the calm interface as a reflection of professionalism — a chaotic app would embarrass her in front of a client in the back seat.
|
|
420
|
+
|
|
421
|
+
**민철 (Mincheol), 52, Seoul.** Less app-fluent; his daughter set up TADA for him. Relies on the single large mint CTA and the clear "곧 도착해요" status. Would abandon a screen that asked him to make more than one decision at a time.
|
|
422
|
+
|
|
423
|
+
## 14. States
|
|
424
|
+
|
|
425
|
+
| State | Treatment |
|
|
426
|
+
|---|---|
|
|
427
|
+
| **Empty (no trip history)** | Single gentle line (`최근 이용 내역이 없어요`) in 14px/400 `#777777`, 12px gap, primary-mint CTA `호출하러 가기`. No harsh empty illustration. |
|
|
428
|
+
| **Empty (no cars nearby)** | One line `주변에 차량이 없어요` in 16px/600 `#1a1a1a`, subline `잠시 후 다시 시도해 주세요` 14px/400 `#777777`, retry button in mint. |
|
|
429
|
+
| **Empty (search no results)** | `'{검색어}'에 대한 장소를 찾지 못했어요` 14px/400 `#777777`, recent destinations below. |
|
|
430
|
+
| **Loading (matching driver)** | Mint pulsing ring animation over the map with `기사님을 찾고 있어요` 16px/600 `#1a1a1a`. No blocking spinner overlay. |
|
|
431
|
+
| **Loading (map / ETA)** | ETA renders as `--분` until resolved; never a skeleton block that looks like a real value. Map tiles fade in. |
|
|
432
|
+
| **Loading (call action)** | Mint button text swaps to a 24px `#ffffff` spinner — geometry unchanged for frame-stability. Prevents double-call. |
|
|
433
|
+
| **Error (inline form)** | Input border `#ff4452` 1px, helper text 13px/400 `#ff4452` below. One actionable sentence. |
|
|
434
|
+
| **Error (toast)** | `#1a1a1a` background, white 14px/500 text, 12px radius, 3s auto-dismiss. Above the bottom action bar. One sentence, no icon. |
|
|
435
|
+
| **Error (network / blocking)** | Centered: 16px/700 `#1a1a1a` headline (`연결이 불안정해요`), 14px/400 `#777777` subline, mint retry button. No illustration. |
|
|
436
|
+
| **Success (driver assigned)** | Trip card slides up: mint `배차 완료` status badge, driver photo + name + vehicle, ETA in 22px/700 tabular. Not a toast — a dedicated card. |
|
|
437
|
+
| **Success (trip complete)** | Dedicated receipt screen: `이용해 주셔서 감사해요` 22px/700 `#1a1a1a`, fare breakdown card, rating prompt, mint `확인` CTA. |
|
|
438
|
+
| **Skeleton** | `#f2f2f2` blocks at exact card dimensions, shimmer 1.2s. ETA / fare slots show `--`, never inferred placeholders. |
|
|
439
|
+
| **Disabled** | Button bg drops to `#bbbbbb`, text stays `#ffffff`. No outline tricks. |
|
|
440
|
+
|
|
441
|
+
## 15. Motion & Easing
|
|
442
|
+
|
|
443
|
+
**Durations** (named, not raw milliseconds):
|
|
444
|
+
|
|
445
|
+
| Token | Value | Use |
|
|
446
|
+
|---|---|---|
|
|
447
|
+
| `motion-instant` | 0ms | Toggle flips, checkbox states |
|
|
448
|
+
| `motion-fast` | 150ms | Hover, focus, button press dim, small reveals |
|
|
449
|
+
| `motion-standard` | 250ms | Default — sheet opens, card expands, tab switches |
|
|
450
|
+
| `motion-slow` | 400ms | Emphasized — driver-assigned confirmation, success entry |
|
|
451
|
+
| `motion-page` | 320ms | Route push/pop |
|
|
452
|
+
| `motion-pulse` | 1400ms | Matching-driver pulse-ring loop |
|
|
453
|
+
|
|
454
|
+
**Easings:**
|
|
455
|
+
|
|
456
|
+
| Token | Curve | Use |
|
|
457
|
+
|---|---|---|
|
|
458
|
+
| `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Sheets, cards, route entries |
|
|
459
|
+
| `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals, sheet close |
|
|
460
|
+
| `ease-standard` | `cubic-bezier(0.4, 0.0, 0.2, 1)` | Two-way transitions, map control reflow |
|
|
461
|
+
| `ease-gentle-spring` | `cubic-bezier(0.34, 1.3, 0.64, 1)` | Reserved — driver-assigned trip-card rise. Gentle reassurance, never bouncy. |
|
|
462
|
+
|
|
463
|
+
**Signature motions.**
|
|
464
|
+
|
|
465
|
+
1. **Matching pulse.** While finding a driver, a soft mint ring pulses outward from the user's map pin on `motion-pulse` loop — calm, breathing, never frantic. The opposite of a frantic loading spinner.
|
|
466
|
+
2. **Trip-card rise.** When a driver is assigned, the trip card rises from the bottom (`motion-slow / ease-gentle-spring`) with a gentle settle — the one place spring is licensed, signalling reassurance that the trip is handled.
|
|
467
|
+
3. **ETA tick.** When the ETA updates, the old number fades out and the new slides up 8px (`motion-fast / ease-enter`). Never cross-fade a number — a flickering ETA reads as a bug.
|
|
468
|
+
4. **Bottom-sheet presentation.** Sheets rise from `y+40px` (`motion-standard / ease-enter`) with a synchronized backdrop fade `rgba(0,0,0,0)` → `rgba(0,0,0,0.3)`. Dismissal `motion-fast / ease-exit`.
|
|
469
|
+
5. **Reduce motion.** Under `prefers-reduced-motion: reduce`, the matching pulse becomes a static ring, all `motion-*` collapse to `motion-instant`, cross-fades replace slides. The app stays fully usable.
|
|
470
|
+
|
|
471
|
+
<!--
|
|
472
|
+
OmD v0.1 Sources — Philosophy Layer (sections 10–15)
|
|
473
|
+
|
|
474
|
+
Tier 1 — Direct verification (MCP playwright, 2026-05-27):
|
|
475
|
+
- https://www.tadatada.com/ (live marketing site, redirected from
|
|
476
|
+
tadatada.com). Confirmed: body bg #ffffff, body color rgb(0,0,0),
|
|
477
|
+
Pretendard/system sans; dominant brand/contrast field is a deep navy
|
|
478
|
+
rgb(25,37,77) = #19254d (~84+ occurrences) on hero CTA banners
|
|
479
|
+
("UPDATE 회원가입 없이 바로 타다 부르기"); secondary deep navy
|
|
480
|
+
rgb(56,79,133); light-blue accent rgb(128,202,255); card radius 4px on
|
|
481
|
+
some marketing tiles. The current marketing site does NOT prominently
|
|
482
|
+
display the mint as the dominant color — see assumed-vs-verified note.
|
|
483
|
+
|
|
484
|
+
Tier 2 — Press / secondary (WebSearch, 2026-05):
|
|
485
|
+
- https://namu.wiki/w/타다(서비스) — launch 2018-10-08, VCNC build,
|
|
486
|
+
SOCAR acquisition of VCNC, "타다 금지법" regulatory history, pivot
|
|
487
|
+
to franchise premium-taxi / reservation mobility.
|
|
488
|
+
- https://ko.wikipedia.org/wiki/타다_(플랫폼) — platform overview,
|
|
489
|
+
van-hailing origin, regulatory pivot.
|
|
490
|
+
- https://thevc.kr/VCNC — VCNC company / investment profile.
|
|
491
|
+
- https://mydailybyte.com/about_tada/ — TADA as a comprehensive mobility
|
|
492
|
+
brand presenting a new movement standard.
|
|
493
|
+
|
|
494
|
+
ASSUMED-VS-VERIFIED NOTE: The task brief assumed mint/teal #1EC59F as
|
|
495
|
+
primary. The CURRENT live marketing site (tadatada.com) is dominated by
|
|
496
|
+
deep navy #19254d, NOT mint. The mint-teal #1EC59F is TADA's well-known
|
|
497
|
+
signature brand identity established at the 2018 launch and associated
|
|
498
|
+
with the brand across its app history. This DESIGN.md documents the mint
|
|
499
|
+
as primary_color (the brand's identity) AND documents the live navy
|
|
500
|
+
#19254d as the dark marketing surface (§2 Semantic, §11 note). The exact
|
|
501
|
+
mint hex #1EC59F is the assumed brand value, NOT re-confirmed by a live
|
|
502
|
+
token grab on the current marketing site — flagged honestly.
|
|
503
|
+
|
|
504
|
+
Personas (§13) are fictional archetypes informed by publicly described
|
|
505
|
+
Korean premium-mobility user segments. Any resemblance to specific
|
|
506
|
+
individuals is unintended.
|
|
507
|
+
|
|
508
|
+
Interpretive claims (editorial, not documented TADA statements):
|
|
509
|
+
- "Space is the brand" / calm-positioning framing (§1, §11, §12) —
|
|
510
|
+
editorial reading of the roomy-interior product origin and brand voice.
|
|
511
|
+
- The 6 numbered principles (§12) — synthesized from the mobility-app
|
|
512
|
+
pattern + brand posture; not a published design-principles list.
|
|
513
|
+
- All §4 component geometry (mint button radius/padding, card radii,
|
|
514
|
+
badge values) is reconciled from the calm soft-corner brand posture +
|
|
515
|
+
mobility-UX conventions, NOT from a live app token grab (the app is
|
|
516
|
+
native, not web-inspectable here). Re-verify against the live app /
|
|
517
|
+
an official DS before treating as authoritative specs.
|
|
518
|
+
- The spring stance and signature motions (§15) — derived from the calm
|
|
519
|
+
brand posture, not documented TADA motion rules.
|
|
520
|
+
-->
|
|
521
|
+
|
|
522
|
+
---
|
|
523
|
+
|
|
524
|
+
**Verified:** 2026-05-27 (omd:add-reference initial create — Tier 1 marketing-site inspect / Tier 2 press confirmed)
|
|
525
|
+
**Tier 1 sources:** www.tadatada.com (live playwright inspect — body `#000` on `#fff`, Pretendard/system sans; dominant marketing field navy `#19254d`; light-blue accent `#80caff`). Note: live marketing site is navy-led, not mint-led.
|
|
526
|
+
**Tier 2 sources:** getdesign.md/tada — not checked. styles.refero.design — not checked. Namu Wiki + Korean Wikipedia + THE VC + mydailybyte (2018 launch, VCNC/SOCAR, 타다 금지법 regulatory pivot, premium-mobility repositioning).
|
|
527
|
+
**Style ref:** `toss` (KR calm product-tone scaffolding).
|
|
528
|
+
**Conflicts unresolved:** Assumed primary mint `#1ec59f` is TADA's signature brand identity but the CURRENT marketing site is navy-led (`#19254d`). Documented mint as `primary_color` (brand identity) with navy retained as the dark marketing surface. The exact mint hex is the assumed brand value, NOT re-confirmed by live token grab on the current site. Native app not web-inspectable; §4 component geometry reconciled from brand posture + mobility-UX conventions. Re-verify against the live app or an official DS.
|