PUBLY is a Korean career-knowledge membership, and its interface reads like a calm professional reading room rebuilt for the work-from-anywhere generation -- clean, credible, and quietly confident.
Needs work: conflict unresolved · freshness conflict · proof incomplete · tier1 source missing · token source unverified · verification v2 missing
PUBLY is a Korean career-knowledge membership, and its interface reads like a calm professional reading room rebuilt for the work-from-anywhere generation -- clean, credible, and quietly confident. The page opens on a crisp white canvas (#ffffff) with deep slate-ink type (#0f172a) and a single decisive purple (#7a3bff) that carries every interactive moment: the membership CTA, links, active states, the "알림 설정하기" button. This isn't the institutional blue of legacy edtech nor the playful pastel of a consumer app; it's a saturated, modern violet that signals premium knowledge, made for ambitious people.
The system is built on a slate-gray neutral foundation -- the Tailwind-style slate family (#0f172a ink, #e2e8f0 borders) is everywhere, observed thousands of times across the live surface -- giving the product a composed, design-system-disciplined feel. Content is organized into clean cards with generous whitespace and a comfortable 14-16px reading scale, because the product is reading: long-form career reports, templates, and curated knowledge. The purple appears sparingly and deliberately, concentrated on the actions that move a member forward, while a soft purple-tint surface (#f1ebff) provides gentle emphasis without shouting.
What defines PUBLY visually is the pairing of a credible slate-and-white reading environment with one ambitious purple accent. The chrome stays out of the way of the prose; the purple says "act on this knowledge." The result is a tool that feels both trustworthy enough to pay for and modern enough to feel like growth.
Key Characteristics:
#7a3bff) as the sole interactive accent — membership CTA, links, active states#0f172a) on white, with a Tailwind-style slate neutral scale#f1ebff) for gentle emphasis, used sparingly#e2e8f0) hairline borders for clean card and section separation#7a3bff): The sole primary interactive color — membership CTA, links, active tabs, selection. The workhorse accent (observed rgb(122,59,255), ~100 occurrences).#6429e6): Pressed / hover state for purple CTAs.#f1ebff): Soft purple-tinted backgrounds, selected-state fills, gentle emphasis (observed rgb(241,235,255)).#ffffff): Page canvas, card surfaces, button text on purple.#0f172a): Primary heading + body text color — deep slate, the most-used text color (observed rgb(15,23,42)).#111213): Near-black for strongest emphasis (observed rgb(17,18,19)).#282b2f): Strong labels, dark text (observed rgb(40,43,47)).#3c4043): Emphasized body / sub-headings (observed rgb(60,64,67)).#575b5c): Body secondary text, descriptions (observed rgb(87,91,92)).#77797b): Caption text, metadata (observed rgb(119,121,123)).#979b9e): Placeholder text, disabled labels (observed rgb(151,155,158)).#ced0d1): Disabled borders, inactive icons (observed rgb(206,208,209)).#e2e8f0): Default border, dividers, card outline — the most-used non-text color (observed rgb(226,232,240), ~900 occurrences).#f5f5f5): Secondary background, section fill (observed rgb(245,245,245)).#7a3bff): Primary action / selected — the brand color doubles as the action color.#ef4444): Error states, destructive actions, validation failure.#16a34a): Confirmations, completion.rgba(0,0,0,0.9)): Strong overlay scrim for modals over content.#e2e8f0): Card outline, divider, input border (slate-200).#ced0d1): Emphasized border, active input outline (slate-300).#7a3bff): Focused input, selected card.-apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji" (observed on live publy.co, 2026-05; Korean falls through to system Korean / Pretendard where installed)| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| Display | System sans | 30px | 700 | 40px | -0.4px | Landing hero, report cover title |
| Heading Large | System sans | 24px | 700 | 32px | -0.3px | Section / report title |
| Heading | System sans | 20px | 700 | 28px | -0.3px | Sub-section, card group header |
| Title | System sans | 16px | 600 | 24px | -0.2px | Card title, list header |
| Body Large | System sans | 16px | 400 | 26px | -0.2px | Long-form report body — generous leading |
| Body | System sans | 14px | 400 | 22px | -0.2px | Default body, card description |
| Label | System sans | 14px | 600 | 20px | -0.2px | Tab label, emphasized inline |
| Caption | System sans | 13px | 400 | 18px | -0.2px | Metadata, author, read-time |
| Caption Bold | System sans | 13px | 600 | 18px | -0.2px | Tag / category label |
| Micro | System sans | 12px | 500 | 16px | -0.2px | Fine print, control labels |
#0f172a headings → #575b5c body → #77797b captions), not in color.-0.2px to -0.4px letter-spacing keeps Korean and Latin titles composed.Primary (PUBLY Purple)
#7a3bff#ffffff#6429e6#5a23cc#ced0d1 background, #ffffff text멤버십 시작하기, 알림 설정하기, 3일 무료체험Outline (Purple Border)
#ffffff#7a3bff#7a3bff#f1ebff background저장하기, 공유하기Neutral (Slate Outline)
#ffffff#282b2f#e2e8f0#f5f5f5 backgroundGhost (Text)
#7a3bff#f1ebff backgroundDefault
#ffffff#0f172a#e2e8f0#979b9e#7a3bffSearch
#f5f5f5#0f172a#77797b ("어떤 지식이 필요하세요?")#ffffff background, 1px solid #7a3bff borderError
#ffffff#0f172a#ef4444#ef4444 belowContent Card
#ffffff#e2e8f00px 2px 8px rgba(0,0,0,0.06))Featured Card
#ffffff (or purple-tint #f1ebff accent strip)#e2e8f00px 2px 8px rgba(0,0,0,0.06)Membership Card
#f1ebff (purple-tint) or #7a3bff (full purple for emphasis)Category Tag (Default)
#f5f5f5#575b5cCategory Tag (Active)
#f1ebff#7a3bffBEST / New Badge
#7a3bff#ffffffRead-time / Meta
#77797b#ffffff background, ~56px height, 1px bottom border #e2e8f0. Logo left, search center, profile / membership CTA right.#7a3bff text + 2px purple underline, inactive #575b5c.| Level | Treatment | Use |
|---|---|---|
| Flat (Level 0) | No shadow, 1px #e2e8f0 border | Default content card, page surface |
| Hover (Level 1) | 0px 2px 8px rgba(0,0,0,0.06) | Card hover lift, featured card |
| Soft (Level 2) | 0px 4px 12px rgba(0,0,0,0.08) | Dropdown menus, sticky header on scroll |
| Floating (Level 3) | 0px 8px 24px rgba(0,0,0,0.12) | Modals, bottom sheets |
Shadow Philosophy: PUBLY communicates credibility through composed flatness, not depth. Default cards carry a 1px slate-200 border instead of a shadow — the design-system-disciplined look. Shadows appear only on hover lift and floating overlays, always neutral pure-black at low opacity. No brand-tinted shadows; the purple lives in fills and borders.
#7a3bff) for the membership CTA, links, and active states#0f172a → #575b5c → #77797b) to build text hierarchy#f1ebff for gentle emphasis (selected tags, membership surface)#e2e8f0 border, no shadow — the composed look| Name | Width | Key Changes |
|---|---|---|
| Mobile | <768px | Single-column card stack, bottom nav |
| Tablet | 768-1024px | 2-column card grid, side filters |
| Desktop | >1024px | 2-3 column grid, ~1080px column; report view narrows to ~720px |
#7a3bff)#6429e6)#ffffff)#f5f5f5)#0f172a)#575b5c)#77797b)#979b9e)#e2e8f0)#f1ebff)#ef4444)#7a3bff is the sole interactive accent — CTA, links, active states#e2e8f0 border, no shadow — the composed look#f1ebff for gentle emphasis; full purple only on membership surfacesPUBLY speaks like a sharp, generous senior colleague who has done the reading for you — credible, direct, and growth-oriented without being preachy. The voice respects the reader's time and ambition; it sells knowledge as a tool for steady career growth (꾸준한 성장), not as hustle-culture pressure. Korean copy uses clear professional endings (-요, -합니다 in formal report contexts) and confident imperatives (멤버십 시작하기, 더 알아보기). The brand positions itself as the place where you encounter useful new career content month after month.
| Context | Tone |
|---|---|
| CTAs | Confident Korean (멤버십 시작하기, 3일 무료체험, 알림 설정하기, 더 보기) |
| Membership / paywall | Value-forward, respectful (커리어에 필요한 지식, 매달 새롭게). Never 지금 결제 안 하면 손해. |
| Report titles / deks | Specific, useful, no clickbait (PM이 알아야 할 데이터 지표 7가지). |
| Empty states | Helpful + suggestion (아직 저장한 콘텐츠가 없어요 + 콘텐츠 둘러보기). Never 데이터가 없습니다. |
| Error messages | Blameless + actionable (다시 시도해 주세요). No 오류가 발생했습니다 boilerplate. |
| Profile / onboarding | Treats the reader as a professional (어떤 일을 하고 계세요?), used to personalize. |
| Notifications | Curated relevance (이번 주 커리어 콘텐츠가 도착했어요), low-frequency. |
Forbidden phrases. 지금 결제 안 하면 손해, 인생 역전, 대박 꿀팁!!!, 데이터가 없습니다, 오류가 발생했습니다, 불편을 드려 죄송합니다. The brand sells credible knowledge, not hustle hype or clickbait. Emoji used sparingly, never in error states or paywall copy.
Voice samples.
커리어 멤버십 PUBLY — App Store / product positioning. 꾸준한 성장 — brand value framing around steady career growth. 알림 설정하기 — primary engagement CTA on the live home surface. 이번 주 커리어 콘텐츠가 도착했어요 — curated notification. 3일 무료체험 — membership trial CTA. PUBLY (퍼블리) is a Korean career-knowledge membership that delivers career trends and workplace-useful knowledge across the arc of a professional's career, framing itself as an integrated career membership where members encounter new, beneficial content every month (apps.apple.com — 커리어 멤버십 PUBLY). It began as a curated long-form digital-content platform — readers funded and read in-depth reports on business, product, and career topics — and evolved into a subscription membership organized around topics, series, templates, and a personalized feed driven by each member's role and experience profile.
The design reflects that evolution. The product is fundamentally about reading credible knowledge, so the interface is a composed slate-and-white reading room: 1px slate borders instead of heavy shadows, comfortable long-form leading, and a personalized "오늘의 콘텐츠" feed. The single saturated purple #7a3bff is the brand's signal of ambition and forward motion, concentrated on the actions that turn knowledge into a member's next step. The current live surface is built on a Tailwind-style slate foundation, giving it a clean, design-system-disciplined credibility.
What PUBLY refuses: the hustle-culture hype of self-improvement content mills, the institutional dryness of legacy corporate e-learning, and the clickbait packaging of free content farms. Its bet is that ambitious professionals will pay for curated, credible, well-designed knowledge — and the design has to look worth paying for: composed enough to trust, modern enough to feel like growth.
#7a3bff is the only accent and earns emphasis through scarcity. UI implication: if purple appears on more than the forward-moving actions and active states, it has been overused — pull it back.Personas are fictional archetypes informed by PUBLY's publicly described user base (Korean knowledge workers and ambitious professionals investing in career growth), not individual people.
지원 (Jiwon), 30, Seoul. Product manager at a startup. Reads PUBLY reports on the subway to keep up with PM frameworks and data literacy. Saves templates she can adapt at work. Subscribed because the curation saves her the time of filtering free content of unknown quality.
태경 (Taekyung), 36, Seoul. Marketing team lead. Uses PUBLY to brief himself before strategy meetings and to share relevant reports with his team. Values the credible, well-edited packaging — he'd be embarrassed to forward a clickbait blog post.
현지 (Hyunji), 27, Pangyo. Junior developer transitioning toward engineering management. Follows career-growth series and reads on her laptop in the evening. The calm slate reading view is part of why she actually finishes reports instead of bookmarking and forgetting.
민호 (Minho), 42, Seoul. Mid-career professional considering a pivot. Set up a detailed role/experience profile so the feed surfaces relevant transition content. Treats the monthly fee as a small, deliberate investment in his own growth.
| State | Treatment |
|---|---|
| Empty (no saved content) | Single line (아직 저장한 콘텐츠가 없어요) in 14px/400 #575b5c, 12px gap, purple-outline CTA 콘텐츠 둘러보기. No harsh empty illustration. |
| Empty (search no results) | One line '{검색어}'에 대한 결과가 없어요 14px/400 #575b5c, then recommended topics below. Never a dead-end. |
| Empty (filter cleared) | 조건에 맞는 콘텐츠가 없어요 14px/400 #77797b. No CTA — user adjusts filters. |
| Loading (feed) | Skeleton cards at #f5f5f5 matching the card layout: 16:9 cover rectangle, two title lines, one meta line. Shimmer 1.2s, 6% white highlight. No spinner overlay. |
| Loading (report content) | Skeleton text blocks at #f5f5f5 matching paragraph rhythm; cover fades in. No blocking spinner. |
| Loading (subscribe action) | Purple button text swaps to a 20px #ffffff spinner — geometry unchanged for frame-stability. |
| Error (inline form) | Input border #ef4444 1px, helper text 13px/400 #ef4444 below. One actionable sentence (이메일을 다시 확인해 주세요). |
| Error (toast) | #0f172a background, white 14px/500 text, 8px radius, 3s auto-dismiss. Bottom of screen. One sentence, no icon. |
| Error (network / blocking) | Centered: 16px/700 #0f172a headline (연결이 불안정해요), 14px/400 #575b5c subline, purple retry button. No illustration. |
| Success (saved) | Bottom snackbar: #0f172a bg, white 14px/500 저장했어요, purple-text 저장함 보기 button on right. 3s auto-dismiss. |
| Success (membership started) | Dedicated confirmation screen: 멤버십이 시작되었어요 24px/700 #0f172a, benefit summary card, purple 콘텐츠 둘러보기 CTA. Composed, not confetti-heavy. |
| Skeleton | #f5f5f5 blocks at exact card dimensions, shimmer 1.2s. Title and meta slots blank until resolved. |
| Disabled | Button bg drops to #ced0d1, text stays #ffffff. No outline tricks. |
Durations (named, not raw milliseconds):
| Token | Value | Use |
|---|---|---|
motion-instant | 0ms | Toggle flips, checkbox states |
motion-fast | 150ms | Hover, focus, button press, card lift |
motion-standard | 220ms | Default — card expand, tab switch, dropdown reveal |
motion-slow | 320ms | Sheet / modal presentation, success entry |
motion-page | 280ms | Route push/pop |
Easings:
| Token | Curve | Use |
|---|---|---|
ease-enter | cubic-bezier(0.0, 0.0, 0.2, 1) | Sheets, modals, route entries |
ease-exit | cubic-bezier(0.4, 0.0, 1, 1) | Dismissals, modal close |
ease-standard | cubic-bezier(0.4, 0.0, 0.2, 1) | Two-way transitions — card hover, tab content |
Spring stance. Spring and overshoot easings are avoided on PUBLY surfaces. The brand is a credible professional reading product; bouncy motion reads as consumer-toy and undermines the worth-paying-for composure. Motion is calm and functional — a card lifts gently on hover, a sheet slides up, content fades in. The reading experience stays still and steady.
Signature motions.
0px 2px 8px rgba(0,0,0,0.06)) over motion-fast / ease-standard — a quiet invitation to read, never a bounce.motion-standard / ease-enter) — the reading surface composes calmly rather than popping.y+40px (motion-slow / ease-enter) with a backdrop fade to rgba(0,0,0,0.5). Dismissal motion-fast / ease-exit.motion-standard) — sliding would imply an axial relationship the topics don't have.prefers-reduced-motion: reduce, all motion-* collapse to motion-instant, cross-fades replace any slide. The reading experience stays fully usable.Verified: 2026-05-27 (omd:add-reference initial create — Tier 1 live inspect / Tier 2 press confirmed)
Tier 1 sources: publy.co (live playwright inspect — system-UI font stack, body slate-ink #0f172a on #fff, sole interactive accent purple #7a3bff on primary CTA at 8px radius / 12px padding / 14px·600, purple-tint #f1ebff, dominant border slate-200 #e2e8f0, full slate neutral scale, section fill #f5f5f5).
Tier 2 sources: getdesign.md/publy — not checked. styles.refero.design — not checked. App Store ("커리어 멤버십 PUBLY", monthly career content, integrated career membership).
Style ref: notion (neutral composed-reading tone scaffolding).
Conflicts unresolved: Assumed primary #2440FF blue (from task brief) NOT confirmed — live inspect found the sole interactive accent is purple #7a3bff. Resolved in favor of Tier 1 live value #7a3bff. Component-internal geometry reconciled from surface treatment; re-run Tier 2 (getdesign/refero) to lock token values.
PUBLY is a Korean career-knowledge membership, and its interface reads like a calm professional reading room rebuilt for the work-from-anywhere generation -- clean, credible, and quietly confident. The page opens on a crisp white canvas (#ffffff) with deep slate-ink type (#0f172a) and a single decisive purple (#7a3bff) that carries every interactive moment: the membership CTA, links, active states, the "알림 설정하기" button. This isn't the institutional blue of legacy edtech nor the playful pastel of a consumer app; it's a saturated, modern violet that signals premium knowledge, made for ambitious people.
Do and Don't guidelines parsed from DESIGN.md.
Do
Don't