garamnohDesign System디자인 시스템/Deck kit슬라이드 키트
enko
darklight
32 slides · 1920×1080

Deck kit슬라이드 키트

A layout dictionary. The frame sits at the same coordinates on every slide.레이아웃 사전. 프레임 좌표는 모든 장에서 같다.

g
internal
01 / 32
terminal native
Terminal-based터미널 기반
design system디자인 시스템
One set of token names, two sets of values.토큰 이름은 한 벌, 값은 두 벌.
The markup is identical day and night.마크업은 낮과 밤에 동일하다.
g
Contents목차
internal
02 / 32
Contents목차
4 chapters · 32 slides
01Why I built it왜 만들었나04 – 07
02Token structure토큰 구조08 – 15
03Components and kits컴포넌트와 키트16 – 24
04Data and diagrams데이터와 다이어그램25 – 32
03 / 32
Section 01
Why I built it왜 만들었나
04
Problem문제
05
Three principles원칙 셋
06
Current numbers현재 수치
07
P1 resultP1 결과
g
01 — Why I built it01 — 왜 만들었나
internal
04 / 32
Setup took longer than building the features셋업에 쓴 시간이 기능 만든 시간보다 길었다
Problem문제
2024–2026 · 7 personal projects2024–2026 · 개인 프로젝트 7개
projects프로젝트
7
2024–2026
shared components공통 컴포넌트
0
rewritten every time매번 새로 씀
palettes used쓰인 팔레트
11
no overlapping values겹치는 값 없음
setup time셋업 시간
4h
average per project프로젝트당 평균
So그래서
To stop re-deciding colour, spacing and components each time,색·간격·컴포넌트를 매번 다시 정하지 않도록 where values live값이 정의된 곳 comes first. Screens come after.를 먼저 만든다. 화면은 그 뒤에 온다.
g
01 — Why I built it01 — 왜 만들었나
internal
05 / 32
Three rules to keep셋만 지킨다
principles원칙
01
Names do not change이름은 불변
held지켜짐

Whatever the theme, 테마가 바뀌어도 --surface is always the card ground.는 언제나 카드 바닥이다.

governs
--bg · --surface · --line
02
Three accents at most형광은 셋까지
3 per slide한 장에 3곳

Past four, accent stops being emphasis and becomes background.accent가 넷을 넘으면 강조가 아니라 배경이다.

governs
--accent · --accent-text
03
Size, not weight굵기 대신 크기
400 · 600

Hierarchy comes from size, spacing and brightness.위계는 크기·여백·명도로.

governs
--w-strong
g
01 — Why I built it01 — 왜 만들었나
internal
06 / 32
Current numbers현재 수치
as of 2026.092026.09 기준
change measured across dropping Paper증감은 Paper 폐기 전후
30total
components+10
112vars
tokens+112
2themes
light · dark−2
9files
token files+9
0px
radius−2
1color
accent
2faces
font stacks
gn-
class prefix
0
literal hex
principles원칙

Show at most지표 숫자는 six metrics여섯 개까지. More than that goes in a table — the band does not grow.. 그 이상은 표로 옮긴다 — 밴드를 늘리지 않는다.

g
01 — Why I built it01 — 왜 만들었나
internal
07 / 32
Tokens moved into code토큰을 코드로 옮겼다
P1 resultP1 결과
What came out of it무엇이 생겼나
P1 doneP1 완료
9files개 파일로 분리
1entry point ·개 진입점 · styles.css
0literal colours개 리터럴 색상
2themes, same names개 테마 · 같은 이름
entry
garamnoh-system/styles.css
screenshot 16:9스크린샷 16:9
image
g
02 — Token structure02 — 토큰 구조
internal
08 / 32
What changed무엇이 바뀌었나
before / after
before
Picking colours again per project프로젝트마다 색을 다시 고른다
before 2026.092026.09 이전

No document, no code, no baseline. Every project got a fresh palette and fresh components.문서도 코드도 기준도 없다. 프로젝트마다 팔레트를 새로 고르고 컴포넌트를 새로 썼다.

setup time셋업 시간4h
shared components공통 컴포넌트0
after
styles.css one line한 줄
now지금

