UI/UX 디자인
목적
유저스토리를 기반으로 상세한 UI/UX 디자인 명세를 작성합니다.
사용 시점
- 유저스토리 작성이 완료된 후
- 프로토타입 개발 전
- 디자인 시스템을 정의해야 할 때
- 사용자가 "UI/UX 디자인", "UI/UX 설계", "UI 디자인", "UX", "와이어프레임"을 언급할 때
필수 입력
- 유저스토리:
design/userstory.md (user-stories 결과)
유저스토리 연결 가이드
Epic → 주요 화면
- 각 Epic을 주요 화면 그룹으로 변환
- 예시: "사용자 관리" Epic → 회원가입, 로그인, 프로필 화면
User Story → 화면 플로우
- 각 User Story를 화면 플로우로 변환
- Acceptance Criteria를 화면 상태와 전환으로 표현
비기능적 요구사항 → 디자인 제약
- 성능 요구사항 → 로딩 전략, 최적화
- 접근성 요구사항 → WCAG 준수
- 반응형 요구사항 → 브레이크포인트, 레이아웃
UI/UX 디자인 작성 형식
# UI/UX 디자인 명세
## 디자인 원칙
### 핵심 원칙 (5개)
1. **{원칙명}**: {설명}
2. **{원칙명}**: {설명}
3. **{원칙명}**: {설명}
4. **{원칙명}**: {설명}
5. **{원칙명}**: {설명}
### 디자인 언어
- **톤 앤 매너**: {예: 친근하고 직관적}
- **브랜드 키워드**: {키워드1}, {키워드2}, {키워드3}
---
## 정보 아키텍처
### 사이트맵
\```
홈
├── {기능 A}
│ ├── {하위기능 A-1}
│ └── {하위기능 A-2}
├── {기능 B}
│ ├── {하위기능 B-1}
│ └── {하위기능 B-2}
└── {기능 C}
\```
### 네비게이션 구조
- **주 네비게이션**: {메뉴1}, {메뉴2}, {메뉴3}
- **부 네비게이션**: {서브메뉴 항목}
- **푸터 네비게이션**: {푸터 링크}
---
## 사용자 플로우
### 플로우 1: {기능명}
\```
시작
↓
[화면 1: {화면명}] → [화면 2: {화면명}]
↓ ↓
[화면 3: {화면명}] ← [화면 4: {화면명}]
↓
완료
\```
**플로우 설명**:
1. **{화면명}**: {설명}
2. **{화면명}**: {설명}
3. **{화면명}**: {설명}
(다음 플로우 반복)
---
## 와이어프레임
### 화면 1: {화면명}
\```
+----------------------------------------+
| [로고] [메뉴] [메뉴] [메뉴] |
+----------------------------------------+
| |
| [{영역명}] |
| - {요소 1} |
| - {요소 2} |
| |
+----------------------------------------+
| [{컴포넌트1}] [{컴포넌트2}] [{컴포넌트3}] |
+----------------------------------------+
| |
| [{메인 컨텐츠 영역}] |
| |
+----------------------------------------+
| {푸터} |
+----------------------------------------+
\```
**핵심 요소**:
- **{요소명}**: {설명}
- **{요소명}**: {설명}
- **{요소명}**: {설명}
(다음 화면 반복, 최소 5개)
---
## 컴포넌트 라이브러리
### 버튼
- **Primary Button**: {설명}
- 크기: {크기}
- 색상: {색상}
- 사용: {사용 케이스}
- **Secondary Button**: {설명}
- 크기: {크기}
- 색상: {색상}
- 사용: {사용 케이스}
- **Text Button**: {설명}
### 폼 요소
- **Input Field**: {설명}
- 타입: {text, email, password 등}
- 상태: {default, focus, error, disabled}
- **Dropdown**: {설명}
- 옵션 표시 방식: {설명}
- 검색 기능: {유/무}
- **Checkbox / Radio**: {설명}
- **Date Picker**: {설명}
- **File Upload**: {설명}
### 카드
- **Content Card**: {설명}
- **Product Card**: {설명}
- **User Card**: {설명}
### 네비게이션
- **Top Navigation Bar**: {설명}
- **Sidebar**: {설명}
- **Breadcrumb**: {설명}
- **Pagination**: {설명}
### 피드백
- **Toast / Snackbar**: {설명}
- **Modal / Dialog**: {설명}
- **Alert / Error Messages**: {설명}
- **Loading Spinner**: {설명}
---
## 접근성 (WCAG 2.1 AA)
### 준수 체크리스트
- [ ] 키보드 네비게이션 지원 (Tab, Enter, Space, Arrow keys)
- [ ] 스크린 리더 호환 (적절한 HTML 시맨틱 사용)
- [ ] 색상 대비율 ≥ 4.5:1 (텍스트), ≥ 3:1 (UI 컴포넌트)
- [ ] 이미지 대체 텍스트 (alt 속성)
- [ ] ARIA 레이블 (role, aria-label, aria-describedby)
- [ ] 폼 레이블 (label 요소)
- [ ] 포커스 인디케이터 (visible focus indicator)
---
## 사용성 테스트
### 테스트 체크리스트
- [ ] **5초 테스트**: 첫인상 평가
- [ ] **태스크 완료율**: 주요 태스크 완료 여부
- [ ] **에러율**: 사용 중 발생한 에러 빈도
- [ ] **만족도 점수**: SUS (System Usability Scale)
- [ ] **NPS (Net Promoter Score)**: 추천 의향
스타일가이드 작성 형식
# 스타일 가이드
## 컬러 팔레트
\```
Primary Color: #{HEX} - {설명}
Secondary Color: #{HEX} - {설명}
Accent Color: #{HEX} - {설명}
텍스트 컬러:
- Primary Text: #{HEX}
- Secondary Text: #{HEX}
- Disabled Text: #{HEX}
배경:
- Light: #{HEX}
- Dark: #{HEX}
상태 컬러:
- Success: #{HEX}
- Warning: #{HEX}
- Error: #{HEX}
- Info: #{HEX}
\```
---
## 타이포그래피
\```
Font Family: {폰트명}
제목:
- H1: {크기}px, {굵기}, {행간}
- H2: {크기}px, {굵기}, {행간}
- H3: {크기}px, {굵기}, {행간}
본문:
- Body 1: {크기}px, {굵기}, {행간}
- Body 2: {크기}px, {굵기}, {행간}
Caption: {크기}px, {굵기}, {행간}
\```
---
## 간격 시스템
\```
XS: 4px - {사용 예시}
S: 8px - {사용 예시}
M: 16px - {사용 예시}
L: 24px - {사용 예시}
XL: 32px - {사용 예시}
XXL: 48px - {사용 예시}
\```
---
## 아이콘
- **아이콘 라이브러리**: {Material Icons, Font Awesome 등}
- **크기**: 16px, 24px, 32px
- **스타일**: {Filled, Outlined, Rounded 등}
---
## 반응형 디자인
### 브레이크포인트
\```
모바일: < 768px
태블릿: 768px - 1024px
데스크톱: > 1024px
\```
### 화면별 레이아웃 전략
- **모바일** (< 768px)
- 레이아웃: 단일 컬럼
- 네비게이션: 햄버거 메뉴
- 터치 타겟: 최소 44x44px
- **태블릿** (768px - 1024px)
- 레이아웃: 2단 컬럼
- 네비게이션: 사이드바 또는 탭
- 터치 타겟: 최소 44x44px
- **데스크톱** (> 1024px)
- 레이아웃: 다단 컬럼
- 네비게이션: 전체 메뉴바
- 마우스/키보드 인터랙션
---
## 인터랙션 디자인
### 애니메이션 원칙
- **Duration**: 300ms (기본)
- **Easing**: ease-in-out
- **Hover Effects**: {효과 설명}
- **Click Feedback**: {효과 설명}
### 마이크로 인터랙션
1. **버튼 클릭**: {효과 설명}
2. **폼 입력**: {효과 설명}
3. **페이지 전환**: {효과 설명}
4. **로딩 상태**: {효과 설명}
---
## 결과 파일
- **UI/UX 디자인.md**: `design/uiux/uiux.md`
- **스타일 가이드.md**: `design/uiux/style-guide.md`
---
## 주의사항
- 모바일 우선(Mobile First) 접근
- 최소 5개 이상 주요 화면 와이어프레임
- ASCII 아트 또는 텍스트 기반 와이어프레임 사용
- 컴포넌트 라이브러리 완전히 정의
- 모든 컴포넌트에 일관성 보장
- 스타일 가이드 구체적으로 (HEX 코드, px 단위)
- 접근성 표준 WCAG 2.1 AA 이상 준수
- 모든 인터랙션 정의
- 유저스토리와 일대일 매핑
---
## 다음 단계
UI/UX 디자인 완료 후:
1. 프로토타입 개발 (기술 스택, 구현)
2. 디자인 리뷰 및 피드백
3. 개발 핸드오프
1---2name: uiux-design3description: 유저스토리를 기반으로 사용자 인터페이스와 경험을 디자인할 때 상세한 UI/UX 디자인 명세를 작성합니다.4---5
6# UI/UX 디자인
7
8## 목적
9
10유저스토리를 기반으로 상세한 UI/UX 디자인 명세를 작성합니다.
11
12## 사용 시점
13
14- 유저스토리 작성이 완료된 후
15- 프로토타입 개발 전
16- 디자인 시스템을 정의해야 할 때
17- 사용자가 "UI/UX 디자인", "UI/UX 설계", "UI 디자인", "UX", "와이어프레임"을 언급할 때
18
19## 필수 입력
20- 유저스토리: `design/userstory.md` (user-stories 결과)
21
22---
23
24## 유저스토리 연결 가이드
25
26### Epic → 주요 화면
27- 각 Epic을 주요 화면 그룹으로 변환
28- 예시: "사용자 관리" Epic → 회원가입, 로그인, 프로필 화면
29
30### User Story → 화면 플로우
31- 각 User Story를 화면 플로우로 변환
32- Acceptance Criteria를 화면 상태와 전환으로 표현
33
34### 비기능적 요구사항 → 디자인 제약
35- 성능 요구사항 → 로딩 전략, 최적화
36- 접근성 요구사항 → WCAG 준수
37- 반응형 요구사항 → 브레이크포인트, 레이아웃
38
39---
40
41## UI/UX 디자인 작성 형식
42
43```markdown
44# UI/UX 디자인 명세
45
46## 디자인 원칙
47
48### 핵심 원칙 (5개)
491. **{원칙명}**: {설명}
502. **{원칙명}**: {설명}
513. **{원칙명}**: {설명}
524. **{원칙명}**: {설명}
535. **{원칙명}**: {설명}
54
55### 디자인 언어
56- **톤 앤 매너**: {예: 친근하고 직관적}
57- **브랜드 키워드**: {키워드1}, {키워드2}, {키워드3}
58
59---
60
61## 정보 아키텍처
62
63### 사이트맵
64\```
65홈
66├── {기능 A}
67│ ├── {하위기능 A-1}
68│ └── {하위기능 A-2}
69├── {기능 B}
70│ ├── {하위기능 B-1}
71│ └── {하위기능 B-2}
72└── {기능 C}
73\```
74
75### 네비게이션 구조
76- **주 네비게이션**: {메뉴1}, {메뉴2}, {메뉴3}
77- **부 네비게이션**: {서브메뉴 항목}
78- **푸터 네비게이션**: {푸터 링크}
79
80---
81
82## 사용자 플로우
83
84### 플로우 1: {기능명}
85
86\```
87시작
88 ↓
89[화면 1: {화면명}] → [화면 2: {화면명}]
90 ↓ ↓
91[화면 3: {화면명}] ← [화면 4: {화면명}]
92 ↓
93완료
94\```
95
96**플로우 설명**:
971. **{화면명}**: {설명}
982. **{화면명}**: {설명}
993. **{화면명}**: {설명}
100
101(다음 플로우 반복)
102
103---
104
105## 와이어프레임
106
107### 화면 1: {화면명}
108
109\```
110+----------------------------------------+
111| [로고] [메뉴] [메뉴] [메뉴] |
112+----------------------------------------+
113| |
114| [{영역명}] |
115| - {요소 1} |
116| - {요소 2} |
117| |
118+----------------------------------------+
119| [{컴포넌트1}] [{컴포넌트2}] [{컴포넌트3}] |
120+----------------------------------------+
121| |
122| [{메인 컨텐츠 영역}] |
123| |
124+----------------------------------------+
125| {푸터} |
126+----------------------------------------+
127\```
128
129**핵심 요소**:
130- **{요소명}**: {설명}
131- **{요소명}**: {설명}
132- **{요소명}**: {설명}
133
134(다음 화면 반복, 최소 5개)
135
136---
137
138## 컴포넌트 라이브러리
139
140### 버튼
141- **Primary Button**: {설명}
142 - 크기: {크기}
143 - 색상: {색상}
144 - 사용: {사용 케이스}
145
146- **Secondary Button**: {설명}
147 - 크기: {크기}
148 - 색상: {색상}
149 - 사용: {사용 케이스}
150
151- **Text Button**: {설명}
152
153### 폼 요소
154- **Input Field**: {설명}
155 - 타입: {text, email, password 등}
156 - 상태: {default, focus, error, disabled}
157
158- **Dropdown**: {설명}
159 - 옵션 표시 방식: {설명}
160 - 검색 기능: {유/무}
161
162- **Checkbox / Radio**: {설명}
163- **Date Picker**: {설명}
164- **File Upload**: {설명}
165
166### 카드
167- **Content Card**: {설명}
168- **Product Card**: {설명}
169- **User Card**: {설명}
170
171### 네비게이션
172- **Top Navigation Bar**: {설명}
173- **Sidebar**: {설명}
174- **Breadcrumb**: {설명}
175- **Pagination**: {설명}
176
177### 피드백
178- **Toast / Snackbar**: {설명}
179- **Modal / Dialog**: {설명}
180- **Alert / Error Messages**: {설명}
181- **Loading Spinner**: {설명}
182
183---
184
185## 접근성 (WCAG 2.1 AA)
186
187### 준수 체크리스트
188- [ ] 키보드 네비게이션 지원 (Tab, Enter, Space, Arrow keys)
189- [ ] 스크린 리더 호환 (적절한 HTML 시맨틱 사용)
190- [ ] 색상 대비율 ≥ 4.5:1 (텍스트), ≥ 3:1 (UI 컴포넌트)
191- [ ] 이미지 대체 텍스트 (alt 속성)
192- [ ] ARIA 레이블 (role, aria-label, aria-describedby)
193- [ ] 폼 레이블 (label 요소)
194- [ ] 포커스 인디케이터 (visible focus indicator)
195
196---
197
198## 사용성 테스트
199
200### 테스트 체크리스트
201- [ ] **5초 테스트**: 첫인상 평가
202- [ ] **태스크 완료율**: 주요 태스크 완료 여부
203- [ ] **에러율**: 사용 중 발생한 에러 빈도
204- [ ] **만족도 점수**: SUS (System Usability Scale)
205- [ ] **NPS (Net Promoter Score)**: 추천 의향
206```
207
208---
209
210## 스타일가이드 작성 형식
211
212```markdown
213# 스타일 가이드
214
215## 컬러 팔레트
216
217\```
218Primary Color: #{HEX} - {설명}
219Secondary Color: #{HEX} - {설명}
220Accent Color: #{HEX} - {설명}
221
222텍스트 컬러:
223- Primary Text: #{HEX}
224- Secondary Text: #{HEX}
225- Disabled Text: #{HEX}
226
227배경:
228- Light: #{HEX}
229- Dark: #{HEX}
230
231상태 컬러:
232- Success: #{HEX}
233- Warning: #{HEX}
234- Error: #{HEX}
235- Info: #{HEX}
236\```
237
238---
239
240## 타이포그래피
241
242\```
243Font Family: {폰트명}
244
245제목:
246- H1: {크기}px, {굵기}, {행간}
247- H2: {크기}px, {굵기}, {행간}
248- H3: {크기}px, {굵기}, {행간}
249
250본문:
251- Body 1: {크기}px, {굵기}, {행간}
252- Body 2: {크기}px, {굵기}, {행간}
253
254Caption: {크기}px, {굵기}, {행간}
255\```
256
257---
258
259## 간격 시스템
260
261\```
262XS: 4px - {사용 예시}
263S: 8px - {사용 예시}
264M: 16px - {사용 예시}
265L: 24px - {사용 예시}
266XL: 32px - {사용 예시}
267XXL: 48px - {사용 예시}
268\```
269
270---
271
272## 아이콘
273
274- **아이콘 라이브러리**: {Material Icons, Font Awesome 등}
275- **크기**: 16px, 24px, 32px
276- **스타일**: {Filled, Outlined, Rounded 등}
277
278---
279
280## 반응형 디자인
281
282### 브레이크포인트
283\```
284모바일: < 768px
285태블릿: 768px - 1024px
286데스크톱: > 1024px
287\```
288
289### 화면별 레이아웃 전략
290- **모바일** (< 768px)
291 - 레이아웃: 단일 컬럼
292 - 네비게이션: 햄버거 메뉴
293 - 터치 타겟: 최소 44x44px
294
295- **태블릿** (768px - 1024px)
296 - 레이아웃: 2단 컬럼
297 - 네비게이션: 사이드바 또는 탭
298 - 터치 타겟: 최소 44x44px
299
300- **데스크톱** (> 1024px)
301 - 레이아웃: 다단 컬럼
302 - 네비게이션: 전체 메뉴바
303 - 마우스/키보드 인터랙션
304
305---
306
307## 인터랙션 디자인
308
309### 애니메이션 원칙
310- **Duration**: 300ms (기본)
311- **Easing**: ease-in-out
312- **Hover Effects**: {효과 설명}
313- **Click Feedback**: {효과 설명}
314
315### 마이크로 인터랙션
3161. **버튼 클릭**: {효과 설명}
3172. **폼 입력**: {효과 설명}
3183. **페이지 전환**: {효과 설명}
3194. **로딩 상태**: {효과 설명}
320
321---
322
323## 결과 파일
324
325- **UI/UX 디자인.md**: `design/uiux/uiux.md`
326- **스타일 가이드.md**: `design/uiux/style-guide.md`
327
328---
329
330## 주의사항
331- 모바일 우선(Mobile First) 접근
332- 최소 5개 이상 주요 화면 와이어프레임
333- ASCII 아트 또는 텍스트 기반 와이어프레임 사용
334- 컴포넌트 라이브러리 완전히 정의
335- 모든 컴포넌트에 일관성 보장
336- 스타일 가이드 구체적으로 (HEX 코드, px 단위)
337- 접근성 표준 WCAG 2.1 AA 이상 준수
338- 모든 인터랙션 정의
339- 유저스토리와 일대일 매핑
340
341---
342
343## 다음 단계
344
345UI/UX 디자인 완료 후:
3461. 프로토타입 개발 (기술 스택, 구현)
3472. 디자인 리뷰 및 피드백
3483. 개발 핸드오프