포스타입 DESIGN.md
DESIGN.md
Design System Inspiration of POSTYPE
Overview
Visual Theme & Atmosphere
POSTYPE (포스타입) is a Korean creator-publishing community operated by 주식회사 포스타입 in Seoul. Its product title is "취향의 가치를 만드는 창작 커뮤니티", a creative community that makes value out of taste. The company's own timeline starts with the official launch of the service in July 2015. Cumulative transactions passed ₩10 billion in March 2020, and the Android/iOS app launched in May 2020. A Series A followed in July 2020 and a ₩10 billion Series B in December 2022. By June 2023 the platform had 5 million members and 100 million transactions, and by May 2025 7 million members and ₩160 billion in transactions. The product has grown in layers. It started with paid posts and fan-community features, then added 리퀘스트 (commissions). In January 2026 it added 캐릭터톡, an AI character-chat service built on its creator network. In June 2026 came 오픈채널, and cumulative transactions passed ₩200 billion. The company frames the whole as "Everything you create has value": a service where creators and fans grow together, working towards "모든 취향이 고유의 가치를 인정받을 수 있는 세상".
The logged-out product is a quiet reading room. There is a white canvas, a 240px left navigation with rounded 8px list items, and a 640px feed of posts divided only by a translucent hairline. A right column holds bordered cards and a blue notice. Everything is set in one face, served under the alias Postype Sans-serif KR, which is Pretendard by file. Text is near-black #141415 for content, #2c2c2f for interface labels, #62626a for excerpts and #76767f for meta. Blue #3478ff marks links, the selected filter chip and the keyboard focus ring. The action colour is charcoal: 회원 가입 in the header and 구독 on a channel are #2c2c2f with white labels. Hover deepens it to #000000 and press lifts it to #3e3e43. Controls respond with grey fills, #f2f2f3 on hover and #eaeaeb on press. Only popovers and the notice carry a shadow.
Key Characteristics:
- The action colour is charcoal
#2c2c2f: hover#000000, pressed#3e3e43, white labels, 8px radius, 40px tall. - Blue
#3478ffdoes three jobs: link text, the selected chip and a 2px focus ring offset 2px. A notice uses a deeper blue,#1a66ffon#ebf2ff. - The whole UI uses one family, the alias
Postype Sans-serif KR, which loads Pretendard files. Weights run 400 to 700 and only the h2 is tracked, at -0.5px. - Grey interaction states:
#f2f2f3on hover or when current,#eaeaebon press. The same#eaeaebis the hairline. - Radii are 6px (menu items, small buttons), 8px (buttons, list items, inputs), 12px (cards, menus, notice) and 24px (chips).
- Everything is flat except the menu popups and the notice, which carry a two-layer
rgba(21, 21, 21, 0.08)shadow.
Primary tasks
- Browse posts, series and creators on the public feed.
- Open a creator's channel and read its posts.
- Subscribe to a channel (logged out, 구독 leads to the login page).
- Sign up or log in from the header.
- Filter or search a channel's posts.
Brand Narrative
The company page tells the story as eleven years of widening the same idea. It began with content sales in 2015. Fan-community activity, commissions (리퀘스트) and, in 2026, character chat (캐릭터톡) and open channels followed. All of it is offered in one app, so that people who share a taste can keep creating and talking. The milestones it publishes are commercial: ₩10 billion in cumulative transactions by 2020, ₩100 billion by October 2023, ₩200 billion by June 2026, and 7 million members by May 2025. The @team channel, published on the product itself, carries the company's own posts: core values, a joining bonus policy, press coverage and team interviews. One interview introduces 캐릭터톡 as built on "포스타입이 쌓아온 강력한 크리에이터 네트워크, 창작 생태계". The interface stays out of the way of that content: one face, grey states, a charcoal action and blue only where the reader is pointed somewhere.
Principles
- Every taste has value. UI implication: give creators' posts the room, and keep the chrome neutral.
- One quiet action colour. UI implication: charcoal
#2c2c2ffor the step you want taken; grey for everything that merely responds. - Blue means "go there" or "you are here". UI implication: links, the selected chip and the focus ring share
#3478ff. - Flat until it floats. UI implication: only menus and notices get a shadow.
Personas
Personas are fictional archetypes informed by the audiences Postype describes (creators and fans across webtoon, web-novel, illustration and character fandoms). They are not real people.
한서윤, 27, 서울. An illustrator who sells commissions through 리퀘스트 and posts paid series. She wants her work, not the platform, to be what readers notice.
정민재, 22, 대전. A web-novel reader who subscribes to a handful of channels and scans the feed daily. He relies on tag chips and filters to find new work in his niche.
오지현, 31, 부산. A fan who has started using 캐릭터톡 with characters from the series she follows, and expects it to feel like part of the same reading space.
Colors
Primary action
- Charcoal (
#2c2c2f): the primary colour. It fills 회원 가입 in the header of both product pages and 구독 on the @team channel. No other colour fills a rest-state action on the product pages, so it is the primary. The only solid blue fill is one button inside a notice. - Charcoal Hover (
#000000) and Charcoal Pressed (#3e3e43): settled hover and pressed fills of 회원 가입. The bundle frames and the probe agree. - On Primary (
#ffffff).
Link, selection and focus
- Link Blue (
#3478ff): link text (about 100 instances), the selected filter chip's label and the keyboard focus ring on the header buttons. - Info Blue (
#1a66ff), Info Surface (#ebf2ff), Info Border (#dbe7fe): the notice alert and the selected filter chip's fill and border.
Text
- Ink (
#141415): document default, headings and post titles. - Label (
#2c2c2f): interface labels (buttons, list items, menus). This is the same value as the action fill. - Body (
#62626a): post excerpts and chip labels. - Muted (
#76767f): dates, counts and icon glyphs. - Disabled (
#a4a4a8): the disabled pager arrow.
Surface and signal
- White (
#ffffff): canvas, cards, menus, inputs. - Surface (
#f2f2f3): hover and current fills, tag chips and compact grey buttons. - Surface Pressed / Hairline (
#eaeaeb): pressed fills and 1px borders on outlined buttons, cards and inputs. Feed dividers are the translucentrgba(118, 118, 127, 0.15). - Alert Red (
#f33d4d): one red item in each post overflow menu. It is a signal colour in a menu, not an action.
The June record made #f33d4d the primary as the brand red. On the captured product it appears only as that menu-item text. It fills no action and marks no selection, so it left primary. It is not claimed as a logo colour because no logo was measured.
Typography
Font Family
- Live surface name: every product element computes
"Postype Sans-serif KR"(1,051 observed uses). - What it is: the @font-face sources for that name are Pretendard files (
cdn.jsdelivr.net/gh/orioncactus/pretendard/.../Pretendard-*.woff2). A Japanese alias,Postype Sans-serif JP, points at Pretendard JP.Postype Serif KRis declared against Nanum Myeongjo but was not observed in use. Postype names its UI face after itself but ships Pretendard, which is distributed under the SIL Open Font License 1.1. - Declared only: the many other faces the bundle lists (BMHANNAPro, Gmarket Sans, Kakao Big/Small Sans, NanumSquare and others) are served from
cdn.ninehire.com. They belong to the recruiting-site host behind about.postype.com, not to the Postype product.
Hierarchy
| Role | Size / weight / line | Colour | Where |
|---|---|---|---|
| Heading | 32px / 700 / 48px | #141415 | Page h1 on home |
| Section | 20px / 600 / 26.67px, -0.5px | #141415 | Feed and shelf headings |
| Item title | 16px / 500 / 24px | #141415 | Post titles |
| Card title | 15px / 600 / 22.5px | #141415 | Titles in home cards |
| Body | 16px / 400 / 24px | #141415 | Document default |
| Body secondary | 16px / 400 / 24px | #62626a | Post excerpts |
| Button | 15px / 600 / 20px | white / #2c2c2f | Header buttons |
| Button small | 13px / 600 / 17.33px | #2c2c2f | Compact buttons |
| Menu | 15px / 400 / 22.5px | #2c2c2f | Overflow menu items |
| Caption | 14px / 400 / 21px | #2c2c2f | Secondary list items |
| Meta | 12px / 400 / 18px | #76767f | Dates and counts |
| Chip | 11px / 400 / 16.5px | #62626a | Tag chips |
Principles
- Small, steady scale: the largest product text is 32px. The feed runs at 15–16px.
- Weight over size: 600 marks buttons and card titles, 500 post titles, 400 reading and meta.
- Tracking only on section heads: h2 at -0.5px. Everything else is
normal.
Layout
Spacing observed
- Buttons
6px 16px, compact buttons4px 12px, sidebar items4px 12px(secondary3px 8px). - Menus 8px, cards 16px, feed posts
20px 0, chips0 6px(filter chips0 14px).
Grid and container
- Captured at 1440 × 900: a 240px left navigation, a 640px feed column and a 352px right column on home. The @team channel keeps the navigation and sets a 700px post list.
Border radius scale
- 6px menu items and the notice action; 8px buttons, list items, icon buttons, inputs and the promo tile; 11px card covers; 12px cards, menus and the notice; 24px chips; 50% avatars.
Responsive Behavior
Only the 1440 × 900 desktop viewport was captured. Breakpoints and collapse behaviour were not measured and are not declared. On desktop, header buttons are 40px tall and sidebar items 40px.
Elevation & Depth
Most of the page is flat. Buttons, list items, cards, chips and inputs compute box-shadow: none. Popovers are raised: every overflow menu and the notice carry the same two-layer shadow, rgba(21, 21, 21, 0.08) 0px 2px 8px -2px plus rgba(21, 21, 21, 0.08) 0px 6px 12px -2px. Separation elsewhere comes from #f2f2f3 fills, #eaeaeb borders and translucent feed dividers.
Motion & Easing
The probe read transition: all 0s ease 0s on both header buttons, so their colour changes are instant. No other duration or easing was measured, and none is declared.
Components
Buttons
- Sign-up (
signup-button):#2c2c2f, white 15px/600 label, 8px radius,6px 16px, 40px tall. Hover#000000, pressed#3e3e43, focus a 2px#3478ffring offset 2px.transition: all 0s. - Log-in (
login-button): transparent,#2c2c2flabel, 1px#eaeaebborder, same geometry. Hover#f2f2f3, pressed#eaeaeb, same focus ring. - Subscribe (
subscribe-button): the charcoal button on the @team channel header, 96 × 40. - Tonal (
tonal-button):#f2f2f3,#2c2c2f13px/600, 8px,4px 12px, 32px tall. - Outline small (
outline-button-sm): transparent with a 1px#eaeaebborder, 13px/600, 32px tall. - Icon button (
icon-button): 40 × 40, 8px radius. Hover#f2f2f3, pressed#eaeaeb, disabled glyph#a4a4a8. - Notice action (
alert-button):#3478ff, white 13px/600, 6px radius,4px 12px, 32px tall, inside the notice only.
Navigation and chips
- Sidebar item (
sidebar-item): 240 × 40, 8px radius,4px 12px, 16px/400#2c2c2f. The current page rests on#f2f2f3. Hover#f2f2f3, pressed#eaeaeb. - Tag chip (
tag-chip):#f2f2f3fill,#62626a11px label, 24px radius, 20px tall. - Filter chip (
filter-chip): white, 1px#eaeaeb, 24px radius, 32px tall, 13px. Selected:#ebf2fffill,#3478fflabel,#dbe7feborder.
Menus, cards and inputs
- Menu popup (
menu-popup): white, 12px radius, 8px padding, shadowrgba(21, 21, 21, 0.08) 0px 2px 8px -2px, rgba(21, 21, 21, 0.08) 0px 6px 12px -2px. - Menu item (
menu-item): 40px tall, 6px radius,6px 12px, 15px/400. One red#f33d4ditem per post menu. - Card (
recommend-card): white, 1px#eaeaeb, 12px radius, 16px padding. - Notice (
notice-alert):#ebf2fffill,#1a66fftext, 1px#dbe7fe, 12px radius,12px 12px 12px 18px, with the popup shadow. - Search input (
search-input): white, 1px#eaeaeb, 8px radius,0 8px, 32px tall, 14px. - Feed post (
feed-post): no fill,20px 0padding, a bottom rule inrgba(118, 118, 127, 0.15). - Avatar: round (50%) at 40, 24 and 20px.
- Promo tile (
promo-tile): dark#1e1b3a240 × 57 tile with 8px corners behind promotional artwork.
Verified: 2026-09-30 (deterministic collector capture of two public, logged-out Postype product pages and the company page, a fixed keyboard-probe state read on the home header, and first-party company pages) Tier 1 sources: https://www.postype.com/ ; https://www.postype.com/@team ; https://about.postype.com/ Tier 2 sources: getdesign.md and styles.refero.design were not re-queried in this pass; no Tier 2 value used
States
Only states read from the capture and the probe are listed.
| Component | State | Treatment | Evidence |
|---|---|---|---|
| Sign-up button | hover / pressed / focus | #000000 / #3e3e43 / 2px #3478ff ring, offset 2px | bundle frames + probe |
| Log-in button | hover / pressed / focus | #f2f2f3 / #eaeaeb / same ring | bundle frames + probe |
| Sidebar item | current / hover / pressed | #f2f2f3 / #f2f2f3 / #eaeaeb | bundle |
| Icon button | hover / pressed / disabled | #f2f2f3 / #eaeaeb / glyph #a4a4a8 | bundle |
| Filter chip | selected | #ebf2ff, #3478ff, border #dbe7fe | bundle |
| Overflow menu | open | white popup, 12px, two-layer shadow | collector menu interaction |
Empty, loading, error and success states were not observed and are not declared.
Do's and Don'ts
Do
- Fill the primary action in
#2c2c2fwith a white 15px/600 label. Deepen it to#000000on hover and lift it to#3e3e43on press. - Use
#f2f2f3for hover and current states and#eaeaebfor pressed and hairlines. - Use
#3478fffor links, selected chips and a 2px focus ring offset 2px. - Keep the page in one sans family (Pretendard, named
Postype Sans-serif KR). - Raise only popovers and notices.
Don't
- Don't fill actions in red.
#f33d4dappears only as a menu item's text. - Don't use blue for primary actions. The one blue button lives inside a notice.
- Don't add shadows to cards or feed posts.
- Don't track body text. Only the 20px section heads use -0.5px.
Voice & Tone
POSTYPE speaks in a taste-affirming, plain register. It treats every personal taste (취향) as worth making and paying for, and it keeps interface labels short.
| Context | Sample (verbatim, 2026-09-30) |
|---|---|
| Product title | "포스타입 - 취향의 가치를 만드는 창작 커뮤니티" |
| Company copy | "Everything you create has value" |
| Mission | "포스타입은 크리에이터와 팬, 사람들과 관심사를 연결해 더 큰 가치를 만들어내며 바람직한 창작 문화가 발전할 수 있도록 노력합니다." |
| Vision | "'모든 취향이 고유의 가치를 인정받을 수 있는 세상'을 만들어 나갑니다." |
| Navigation | "홈", "캐릭터톡", "리퀘스트", "보관함" |
| CTAs | "회원 가입", "로그인", "구독" |
| Team channel | "더 나은 창작 생태계를 만들어나가는 포스타입 팀의 이야기" |
| Not-found page | "앗, 존재하지 않는 길이에요. 죄송하지만 주소가 바뀌거나 사라진 것 같아요." |
The June record's slogans "포스트, 창작의 가치를 수익으로" and "30초면 끝" were not found on the pages opened this session and are no longer quoted.
Agent Prompt Guide
Quick colour reference
- Primary action:
#2c2c2f(hover#000000, pressed#3e3e43, white label) - Link / selected / focus:
#3478ff; notice#1a66ffon#ebf2ff, border#dbe7fe - Text:
#141415,#2c2c2f,#62626a,#76767f - Surface:
#ffffff,#f2f2f3; pressed and hairline#eaeaeb
Example component prompts
- "A header with a transparent 로그인 button (1px
#eaeaebborder) and a#2c2c2f회원 가입 button, both 40px tall with 8px corners and 15px/600 labels." - "A 240px left navigation of 40px list items with 8px corners. The current item rests on
#f2f2f3and pressed items turn#eaeaeb." - "A 640px feed of posts: 16px/500
#141415titles, 16px#62626aexcerpts, 12px#76767fmeta and#f2f2f311px tag chips with 24px corners, divided by a translucent hairline." - "An overflow menu: white, 12px corners, 8px padding, a soft two-layer shadow, 40px items and one red
#f33d4ditem."
Iteration guide
- If an action looks blue or red, return it to charcoal.
- If a card has a shadow, remove it unless it is a popover.
- If focus is invisible, add the 2px
#3478ffring with a 2px offset.
Governance
Known Gaps
- Contrast,
login-button. Text#2c2c2fon#00000000measures 1.51:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted. - Contrast,
outline-button-sm. Text#2c2c2fon#00000000measures 1.51:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted. - Contrast,
sidebar-item. Text#2c2c2fon#00000000measures 1.51:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted. - Contrast,
icon-button. Text#2c2c2fon#00000000measures 1.51:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted. - Contrast,
notice-alert. Text#1a66ffon#ebf2ffmeasures 4.26:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted. - Contrast,
alert-button. Text#ffffffon#3478ffmeasures 3.98:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted.
색상
브랜드
면과 글자
상태
그 밖의 색
타이포그래피
- Postype Sans-serif KR산세리프
타입 스케일
- headingPage h1 on home, 48px line, #14141532px, 행간 1.5, 굵기 700
- sectionFeed and shelf headings on home (h2), 26.67px line, -0.5px tracking, #14141520px, 행간 1.33, 굵기 600, 자간 -0.5
- item-titlePost titles in the home feed (h3), 24px line, #14141516px, 행간 1.5, 굵기 500
- bodyDocument default on home and @team, 24px line, #14141516px, 행간 1.5, 굵기 400
- body-secondaryPost excerpts in the home feed, 24px line, #62626a16px, 행간 1.5, 굵기 400
- card-titleTitles inside home cards, 22.5px line, #14141515px, 행간 1.5, 굵기 600
- buttonHeader 회원 가입 and 로그인 labels, 20px line15px, 행간 1.33, 굵기 600
- menuOverflow-menu items, 22.5px line15px, 행간 1.5, 굵기 400
여백과 모양
여백
- button-sm-y4px
- list-y4px
- button-y6px
- chip-x6px
- menu8px
- button-sm-x12px
- list-x12px
- button-x16px
- card16px
- feed-y20px
모서리 반경
- small6px
- button8px
- card12px
- chip24px
컴포넌트
- signup-buttonsignup-button채움 #2c2c2f · 글자 #ffffff · 반경 8px · 높이 40px · 안쪽 여백 6px 16px · 글자 크기·굵기 15px / 600 / 20px
- 호버 bg #000000
- 누름 bg #3e3e43
- 포커스 outline 2px solid #3478ff, offset 2px
기록된 상태 bundle frames and the probe agree on hover #000000 and pressed #3e3e43; transition all 0s; keyboard focus draws a 2px #3478ff ring offset 2px
- login-buttonlogin-button채움 transparent · 글자 #2c2c2f · 테두리 1px solid #eaeaeb · 반경 8px · 높이 40px · 안쪽 여백 6px 16px · 글자 크기·굵기 15px / 600 / 20px
- 호버 bg #f2f2f3
- 누름 bg #eaeaeb
- 포커스 outline 2px solid #3478ff, offset 2px
기록된 상태 bundle frames and the probe agree; transition all 0s
- subscribe-buttonsubscribe-button채움 #2c2c2f · 글자 #ffffff · 반경 8px · 높이 40px · 안쪽 여백 6px 16px · 글자 크기·굵기 15px / 600 / 20px
기록된 상태 rest only on this instance
- tonal-buttontonal-button채움 #f2f2f3 · 글자 #2c2c2f · 반경 8px · 높이 32px · 안쪽 여백 4px 12px · 글자 크기·굵기 13px / 600 / 17.33px
기록된 상태 rest only
- search-input채움 #ffffff · 글자 #2c2c2f · 테두리 1px solid #eaeaeb · 반경 8px · 높이 32px · 안쪽 여백 0px 8px · 글자 크기·굵기 14px / 400 / 21px
기록된 상태 rest only
- menu-popup채움 #ffffff · 반경 12px · 안쪽 여백 8px
- recommend-card채움 #ffffff · 테두리 1px solid #eaeaeb · 반경 12px · 안쪽 여백 16px
- promo-tile채움 #1e1b3a · 반경 8px
- tag-chiptag-chip채움 #f2f2f3 · 글자 #62626a · 반경 24px · 높이 20px · 안쪽 여백 0px 6px · 글자 크기·굵기 11px / 400 / 16.5px
- filter-chipfilter-chip채움 #ffffff · 글자 #2c2c2f · 테두리 1px solid #eaeaeb · 반경 24px · 높이 32px · 안쪽 여백 0px 14px · 글자 크기·굵기 13px / 400 / 19.5px
- 선택 bg #ebf2ff, fg #3478ff, border #dbe7fe
기록된 상태 selected read from rest values; no pointer frame