Tokens, components, kits and the deck all come together. The step of re-picking values is gone.토큰 · 컴포넌트 · 키트 · 덱이 한 벌로 따라온다. 값을 다시 고르는 단계가 사라졌다.

setup time셋업 시간1m
shared components공통 컴포넌트30
g
02 — Token structure02 — 토큰 구조
internal
09 / 32
Three layers세 층으로 나뉜다
structure구성
tokens/colour, type, spacing, motion — where values live색 · 타입 · 간격 · 모션 — 값이 정의된 곳9 files
components/30 gn-* classes plus copy-paste snippetsgn-* 클래스 30종 + 복붙 스니펫30 classes
ui_kits/portfolio, console, 32 slides포트폴리오 · 콘솔 · 덱 32장8 screens
g
02 — Token structure02 — 토큰 구조
internal
10 / 32
Where it stands어디까지 왔나
gap격차
now현재
One page of notes문서 1장
before 2026.092026.09 이전

Rules but no code. Every screen copied the values out again.규칙만 있고 코드가 없다. 화면마다 값을 다시 옮겨 적었다.

artefact
1 × html
target목표
A system you import불러 쓰는 시스템
now지금

Tokens, components, kits and the deck follow from one토큰 · 컴포넌트 · 키트 · 덱이 styles.css line.한 줄로 따라온다.

artefact
12 × css · 32 slides
g
02 — Token structure02 — 토큰 구조
internal
11 / 32
Scope적용 범위
scope
All personal projects개인 프로젝트 전체
What ships publicly — portfolio, product pages공개되는 것 — 포트폴리오 · 제품 페이지
garamnoh.pages.dev/system
Finish it here first여기서 먼저 완성한다
g
02 — Token structure02 — 토큰 구조
internal
12 / 32
Deliverables per phase단계별 산출물 수
bar chart막대 차트
P1 – P5
10
6
21
10
24
P1P2P3P4P5
how to read읽는 법

Only one bar is accent. The rest use강조 막대는 하나만 accent. 나머지는 --line.

max최댓값24
total합계71
g
02 — Token structure02 — 토큰 구조
internal
13 / 32
P0 – P7 progressP0 – P7 진행률
progress
by phase단계별
tokens · components토큰 · 컴포넌트100%
slide kit슬라이드 키트in progress진행 중
UI kits · deployUI 키트 · 배포not yet아직
left to do남은 일
P6 · 4 portfolio screensP6 포트폴리오 4화면2d
P6 · 4 console screensP6 콘솔 4화면2d
P7 · docs and deployP7 문서 · 배포1d
g
02 — Token structure02 — 토큰 구조
internal
14 / 32
Token files토큰 파일
9 files · 112 vars
filecontainsvars
colors.css2 themes, semantic, chart2테마 · 시맨틱 · 차트58
typography.css2 stacks, 6-step scale스택 2종 · 6단 스케일21
spacing.cssspacing, shell, control heights간격 · 셸 · 컨트롤 높이17
radius.cssall zero, role aliases전부 0 · 역할 별칭8
motion.css3 durations, 1 easing3단 지속 · 이징 1종7
g
02 — Token structure02 — 토큰 구조
internal
15 / 32
Deck spec덱 규격
spec sheet
canvas캔버스
canvas캔버스1920 × 1080
margin여백108px
grid그리드8 columns · gutter 408열 · 거터 40
chrome20px · hairline
type타입
title제목64 (cover 132)64 (표지 132)
body본문32 · min 2832 · 최소 28
label라벨24 · 0.16em
type floor최소 글자body 24 · chrome 20본문 24 · chrome 20
g
03 — Components and kits03 — 컴포넌트와 키트
internal
16 / 32
Who built it만든 사람
people
1:1 b&w
garamnoh
developer
1:1 b&w
role
1:1 b&w
role
rules규칙

Photos are 1:1 black and white. Name 40, role 24 mono. No colour portraits.사진은 1:1 흑백. 이름 40 / 역할 24 모노. 컬러 인물 사진은 쓰지 않는다.

now지금
1 person — the rest are placeholders1인 · 나머지는 자리표시자
g
03 — Components and kits03 — 컴포넌트와 키트
internal
17 / 32
Made to copy and paste복사해서 쓰는 형태
showcase쇼케이스
what ships무엇을 납품하나
P3 · P4

