@wondev/dotenv-example 1.0.2 → 1.0.3
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 +38 -0
- package/CLAUDE.md +1 -40
- package/bin/index.js +64 -55
- package/package.json +8 -2
- package/prompts/20260102_165844.md +3 -0
- package/prompts/20260102_170026.md +3 -0
- package/prompts/20260102_170120.md +4 -0
- package/prompts/20260102_170500.md +3 -0
- package/prompts/20260102_170839.md +3 -0
- package/prompts/20260102_171046.md +3 -0
- package/prompts/20260102_171147.md +38 -0
- package/prompts/20260102_171336.md +76 -0
- package/prompts/20260102_171546.md +40 -0
- package/.claude/README.md +0 -60
- package/.claude/commands/business_logic.md +0 -143
- package/.claude/commands/generate-prd.md +0 -175
- package/.claude/commands/gotobackend.md +0 -569
- package/.claude/commands/playwrightMCP_install.md +0 -113
- package/.claude/commands/setting_dev.md +0 -731
- package/.claude/commands/tech-lead.md +0 -404
- package/.claude/commands/user-flow.md +0 -839
- package/.claude/settings.local.json +0 -9
- package/.cursor/README.md +0 -10
- package/.cursor/mcp.json +0 -31
- package/.cursor/rules/common/cursor-rules.mdc +0 -53
- package/.cursor/rules/common/git-convention.mdc +0 -86
- package/.cursor/rules/common/self-improve.mdc +0 -72
- package/.cursor/rules/common/tdd.mdc +0 -81
- package/.cursor/rules/common/vibe-coding.mdc +0 -114
- package/.cursor/rules/supabase/supabase-bootstrap-auth.mdc +0 -236
- package/.cursor/rules/supabase/supabase-create-db-functions.mdc +0 -136
- package/.cursor/rules/supabase/supabase-create-migration.mdc +0 -50
- package/.cursor/rules/supabase/supabase-create-rls-policies.mdc +0 -248
- package/.cursor/rules/supabase/supabase-declarative-database-schema.mdc +0 -78
- package/.cursor/rules/supabase/supabase-postgres-sql-style-guide.mdc +0 -133
- package/.cursor/rules/supabase/supabase-writing-edge-functions.mdc +0 -105
- package/.cursor/rules/web/design-rules.mdc +0 -381
- package/.cursor/rules/web/nextjs-convention.mdc +0 -237
- package/.cursor/rules/web/playwright-test-guide.mdc +0 -176
- package/.cursor/rules/web/toss-frontend.mdc +0 -695
- package/.env +0 -4
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
# Specify the following for Cursor rules
|
|
3
|
-
description: For when modifying the Supabase database schema.
|
|
4
|
-
alwaysApply: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Database: Declarative Database Schema
|
|
8
|
-
|
|
9
|
-
Mandatory Instructions for Supabase Declarative Schema Management
|
|
10
|
-
|
|
11
|
-
## 1. **Exclusive Use of Declarative Schema**
|
|
12
|
-
|
|
13
|
-
-**All database schema modifications must be defined within `.sql` files located in the `supabase/schemas/` directory. -**Do not\*\* create or modify files directly in the `supabase/migrations/` directory unless the modification is about the known caveats below. Migration files are to be generated automatically through the CLI.
|
|
14
|
-
|
|
15
|
-
## 2. **Schema Declaration**
|
|
16
|
-
|
|
17
|
-
-For each database entity (e.g., tables, views, functions), create or update a corresponding `.sql` file in the `supabase/schemas/` directory
|
|
18
|
-
-Ensure that each `.sql` file accurately represents the desired final state of the entity
|
|
19
|
-
|
|
20
|
-
## 3. **Migration Generation**
|
|
21
|
-
|
|
22
|
-
- Before generating migrations, **stop the local Supabase development environment**
|
|
23
|
-
```bash
|
|
24
|
-
supabase stop
|
|
25
|
-
```
|
|
26
|
-
- Generate migration files by diffing the declared schema against the current database state
|
|
27
|
-
```bash
|
|
28
|
-
supabase db diff -f <migration_name>
|
|
29
|
-
```
|
|
30
|
-
Replace `<migration_name>` with a descriptive name for the migration
|
|
31
|
-
|
|
32
|
-
## 4. **Schema File Organization**
|
|
33
|
-
|
|
34
|
-
- Schema files are executed in lexicographic order. To manage dependencies (e.g., foreign keys), name files to ensure correct execution order
|
|
35
|
-
- When adding new columns, append them to the end of the table definition to prevent unnecessary diffs
|
|
36
|
-
|
|
37
|
-
## 5. **Rollback Procedures**
|
|
38
|
-
|
|
39
|
-
- To revert changes
|
|
40
|
-
- Manually update the relevant `.sql` files in `supabase/schemas/` to reflect the desired state
|
|
41
|
-
- Generate a new migration file capturing the rollback
|
|
42
|
-
```bash
|
|
43
|
-
supabase db diff -f <rollback_migration_name>
|
|
44
|
-
```
|
|
45
|
-
- Review the generated migration file carefully to avoid unintentional data loss
|
|
46
|
-
|
|
47
|
-
## 6. **Known caveats**
|
|
48
|
-
|
|
49
|
-
The migra diff tool used for generating schema diff is capable of tracking most database changes. However, there are edge cases where it can fail.
|
|
50
|
-
|
|
51
|
-
If you need to use any of the entities below, remember to add them through versioned migrations instead.
|
|
52
|
-
|
|
53
|
-
### Data manipulation language
|
|
54
|
-
|
|
55
|
-
- DML statements such as insert, update, delete, etc., are not captured by schema diff
|
|
56
|
-
|
|
57
|
-
### View ownership
|
|
58
|
-
|
|
59
|
-
- view owner and grants
|
|
60
|
-
- security invoker on views
|
|
61
|
-
- materialized views
|
|
62
|
-
- doesn’t recreate views when altering column type
|
|
63
|
-
|
|
64
|
-
### RLS policies
|
|
65
|
-
|
|
66
|
-
- alter policy statements
|
|
67
|
-
- column privileges
|
|
68
|
-
- Other entities#
|
|
69
|
-
- schema privileges are not tracked because each schema is diffed separately
|
|
70
|
-
- comments are not tracked
|
|
71
|
-
- partitions are not tracked
|
|
72
|
-
- alter publication ... add table ...
|
|
73
|
-
- create domain statements are ignored
|
|
74
|
-
- grant statements are duplicated from default privileges
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
**Non-compliance with these instructions may lead to inconsistent database states and is strictly prohibited.**
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
# Specify the following for Cursor rules
|
|
3
|
-
description: Guidelines for writing Postgres SQL
|
|
4
|
-
alwaysApply: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Postgres SQL Style Guide
|
|
8
|
-
|
|
9
|
-
## General
|
|
10
|
-
|
|
11
|
-
- Use lowercase for SQL reserved words to maintain consistency and readability.
|
|
12
|
-
- Employ consistent, descriptive identifiers for tables, columns, and other database objects.
|
|
13
|
-
- Use white space and indentation to enhance the readability of your code.
|
|
14
|
-
- Store dates in ISO 8601 format (`yyyy-mm-ddThh:mm:ss.sssss`).
|
|
15
|
-
- Include comments for complex logic, using '/_ ... _/' for block comments and '--' for line comments.
|
|
16
|
-
|
|
17
|
-
## Naming Conventions
|
|
18
|
-
|
|
19
|
-
- Avoid SQL reserved words and ensure names are unique and under 63 characters.
|
|
20
|
-
- Use snake_case for tables and columns.
|
|
21
|
-
- Prefer plurals for table names
|
|
22
|
-
- Prefer singular names for columns.
|
|
23
|
-
|
|
24
|
-
## Tables
|
|
25
|
-
|
|
26
|
-
- Avoid prefixes like 'tbl\_' and ensure no table name matches any of its column names.
|
|
27
|
-
- Always add an `id` column of type `identity generated always` unless otherwise specified.
|
|
28
|
-
- Create all tables in the `public` schema unless otherwise specified.
|
|
29
|
-
- Always add the schema to SQL queries for clarity.
|
|
30
|
-
- Always add a comment to describe what the table does. The comment can be up to 1024 characters.
|
|
31
|
-
|
|
32
|
-
## Columns
|
|
33
|
-
|
|
34
|
-
- Use singular names and avoid generic names like 'id'.
|
|
35
|
-
- For references to foreign tables, use the singular of the table name with the `_id` suffix. For example `user_id` to reference the `users` table
|
|
36
|
-
- Always use lowercase except in cases involving acronyms or when readability would be enhanced by an exception.
|
|
37
|
-
|
|
38
|
-
#### Examples:
|
|
39
|
-
|
|
40
|
-
```sql
|
|
41
|
-
create table books (
|
|
42
|
-
id bigint generated always as identity primary key,
|
|
43
|
-
title text not null,
|
|
44
|
-
author_id bigint references authors (id)
|
|
45
|
-
);
|
|
46
|
-
comment on table books is 'A list of all the books in the library.';
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Queries
|
|
50
|
-
|
|
51
|
-
- When the query is shorter keep it on just a few lines. As it gets larger start adding newlines for readability
|
|
52
|
-
- Add spaces for readability.
|
|
53
|
-
|
|
54
|
-
Smaller queries:
|
|
55
|
-
|
|
56
|
-
```sql
|
|
57
|
-
select *
|
|
58
|
-
from employees
|
|
59
|
-
where end_date is null;
|
|
60
|
-
|
|
61
|
-
update employees
|
|
62
|
-
set end_date = '2023-12-31'
|
|
63
|
-
where employee_id = 1001;
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Larger queries:
|
|
67
|
-
|
|
68
|
-
```sql
|
|
69
|
-
select
|
|
70
|
-
first_name,
|
|
71
|
-
last_name
|
|
72
|
-
from employees
|
|
73
|
-
where start_date between '2021-01-01' and '2021-12-31' and status = 'employed';
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
### Joins and Subqueries
|
|
77
|
-
|
|
78
|
-
- Format joins and subqueries for clarity, aligning them with related SQL clauses.
|
|
79
|
-
- Prefer full table names when referencing tables. This helps for readability.
|
|
80
|
-
|
|
81
|
-
```sql
|
|
82
|
-
select
|
|
83
|
-
employees.employee_name,
|
|
84
|
-
departments.department_name
|
|
85
|
-
from
|
|
86
|
-
employees
|
|
87
|
-
join departments on employees.department_id = departments.department_id
|
|
88
|
-
where employees.start_date > '2022-01-01';
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
## Aliases
|
|
92
|
-
|
|
93
|
-
- Use meaningful aliases that reflect the data or transformation applied, and always include the 'as' keyword for clarity.
|
|
94
|
-
|
|
95
|
-
```sql
|
|
96
|
-
select count(*) as total_employees
|
|
97
|
-
from employees
|
|
98
|
-
where end_date is null;
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Complex queries and CTEs
|
|
102
|
-
|
|
103
|
-
- If a query is extremely complex, prefer a CTE.
|
|
104
|
-
- Make sure the CTE is clear and linear. Prefer readability over performance.
|
|
105
|
-
- Add comments to each block.
|
|
106
|
-
|
|
107
|
-
```sql
|
|
108
|
-
with
|
|
109
|
-
department_employees as (
|
|
110
|
-
-- Get all employees and their departments
|
|
111
|
-
select
|
|
112
|
-
employees.department_id,
|
|
113
|
-
employees.first_name,
|
|
114
|
-
employees.last_name,
|
|
115
|
-
departments.department_name
|
|
116
|
-
from
|
|
117
|
-
employees
|
|
118
|
-
join departments on employees.department_id = departments.department_id
|
|
119
|
-
),
|
|
120
|
-
employee_counts as (
|
|
121
|
-
-- Count how many employees in each department
|
|
122
|
-
select
|
|
123
|
-
department_name,
|
|
124
|
-
count(*) as num_employees
|
|
125
|
-
from department_employees
|
|
126
|
-
group by department_name
|
|
127
|
-
)
|
|
128
|
-
select
|
|
129
|
-
department_name,
|
|
130
|
-
num_employees
|
|
131
|
-
from employee_counts
|
|
132
|
-
order by department_name;
|
|
133
|
-
```
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Coding rules for Supabase Edge Functions
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Writing Supabase Edge Functions
|
|
7
|
-
|
|
8
|
-
You're an expert in writing TypeScript and Deno JavaScript runtime. Generate **high-quality Supabase Edge Functions** that adhere to the following best practices:
|
|
9
|
-
|
|
10
|
-
## Guidelines
|
|
11
|
-
|
|
12
|
-
1. Try to use Web APIs and Deno’s core APIs instead of external dependencies (eg: use fetch instead of Axios, use WebSockets API instead of node-ws)
|
|
13
|
-
2. If you are reusing utility methods between Edge Functions, add them to `supabase/functions/_shared` and import using a relative path. Do NOT have cross dependencies between Edge Functions.
|
|
14
|
-
3. Do NOT use bare specifiers when importing dependecnies. If you need to use an external dependency, make sure it's prefixed with either `npm:` or `jsr:`. For example, `@supabase/supabase-js` should be written as `npm:@supabase/supabase-js`.
|
|
15
|
-
4. For external imports, always define a version. For example, `npm:@express` should be written as `npm:express@4.18.2`.
|
|
16
|
-
5. For external dependencies, importing via `npm:` and `jsr:` is preferred. Minimize the use of imports from @`deno.land/x` , `esm.sh` and @`unpkg.com` . If you have a package from one of those CDNs, you can replace the CDN hostname with `npm:` specifier.
|
|
17
|
-
6. You can also use Node built-in APIs. You will need to import them using `node:` specifier. For example, to import Node process: `import process from "node:process". Use Node APIs when you find gaps in Deno APIs.
|
|
18
|
-
7. Do NOT use `import { serve } from "https://deno.land/std@0.168.0/http/server.ts"`. Instead use the built-in `Deno.serve`.
|
|
19
|
-
8. Following environment variables (ie. secrets) are pre-populated in both local and hosted Supabase environments. Users don't need to manually set them:
|
|
20
|
-
- SUPABASE_URL
|
|
21
|
-
- SUPABASE_ANON_KEY
|
|
22
|
-
- SUPABASE_SERVICE_ROLE_KEY
|
|
23
|
-
- SUPABASE_DB_URL
|
|
24
|
-
9. To set other environment variables (ie. secrets) users can put them in a env file and run the `supabase secrets set --env-file path/to/env-file`
|
|
25
|
-
10. A single Edge Function can handle multiple routes. It is recommended to use a library like Express or Hono to handle the routes as it's easier for developer to understand and maintain. Each route must be prefixed with `/function-name` so they are routed correctly.
|
|
26
|
-
11. File write operations are ONLY permitted on `/tmp` directory. You can use either Deno or Node File APIs.
|
|
27
|
-
12. Use `EdgeRuntime.waitUntil(promise)` static method to run long-running tasks in the background without blocking response to a request. Do NOT assume it is available in the request / execution context.
|
|
28
|
-
|
|
29
|
-
## Example Templates
|
|
30
|
-
|
|
31
|
-
### Simple Hello World Function
|
|
32
|
-
|
|
33
|
-
```tsx
|
|
34
|
-
interface reqPayload {
|
|
35
|
-
name: string
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
console.info('server started')
|
|
39
|
-
|
|
40
|
-
Deno.serve(async (req: Request) => {
|
|
41
|
-
const { name }: reqPayload = await req.json()
|
|
42
|
-
const data = {
|
|
43
|
-
message: `Hello ${name} from foo!`,
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return new Response(JSON.stringify(data), {
|
|
47
|
-
headers: { 'Content-Type': 'application/json', Connection: 'keep-alive' },
|
|
48
|
-
})
|
|
49
|
-
})
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### Example Function using Node built-in API
|
|
53
|
-
|
|
54
|
-
```tsx
|
|
55
|
-
import { randomBytes } from 'node:crypto'
|
|
56
|
-
import { createServer } from 'node:http'
|
|
57
|
-
import process from 'node:process'
|
|
58
|
-
|
|
59
|
-
const generateRandomString = (length) => {
|
|
60
|
-
const buffer = randomBytes(length)
|
|
61
|
-
return buffer.toString('hex')
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const randomString = generateRandomString(10)
|
|
65
|
-
console.log(randomString)
|
|
66
|
-
|
|
67
|
-
const server = createServer((req, res) => {
|
|
68
|
-
const message = `Hello`
|
|
69
|
-
res.end(message)
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
server.listen(9999)
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Using npm packages in Functions
|
|
76
|
-
|
|
77
|
-
```tsx
|
|
78
|
-
import express from 'npm:express@4.18.2'
|
|
79
|
-
|
|
80
|
-
const app = express()
|
|
81
|
-
|
|
82
|
-
app.get(/(.*)/, (req, res) => {
|
|
83
|
-
res.send('Welcome to Supabase')
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
app.listen(8000)
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### Generate embeddings using built-in @Supabase.ai API
|
|
90
|
-
|
|
91
|
-
```tsx
|
|
92
|
-
const model = new Supabase.ai.Session('gte-small')
|
|
93
|
-
|
|
94
|
-
Deno.serve(async (req: Request) => {
|
|
95
|
-
const params = new URL(req.url).searchParams
|
|
96
|
-
const input = params.get('text')
|
|
97
|
-
const output = await model.run(input, { mean_pool: true, normalize: true })
|
|
98
|
-
return new Response(JSON.stringify(output), {
|
|
99
|
-
headers: {
|
|
100
|
-
'Content-Type': 'application/json',
|
|
101
|
-
Connection: 'keep-alive',
|
|
102
|
-
},
|
|
103
|
-
})
|
|
104
|
-
})
|
|
105
|
-
```
|
|
@@ -1,381 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
**기본 구조:**
|
|
3
|
-
```
|
|
4
|
-
역할: [프레임워크] 전문가이며 [UI 라이브러리] 특화
|
|
5
|
-
상황: [애플리케이션 유형]을 개발 중이며 [특정 요구사항] 필요
|
|
6
|
-
작업: [컴포넌트 타입]을 생성하되 [구체적 기능] 포함
|
|
7
|
-
제약: [스타일링 방식], [접근성/반응형 요구사항] 준수
|
|
8
|
-
출력: [코드 형식]과 [문서화 수준] 제공
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
**고급 컨텍스트 레이어링:**
|
|
12
|
-
- **프로젝트 컨텍스트**: 업계, 대상 사용자, 목표
|
|
13
|
-
- **기술적 컨텍스트**: 플랫폼, 제약사항, 통합 요소
|
|
14
|
-
- **디자인 컨텍스트**: 브랜드, 스타일, 패턴
|
|
15
|
-
- **사용자 컨텍스트**: 페르소나, 시나리오, 행동 패턴
|
|
16
|
-
- **비즈니스 컨텍스트**: KPI, 성공 지표, 일정
|
|
17
|
-
|
|
18
|
-
### UI/UX 특화 프롬프트 패턴
|
|
19
|
-
|
|
20
|
-
**컴포넌트 생성 패턴:**
|
|
21
|
-
```
|
|
22
|
-
TypeScript React 버튼 컴포넌트를 생성하세요:
|
|
23
|
-
- 변형: primary/secondary/outline 상태 지원
|
|
24
|
-
- 크기: small/medium/large 옵션
|
|
25
|
-
- 상태: disabled, loading 상태 처리
|
|
26
|
-
- 접근성: ARIA 속성과 키보드 네비게이션
|
|
27
|
-
- 스타일링: Tailwind CSS와 디자인 토큰 활용
|
|
28
|
-
- 테스트: Jest와 React Testing Library 포함
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
**레이아웃 설계 패턴:**
|
|
32
|
-
```
|
|
33
|
-
모바일 우선 반응형 그리드 레이아웃 구현:
|
|
34
|
-
- 데스크톱: 3열, 태블릿: 2열, 모바일: 1열
|
|
35
|
-
- CSS Grid와 Tailwind 브레이크포인트 사용
|
|
36
|
-
- 간격: 일관된 스페이싱 시스템 적용
|
|
37
|
-
- 성능: 이미지 지연 로딩과 최적화
|
|
38
|
-
- 접근성: 스크린 리더 호환성
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## 컴포넌트 설계와 디자인 시스템 전략
|
|
42
|
-
|
|
43
|
-
### Atomic Design 기반 프롬프트
|
|
44
|
-
|
|
45
|
-
**원자(Atoms) 생성:**
|
|
46
|
-
```
|
|
47
|
-
기본 인풋 필드 원자 컴포넌트 생성:
|
|
48
|
-
- 의미적 HTML 요소 사용
|
|
49
|
-
- 타입별 변형: text, email, password, number
|
|
50
|
-
- 상태: default, focused, error, disabled
|
|
51
|
-
- 접근성: 레이블 연결, ARIA 속성
|
|
52
|
-
- 스타일링: 디자인 토큰 기반
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
**분자(Molecules) 구성:**
|
|
56
|
-
```
|
|
57
|
-
검색 박스 분자 컴포넌트 설계:
|
|
58
|
-
- 구성 요소: 입력 필드 + 검색 버튼 + 아이콘
|
|
59
|
-
- 기능: 자동완성, 실시간 검색, 키보드 단축키
|
|
60
|
-
- 상태 관리: 검색어, 결과, 로딩 상태
|
|
61
|
-
- 최적화: 디바운싱, 캐싱, 성능 고려
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### 디자인 토큰 기반 시스템
|
|
65
|
-
|
|
66
|
-
**토큰 체계 구축:**
|
|
67
|
-
```json
|
|
68
|
-
{
|
|
69
|
-
"color": {
|
|
70
|
-
"primary": {
|
|
71
|
-
"50": "#f0f9ff",
|
|
72
|
-
"500": "#3b82f6",
|
|
73
|
-
"900": "#1e3a8a"
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
"spacing": {
|
|
77
|
-
"xs": "0.25rem",
|
|
78
|
-
"sm": "0.5rem",
|
|
79
|
-
"md": "1rem"
|
|
80
|
-
},
|
|
81
|
-
"typography": {
|
|
82
|
-
"heading": {
|
|
83
|
-
"fontSize": "1.875rem",
|
|
84
|
-
"lineHeight": "2.25rem"
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
**토큰 활용 프롬프트:**
|
|
91
|
-
```
|
|
92
|
-
디자인 토큰 기반 카드 컴포넌트 생성:
|
|
93
|
-
- 배경색: semantic token의 surface 색상 사용
|
|
94
|
-
- 패딩: spacing token의 md, lg 값 적용
|
|
95
|
-
- 텍스트: typography token의 body, heading 스타일
|
|
96
|
-
- 테마 지원: 다크/라이트 모드 자동 대응
|
|
97
|
-
- 일관성: 전역 토큰 시스템과 연동
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## 반응형 디자인과 접근성 고려사항
|
|
101
|
-
|
|
102
|
-
### 모바일 우선 반응형 전략
|
|
103
|
-
|
|
104
|
-
**브레이크포인트 시스템:**
|
|
105
|
-
```
|
|
106
|
-
반응형 내비게이션 메뉴 구현:
|
|
107
|
-
- 모바일 (320px+): 햄버거 메뉴, 풀스크린 오버레이
|
|
108
|
-
- 태블릿 (768px+): 축약된 메뉴, 드롭다운 지원
|
|
109
|
-
- 데스크톱 (1024px+): 풀 메뉴, 메가 메뉴 옵션
|
|
110
|
-
- 터치 친화적: 44px 최소 터치 영역
|
|
111
|
-
- 성능: 뷰포트별 최적화된 자원 로딩
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
**플렉시블 레이아웃:**
|
|
115
|
-
```
|
|
116
|
-
CSS Grid와 Flexbox 조합 레이아웃:
|
|
117
|
-
- 주요 구조: CSS Grid로 2차원 배치
|
|
118
|
-
- 컴포넌트 정렬: Flexbox로 1차원 조정
|
|
119
|
-
- 컨테이너 쿼리: 컴포넌트 레벨 반응형
|
|
120
|
-
- 유동 타이포그래피: clamp()와 뷰포트 단위
|
|
121
|
-
- 종횡비 유지: aspect-ratio 속성 활용
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### WCAG 2.1 AA 준수 접근성
|
|
125
|
-
|
|
126
|
-
**접근성 체크리스트 프롬프트:**
|
|
127
|
-
```
|
|
128
|
-
접근성 준수 폼 컴포넌트 생성:
|
|
129
|
-
- 의미적 HTML: fieldset, legend, label 요소
|
|
130
|
-
- ARIA 속성: aria-required, aria-invalid, aria-describedby
|
|
131
|
-
- 색상 대비: 4.5:1 최소 비율 준수
|
|
132
|
-
- 키보드 내비게이션: Tab, Enter, Space 키 지원
|
|
133
|
-
- 스크린 리더: 명확한 읽기 순서와 안내
|
|
134
|
-
- 에러 처리: 구체적이고 도움이 되는 메시지
|
|
135
|
-
- 포커스 관리: 명확한 시각적 표시
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
**키보드 내비게이션 패턴:**
|
|
139
|
-
```
|
|
140
|
-
모달 다이얼로그 접근성 구현:
|
|
141
|
-
- 포커스 트래핑: 모달 내부로 포커스 제한
|
|
142
|
-
- ESC 키: 모달 닫기 기능
|
|
143
|
-
- 초기 포커스: 첫 번째 상호작용 요소로 이동
|
|
144
|
-
- 배경 스크롤: 모달 열림 시 방지
|
|
145
|
-
- ARIA 속성: role="dialog", aria-modal="true"
|
|
146
|
-
- 스크린 리더 알림: 모달 열림/닫힘 상태 전달
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
## 실제 개발 시나리오별 프롬프트 예시
|
|
150
|
-
|
|
151
|
-
### 랜딩페이지 개발
|
|
152
|
-
|
|
153
|
-
**기본 랜딩페이지:**
|
|
154
|
-
```
|
|
155
|
-
SaaS 제품 랜딩페이지 생성:
|
|
156
|
-
- 히어로 섹션: 강력한 헤드라인, 서브헤딩, CTA 버튼
|
|
157
|
-
- 가치 제안: 3개 핵심 혜택, 아이콘과 설명
|
|
158
|
-
- 사회적 증명: 고객 로고, 평점, 사용자 수
|
|
159
|
-
- 기능 하이라이트: 스크린샷과 설명, 호버 효과
|
|
160
|
-
- 가격 테이블: 3단계 요금제, 추천 플랜 강조
|
|
161
|
-
- CTA 섹션: 무료 체험 유도, 연락처 정보
|
|
162
|
-
- 스타일: 미니멀, 전문적, 모바일 최적화
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
**한국 시장 특화 랜딩페이지:**
|
|
166
|
-
```
|
|
167
|
-
한국 B2B SaaS 랜딩페이지 설계:
|
|
168
|
-
- 문화적 고려: 신뢰 구축 요소, 정중한 표현
|
|
169
|
-
- 소셜 증명: 한국 기업 로고, 상세한 후기
|
|
170
|
-
- 결제 방식: 카카오페이, 네이버페이 통합
|
|
171
|
-
- 고객 지원: 라이브 챗, 한국어 지원 명시
|
|
172
|
-
- 인증: 국내 보안 인증, 개인정보보호 표시
|
|
173
|
-
- 모바일 우선: 세로 스크롤링, 터치 최적화
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### 대시보드 인터페이스
|
|
177
|
-
|
|
178
|
-
**분석 대시보드:**
|
|
179
|
-
```
|
|
180
|
-
데이터 분석 대시보드 구현:
|
|
181
|
-
- 정보 구조: 계층적 데이터 표시, 맞춤형 뷰
|
|
182
|
-
- 시각화 전략: 차트 유형별 데이터 매칭, 상호작용
|
|
183
|
-
- 필터링 시스템: 날짜 범위, 카테고리, 사용자 정의
|
|
184
|
-
- 성능 고려: 지연 로딩, 점진적 공개
|
|
185
|
-
- 개인화: 위젯 배치, 개인 설정
|
|
186
|
-
- 내보내기: PDF 보고서, 공유 링크, 예약 발송
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
### 폼 디자인과 검증
|
|
190
|
-
|
|
191
|
-
**복합 단계별 폼:**
|
|
192
|
-
```
|
|
193
|
-
사용자 등록 다단계 폼 설계:
|
|
194
|
-
- 사용자 플로우: 단계별 분해, 저장/재개 기능
|
|
195
|
-
- 검증 전략: 인라인, 요약, 점진적 검증
|
|
196
|
-
- 에러 처리: 구체적 에러 상태, 복구 제안
|
|
197
|
-
- 데이터 지속성: 자동 저장, 세션 관리
|
|
198
|
-
- 조건부 로직: 이전 답변에 따른 필드 표시/숨김
|
|
199
|
-
- 전환 최적화: 필드 최소화, 스마트 기본값, 사회적 증명
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
### 네비게이션 시스템
|
|
203
|
-
|
|
204
|
-
**이커머스 내비게이션:**
|
|
205
|
-
```
|
|
206
|
-
온라인 쇼핑몰 내비게이션 시스템:
|
|
207
|
-
- 카테고리 구조: 계층적 조직, 패싯 내비게이션
|
|
208
|
-
- 검색 경험: 자동완성, 오타 허용, 비주얼 검색
|
|
209
|
-
- 사용자 계정: 위시리스트, 주문 내역, 계정 설정
|
|
210
|
-
- 쇼핑 도구: 장바구니 미리보기, 비교, 최근 본 상품
|
|
211
|
-
- 신뢰 신호: 보안 배지, 고객 서비스 접근
|
|
212
|
-
- 개인화: 추천 카테고리, 브라우징 히스토리
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## 프롬프트 최적화 팁과 주의사항
|
|
216
|
-
|
|
217
|
-
### 효과적인 프롬프트 구조
|
|
218
|
-
|
|
219
|
-
**구체성 계층:**
|
|
220
|
-
1. **일반적**: "폼 만들어줘"
|
|
221
|
-
2. **기본적**: "React 폼을 검증과 함께 만들어줘"
|
|
222
|
-
3. **구체적**: "react-hook-form과 Zod 검증을 사용한 TypeScript 폼 컴포넌트를 만들어줘"
|
|
223
|
-
4. **최적화**: 위 내용 + 접근성 요구사항, 스타일링 프레임워크, 에러 처리 패턴, 통합 요구사항
|
|
224
|
-
|
|
225
|
-
### 반복적 개선 전략
|
|
226
|
-
|
|
227
|
-
**OODA 루프 적용:**
|
|
228
|
-
1. **관찰(Observe)**: 현재 출력 품질과 gaps 분석
|
|
229
|
-
2. **방향설정(Orient)**: 결과에 기반한 이해 조정
|
|
230
|
-
3. **결정(Decide)**: 구체적인 프롬프트 수정 선택
|
|
231
|
-
4. **실행(Act)**: 개선된 프롬프트 구현
|
|
232
|
-
|
|
233
|
-
**피드백 기반 반복:**
|
|
234
|
-
```
|
|
235
|
-
이전 컴포넌트에서 [구체적 개선사항]이 필요합니다.
|
|
236
|
-
[정확한 요구사항]에 맞게 수정해주세요:
|
|
237
|
-
- 문제점: [specific issue]
|
|
238
|
-
- 기대 결과: [exact requirements]
|
|
239
|
-
- 제약사항: [what cannot be changed]
|
|
240
|
-
- 성공 기준: [measurable criteria]
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
### 컨텍스트 보존 기법
|
|
244
|
-
|
|
245
|
-
**세션 상태 관리:**
|
|
246
|
-
```
|
|
247
|
-
프로젝트 컨텍스트 유지:
|
|
248
|
-
- 이전 대화 참조: "앞서 만든 디자인 시스템에 기반하여"
|
|
249
|
-
- 일관된 명명: 프로젝트 전반에 걸친 용어 통일
|
|
250
|
-
- 진행 상황 추적: 완료된 작업과 남은 작업 명시
|
|
251
|
-
- 결정 문서화: 중요한 설계 결정과 근거 기록
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
## 초보자 실수와 개선 방안
|
|
255
|
-
|
|
256
|
-
### 자주 발생하는 실수들
|
|
257
|
-
|
|
258
|
-
**❌ 모호한 프롬프트:**
|
|
259
|
-
"깔끔한 웹사이트 만들어줘"
|
|
260
|
-
|
|
261
|
-
**✅ 개선된 버전:**
|
|
262
|
-
```
|
|
263
|
-
[구체적 업종] 비즈니스를 위한 반응형 웹사이트 생성:
|
|
264
|
-
- 주요 목표: [리드 생성/판매/정보 제공]
|
|
265
|
-
- 핵심 섹션: [소개, 서비스, 후기, 연락처]
|
|
266
|
-
- 브랜드 성격: [전문적/친근함/혁신적]
|
|
267
|
-
- 기술 요구사항: [CMS, SEO 친화적, 모바일 최적화]
|
|
268
|
-
- 성공 지표: [전환 목표, 사용자 행동]
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
**❌ 컨텍스트 누락:**
|
|
272
|
-
"대시보드 디자인해줘"
|
|
273
|
-
|
|
274
|
-
**✅ 개선된 버전:**
|
|
275
|
-
```
|
|
276
|
-
원격 팀을 위한 프로젝트 관리 대시보드 설계:
|
|
277
|
-
- 사용자 컨텍스트: [팀 규모, 기술 수준, 일일 워크플로우]
|
|
278
|
-
- 데이터 유형: [프로젝트 진행률, 팀 성과, 마감일, 리소스]
|
|
279
|
-
- 사용자 목표: [빠른 상태 확인, 상세 분석, 팀 협업]
|
|
280
|
-
- 디바이스 사용: [주로 데스크톱, 모바일 체크인, 태블릿 발표]
|
|
281
|
-
- 통합 요구: [기존 도구, API, 내보내기 요구사항]
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
### 디버깅과 문제 해결
|
|
285
|
-
|
|
286
|
-
**체계적 디버깅 프레임워크:**
|
|
287
|
-
```
|
|
288
|
-
에러 분석 요청:
|
|
289
|
-
- 에러: [정확한 에러 메시지]
|
|
290
|
-
- 컨텍스트: [관련 코드와 환경 정보]
|
|
291
|
-
- 기대 동작: [일어나야 할 일]
|
|
292
|
-
- 실제 동작: [실제로 일어나는 일]
|
|
293
|
-
- 해결 제약: [변경할 수 없는 것]
|
|
294
|
-
- 해결 요구: [솔루션 기준]
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
## 2025년 최신 UI/UX 트렌드 반영
|
|
298
|
-
|
|
299
|
-
### 현재 주요 디자인 트렌드
|
|
300
|
-
|
|
301
|
-
**글래스모피즘과 뉴모피즘:**
|
|
302
|
-
```
|
|
303
|
-
모던 카드 컴포넌트 생성:
|
|
304
|
-
- 글래스모피즘: backdrop-filter blur 효과, 투명도
|
|
305
|
-
- 뉴모피즘: 부드러운 3D 효과, 미묘한 그림자
|
|
306
|
-
- 다크 모드: 시스템 설정 감지, 매끄러운 전환
|
|
307
|
-
- 마이크로 인터랙션: CSS 애니메이션 활용
|
|
308
|
-
- 벤토 그리드: CSS Grid로 모듈형 콘텐츠 블록
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
### AI 기반 개인화
|
|
312
|
-
|
|
313
|
-
**적응형 UI 구현:**
|
|
314
|
-
```
|
|
315
|
-
사용자 행동 기반 개인화 인터페이스:
|
|
316
|
-
- 행동 추적: 사용자 상호작용 패턴 분석
|
|
317
|
-
- 콘텐츠 추천: 개인화된 콘텐츠 표시
|
|
318
|
-
- 적응형 레이아웃: 사용 패턴에 따른 UI 조정
|
|
319
|
-
- 예측적 UI: 사용자 의도 예측 인터페이스
|
|
320
|
-
- 동적 콘텐츠: 실시간 개인화 로딩
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
## 한국어 사용자를 위한 특화 가이드
|
|
324
|
-
|
|
325
|
-
### 한국 시장 맞춤 디자인
|
|
326
|
-
|
|
327
|
-
**문화적 고려사항:**
|
|
328
|
-
```
|
|
329
|
-
한국 사용자 대상 인터페이스 설계:
|
|
330
|
-
- 시각적 선호: 깔끔하고 정리된 레이아웃, 충분한 여백
|
|
331
|
-
- 상호작용 패턴: 모바일 우선 사용, 세로 스크롤링 선호
|
|
332
|
-
- 신뢰 요소: 인증서, 고객 후기, 브랜드 평판
|
|
333
|
-
- 커뮤니케이션: 정중하고 공식적인 언어, 관계 중심
|
|
334
|
-
- 소셜 통합: 카카오톡 공유, 네이버 연동, 커뮤니티 기능
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
**한글 타이포그래피:**
|
|
338
|
-
```
|
|
339
|
-
한글 최적화 타이포그래피 시스템:
|
|
340
|
-
- 폰트 선택: Noto Sans KR, Source Han Sans, Black Han Sans
|
|
341
|
-
- 계층구조: 한글 문자 높이를 고려한 헤딩 레벨
|
|
342
|
-
- 가독성: 한글 텍스트 행간, 문자 밀도 최적화
|
|
343
|
-
- 다국어 지원: 한영 혼용 콘텐츠, 폰트 폴백
|
|
344
|
-
- 성능: 웹폰트 최적화, 문자 서브셋팅
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
### 로컬라이제이션 체크리스트
|
|
348
|
-
|
|
349
|
-
**한국 웹 표준 준수:**
|
|
350
|
-
```
|
|
351
|
-
한국 웹 접근성 및 표준 적용:
|
|
352
|
-
- 접근성: KWCAG 준수, 스크린 리더 호환성
|
|
353
|
-
- 성능: 한국 네트워크 최적화, CDN 고려사항
|
|
354
|
-
- 결제 통합: 카카오페이, 네이버페이, 로컬 신용카드
|
|
355
|
-
- 소셜 로그인: 카카오톡, 네이버, 로컬 플랫폼 연동
|
|
356
|
-
- 검색 최적화: 네이버 SEO, 로컬 검색 패턴
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
## 실무 적용을 위한 체크리스트
|
|
360
|
-
|
|
361
|
-
### 프로젝트 시작 전 준비
|
|
362
|
-
|
|
363
|
-
1. **요구사항 명확화**: 구체적인 목표와 제약사항 정의
|
|
364
|
-
2. **사용자 리서치**: 타겟 사용자와 사용 맥락 이해
|
|
365
|
-
3. **기술 스택 결정**: 프레임워크, 라이브러리, 도구 선택
|
|
366
|
-
4. **디자인 시스템**: 기존 시스템 또는 신규 구축 계획
|
|
367
|
-
5. **접근성 요구사항**: WCAG 준수 수준과 특별 요구사항
|
|
368
|
-
|
|
369
|
-
### 품질 보증 체크리스트
|
|
370
|
-
|
|
371
|
-
**배포 전 검증:**
|
|
372
|
-
- [ ] 접근성 준수 (WCAG 2.1 AA)
|
|
373
|
-
- [ ] 반응형 디자인 테스트
|
|
374
|
-
- [ ] 성능 최적화
|
|
375
|
-
- [ ] 크로스 브라우저 호환성
|
|
376
|
-
- [ ] 에러 처리 구현
|
|
377
|
-
- [ ] 로딩 상태 관리
|
|
378
|
-
- [ ] 키보드 내비게이션 지원
|
|
379
|
-
- [ ] 스크린 리더 호환성
|
|
380
|
-
- [ ] 색상 대비 검증
|
|
381
|
-
- [ ] 모바일 사용성 테스트
|