Every component has a live example beside its markup, with a copy button.각 컴포넌트마다 라이브 예시와 마크업이 나란히 있고, 복사 버튼이 붙는다.

live examples라이브 예시30
snippet files스니펫 파일3
copy buttons복사 버튼30
source
Components P3 · 2026.09
screenshot 16:9스크린샷 16:9
image
g
03 — Components and kits03 — 컴포넌트와 키트
internal
18 / 32
When the image leads이미지가 주인공일 때
half bleed하프 블리드
One side runs to the edge, the other keeps the spec한쪽을 끝까지, 반대쪽은 규격대로

The image fills one side to the edge and that half loses its margin. The other half keeps title, subtitle and body at exactly the same position as every other slide.이미지를 한쪽 끝까지 채우고 그 절반의 여백을 없앤다. 반대쪽 절반은 제목·부제·본문 위치를 다른 장과 정확히 같게 유지한다.

image width이미지 폭960
text width텍스트 폭744
margin on the image side이미지 쪽 여백0
caption
Console screen · 2026.09.02콘솔 화면 · 2026.09.02
half bleed
full bleed image
g
03 — Components and kits03 — 컴포넌트와 키트
internal
19 / 32
full bleed풀 블리드
When the image is full frame,이미지가 전면일 때는
raise a fade from the bottom아래에서 페이드를 올린다

Text sits on the fade only, never directly on the image. The fade is 620px tall, from 0.94 to 0 opacity.글자는 페이드 위에만 놓는다. 이미지 위에 직접 얹지 않는다. 페이드는 하단 620px, 불투명도 0.94에서 0으로.

620
fade px
0.94
max alpha
1
text block
g
03 — Components and kits03 — 컴포넌트와 키트
internal
20 / 32
Work작업
8 slots · 3:2
pilo
system
hwpx
deck kit
console
archive
labs
notes
g
03 — Components and kits03 — 컴포넌트와 키트
internal
21 / 32
Roadmap로드맵
P1 – P7
P19 token files토큰 9파일done
P2wordmark, favicon워드마크 · 파비콘done
P3–P430 components컴포넌트 30종done
P532 slides슬라이드 32장running
P6–P7UI kits · deployUI 키트 · 배포queued
next그 다음
Command palette · Combobox · Log viewer — Dashed means not yet점선은 아직 아닌 것. Once settled it moves to a solid box.. 확정되면 실선 박스로 옮긴다.
undecided미정
g
03 — Components and kits03 — 컴포넌트와 키트
internal
22 / 32
Settle the token names first토큰 이름을 먼저 정하면
and the theme can come later.테마는 나중에 와도 된다.
— working notes, 2026.09.02— 작업 노트, 2026.09.02
So그래서

Dropping Paper changed no component code. A theme is values; markup only references names.Paper를 버릴 때 컴포넌트 코드는 한 줄도 고치지 않았다. 테마는 값이고, 마크업은 이름만 참조한다.

changed바뀐 것
colors.css one file, 58 values한 파일 · 58개 값
unchanged안 바뀐 것
30 classes, snippets, deck frame클래스 30종 · 스니펫 · 덱 프레임
23 / 32
garamnoh
garamnoh.pages.dev/system
g
Appendix부록
internal
24 / 32
Appendix
Appendix부록
25
line chart꺾은선
26
stacked bars누적 막대
27
2×2 matrix2×2 매트릭스
28
pipeline파이프라인
29
comparison비교표
30
kanban칸반
31
heatmap히트맵
32
tree and diff트리 · diff
g
04 — Data and diagrams04 — 데이터와 다이어그램
internal
25 / 32
Commits per week주당 커밋 수
line chart꺾은선 차트
w1 – w9
w1w3w5w7w9
legend범례
system
+312%
other기타
+61%
Three lines at most. A dot only on the last value.선은 최대 3개. 점은 마지막 값에만.
g
04 — Data and diagrams04 — 데이터와 다이어그램
internal
26 / 32
Composition구성 비율
stacked · 100%누적 · 100%
stacked누적
P1P2P3P4
100%
core43%
forms27%
feedback · nav23%
deck7%
donewipqueued
g
04 — Data and diagrams04 — 데이터와 다이어그램
internal
27 / 32
What to build first무엇을 먼저 만들 것인가
2×2 matrix
vertical: reuse · horizontal: effort세로 재사용 빈도 · 가로 구현 난이도
later나중에
Tooltip · Breadcrumb · Figure
now지금
Button · Input · Card · Badge · Table
not building안 만듦
Carousel · Accordion · DatePicker
when needed필요할 때
Dialog · Toaster · SideNav
how to read읽는 법

One highlighted quadrant. Axis labels go in the subtitle slot.강조 사분면은 하나만. 축 라벨은 부제 자리에 쓴다.

conclusion결론
Build the most-used things first.자주 쓰는 것부터 만든다.
g
04 — Data and diagrams04 — 데이터와 다이어그램
internal
28 / 32
How a token reaches the screen토큰이 화면에 도달하는 경로
pipeline
01
tokens/*.css
where values live값이 정의된 곳
02
styles.css
11 @import lines@import 11줄
03 · now03 · 현재
gn-* classesgn-* 클래스
30 plus snippets30종 + 스니펫
04
kits and deck키트 · 덱
8 screens · 32 slides화면 8 · 32장
rule 1규칙 1
Values flow one way. A screen never overrides a token.값은 뒤로 흐르기만 한다. 화면에서 토큰을 거스르지 않는다.
rule 2규칙 2
Classes use no literal colours. Zero exceptions.클래스는 리터럴 색을 쓰지 않는다. 예외 0건.
rule 3규칙 3
Adding a name means editing both themes.새 이름을 추가하면 두 테마를 함께 고친다.
deploy배포
pages.dev/system
g
04 — Data and diagrams04 — 데이터와 다이어그램
internal
29 / 32
Why CSS classes왜 CSS 클래스인가
comparison비교표
criterion기준 CSS classesCSS 클래스Reactweb components웹 컴포넌트Figma onlyFigma만
framework independent프레임워크 독립×
starts with copy-paste복붙으로 시작×××
carries state logic상태 로직 포함××
covers deck and print덱·인쇄까지 커버×××
maintenance cost유지 비용low낮음high높음medium중간medium중간
g
04 — Data and diagrams04 — 데이터와 다이어그램
internal
30 / 32
P5 boardP5 진행 보드
kanban
queued3
4 portfolio screens포트폴리오 4화면
P6 · est 2 daysP6 · est 2일
4 console screens콘솔 4화면
P6 · est 2 daysP6 · est 2일
readme · elements
P7
running2
32 slides슬라이드 32장
P5 · 32/32
Align deck frame덱 프레임 정렬
P5 · in progressP5 · 진행 중
done4
9 token files토큰 9파일
P1 · 112 vars
wordmark, favicon워드마크 · 파비콘
P2 · 5b
core and forms, 21코어 · 폼 21종
P3
feedback and nav, 9피드백 · 내비 9종
P4
rules규칙

Three columns at most. A card is a title plus one meta line. More than that goes in a table.열은 3개까지. 카드는 제목 + 메타 한 줄. 그 이상은 표로 옮긴다.

queued3
running2
done4
wip limit
running ≤ 2
g
04 — Data and diagrams04 — 데이터와 다이어그램
internal
31 / 32
Commits by day and hour요일 × 시간대 커밋
heatmap
7 × 4
morning오전afternoon오후evening저녁night심야
MonTueWedThuFriSatSun
legend범례
0
1–2
3–5
6–9
10+
Five steps at most. Past that the eye cannot tell them apart.단계는 5개까지. 그 이상은 눈이 구분하지 못한다.
g
04 — Data and diagrams04 — 데이터와 다이어그램
internal
32 / 32
File tree and diff파일 트리 · diff
structure
garamnoh-system/
├ styles.css
├ tokens/
│ ├ colors.css 58
│ ├ typography.css 21
│ └ … 7 more
├ components/
│ ├ components.css 30
│ └ snippets/
└ assets/
colors.css · Paper droppedcolors.css · Paper 폐기
− --accent: #B4491F;
− --accent-deep: #7D2F10;
− [data-theme="paper-light"] { … }
− [data-theme="paper-dark"] { … }
  --bg: #08090A;
+ --accent: #3ED49C;
+ --accent-text: #0B6B4A;
+ [data-theme="light"] { … }
4 files changed · +58 −96
slide슬라이드
01 / 32
← → to move← → 이동