@daawoonkim/create-arch-app 0.1.0 β†’ 0.2.1

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/README.ko.md ADDED
@@ -0,0 +1,302 @@
1
+ # create-arch-app
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@daawoonkim/create-arch-app.svg)](https://www.npmjs.com/package/@daawoonkim/create-arch-app)
4
+ [![npm downloads](https://img.shields.io/npm/dm/@daawoonkim/create-arch-app.svg)](https://www.npmjs.com/package/@daawoonkim/create-arch-app)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+ ![Status](https://img.shields.io/badge/status-MVP-orange.svg)
7
+ [![CI Tests](https://github.com/hec8897/create-arch-app/actions/workflows/test.yml/badge.svg)](https://github.com/hec8897/create-arch-app/actions/workflows/test.yml)
8
+ [![Lint](https://github.com/hec8897/create-arch-app/actions/workflows/lint.yml/badge.svg)](https://github.com/hec8897/create-arch-app/actions/workflows/lint.yml)
9
+
10
+ **🌐 μ–Έμ–΄**: [English](./README.md) | **ν•œκ΅­μ–΄**
11
+
12
+ DDD, Clean Architecture, Atomic Design을 μ§€μ›ν•˜λŠ” λŒ€ν™”ν˜• React/Next.js ν”„λ‘œμ νŠΈ 생성 CLI 도ꡬ
13
+
14
+ **πŸ“¦ npm**: https://www.npmjs.com/package/@daawoonkim/create-arch-app
15
+
16
+ **πŸ“ CHANGELOG**: [English](./CHANGELOG.md) | [ν•œκ΅­μ–΄](./CHANGELOG.ko.md)
17
+
18
+ > ⚠️ **ν˜„μž¬ MVP(Minimum Viable Product) λ²„μ „μž…λ‹ˆλ‹€.** 핡심 κΈ°λŠ₯은 λͺ¨λ‘ μž‘λ™ν•˜μ§€λ§Œ, ν™œλ°œνžˆ 개발 쀑이며 ν”Όλ“œλ°±μ„ λ°›κ³  μžˆμŠ΅λ‹ˆλ‹€. μ΄μŠˆλ‚˜ μ œμ•ˆ 사항이 μžˆμœΌμ‹œλ©΄ [GitHub Issues](https://github.com/hec8897/create-arch-app/issues)에 λ‚¨κ²¨μ£Όμ„Έμš”!
19
+
20
+ ## νŠΉμ§•
21
+
22
+ ✨ **4κ°€μ§€ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄ 지원**
23
+ - DDD (Domain-Driven Design)
24
+ - Clean Architecture
25
+ - Atomic Design
26
+ - Default (기본 ꡬ쑰)
27
+
28
+ πŸš€ **ν”„λ ˆμž„μ›Œν¬ 선택**
29
+ - React (with Vite)
30
+ - Next.js (App Router / Pages Router)
31
+
32
+ πŸ’Ž **TypeScript κΈ°λ³Έ 포함**
33
+
34
+ 🎨 **μŠ€νƒ€μΌλ§ μ˜΅μ…˜**
35
+ - Tailwind CSS
36
+ - CSS Modules
37
+
38
+ 🌐 **API 톡합**
39
+ - HTTP ν΄λΌμ΄μ–ΈνŠΈ: Axios, Fetch API
40
+ - 데이터 페칭: TanStack Query (React Query), SWR
41
+
42
+ πŸ“¦ **선택 κ°€λŠ₯ν•œ 라이브러리**
43
+ - μƒνƒœκ΄€λ¦¬: Zustand, Context API
44
+ - 폼: React Hook Form
45
+ - ν…ŒμŠ€νŒ…: Vitest + Testing Library
46
+
47
+ ## μ„€μΉ˜ 및 μ‚¬μš©λ²•
48
+
49
+ ### npx둜 μ¦‰μ‹œ μ‚¬μš© (ꢌμž₯)
50
+
51
+ ```bash
52
+ # μƒˆ 디렉토리에 ν”„λ‘œμ νŠΈ 생성
53
+ npx @daawoonkim/create-arch-app my-app
54
+
55
+ # λ˜λŠ” ν˜„μž¬ 디렉토리에 직접 생성
56
+ npx @daawoonkim/create-arch-app .
57
+ ```
58
+
59
+ ### μ „μ—­ μ„€μΉ˜
60
+
61
+ ```bash
62
+ npm install -g @daawoonkim/create-arch-app
63
+
64
+ # μƒˆ 디렉토리에 ν”„λ‘œμ νŠΈ 생성
65
+ create-arch-app my-app
66
+
67
+ # ν˜„μž¬ 디렉토리에 직접 생성
68
+ create-arch-app .
69
+ ```
70
+
71
+ > **μ°Έκ³ **: ν˜„μž¬ 디렉토리(`.`)λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ 디렉토리가 λΉ„μ–΄μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
72
+
73
+ ### λŒ€ν™”ν˜• ν”„λ‘¬ν”„νŠΈ
74
+
75
+ CLIλ₯Ό μ‹€ν–‰ν•˜λ©΄ λ‹€μŒ μ§ˆλ¬Έλ“€μ— λ‹΅ν•˜κ²Œ λ©λ‹ˆλ‹€:
76
+
77
+ 1. **ν”„λ ˆμž„μ›Œν¬ 선택**: React λ˜λŠ” Next.js
78
+ 2. **Next.js 버전 선택** (Next.js만 ν•΄λ‹Ή): Latest (ꢌμž₯), 15.x, 14.x, 13.x
79
+ 3. **λΌμš°ν„° 선택** (Next.js만 ν•΄λ‹Ή): App Router (ꢌμž₯) λ˜λŠ” Pages Router
80
+ 4. **μ•„ν‚€ν…μ²˜ νŒ¨ν„΄**: DDD, Clean, Atomic, Default
81
+ 5. **μŠ€νƒ€μΌλ§ 도ꡬ**: Tailwind CSS λ˜λŠ” CSS Modules
82
+ 6. **μƒνƒœκ΄€λ¦¬**: Zustand, Context API, None
83
+ 7. **폼 라이브러리**: React Hook Form λ˜λŠ” None
84
+ 8. **HTTP ν΄λΌμ΄μ–ΈνŠΈ**: Axios, Fetch API, None
85
+ 9. **데이터 페칭**: TanStack Query (React Query), SWR, None
86
+ 10. **ν…ŒμŠ€νŒ… 도ꡬ**: Vitest + Testing Library 포함 μ—¬λΆ€
87
+
88
+ ## μ‚¬μš© μ˜ˆμ‹œ
89
+
90
+ ```bash
91
+ npx @daawoonkim/create-arch-app my-enterprise-app
92
+
93
+ # λŒ€ν™”ν˜• ν”„λ‘¬ν”„νŠΈ
94
+ ? ν”„λ ˆμž„μ›Œν¬λ₯Ό μ„ νƒν•˜μ„Έμš”: Next.js
95
+ ? Next.js 버전을 μ„ νƒν•˜μ„Έμš”: Latest (μ΅œμ‹  버전, ꢌμž₯)
96
+ ? Next.js λΌμš°ν„°λ₯Ό μ„ νƒν•˜μ„Έμš”: App Router (ꢌμž₯)
97
+ ? μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ„ μ„ νƒν•˜μ„Έμš”: DDD (Domain-Driven Design)
98
+ ? μŠ€νƒ€μΌλ§ 도ꡬλ₯Ό μ„ νƒν•˜μ„Έμš”: Tailwind CSS
99
+ ? μƒνƒœκ΄€λ¦¬ 라이브러리λ₯Ό μ„ νƒν•˜μ„Έμš”: Zustand
100
+ ? 폼 라이브러리λ₯Ό μ„ νƒν•˜μ„Έμš”: React Hook Form
101
+ ? HTTP ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ„ νƒν•˜μ„Έμš”: Axios (ꢌμž₯)
102
+ ? 데이터 페칭 라이브러리λ₯Ό μ„ νƒν•˜μ„Έμš”: TanStack Query (React Query) - ꢌμž₯
103
+ ? ν…ŒμŠ€νŒ… 도ꡬλ₯Ό ν¬ν•¨ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? Yes
104
+
105
+ ✨ ν”„λ‘œμ νŠΈ 생성 쀑...
106
+ πŸ“¦ TypeScript ν”„λ‘œμ νŠΈλ‘œ μ„€μ •λ©λ‹ˆλ‹€ (κΈ°λ³Έκ°’)
107
+ πŸš€ Next.js App Router μ‚¬μš©
108
+ βœ… ν”„λ‘œμ νŠΈ 생성 μ™„λ£Œ!
109
+
110
+ πŸŽ‰ ν”„λ‘œμ νŠΈκ°€ μ„±κ³΅μ μœΌλ‘œ μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€!
111
+
112
+ λ‹€μŒ λͺ…λ Ήμ–΄λ‘œ μ‹œμž‘ν•˜μ„Έμš”:
113
+ cd my-enterprise-app
114
+ npm install
115
+ npm run dev
116
+ ```
117
+
118
+ ## μ•„ν‚€ν…μ²˜ νŒ¨ν„΄ μ„€λͺ…
119
+
120
+ ### DDD (Domain-Driven Design)
121
+
122
+ μ—”ν„°ν”„λΌμ΄μ¦ˆκΈ‰ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ ν•©ν•œ νŒ¨ν„΄μž…λ‹ˆλ‹€.
123
+
124
+ ```
125
+ domain/ # λΉ„μ¦ˆλ‹ˆμŠ€ 엔티티와 둜직
126
+ β”œβ”€β”€ entities/
127
+ β”œβ”€β”€ repositories/
128
+ └── services/
129
+ application/ # μœ μŠ€μΌ€μ΄μŠ€
130
+ β”œβ”€β”€ usecases/
131
+ └── ports/
132
+ infrastructure/ # μ™ΈλΆ€ μ„œλΉ„μŠ€ 톡합
133
+ β”œβ”€β”€ api/
134
+ └── persistence/
135
+ presentation/ # UI μ»΄ν¬λ„ŒνŠΈ
136
+ β”œβ”€β”€ components/
137
+ └── pages/
138
+ ```
139
+
140
+ ### Clean Architecture
141
+
142
+ μ˜μ‘΄μ„± κ·œμΉ™κ³Ό λ ˆμ΄μ–΄ 뢄리에 쀑점을 λ‘” νŒ¨ν„΄μž…λ‹ˆλ‹€.
143
+
144
+ ```
145
+ core/ # λΉ„μ¦ˆλ‹ˆμŠ€ 둜직
146
+ β”œβ”€β”€ entities/
147
+ β”œβ”€β”€ usecases/
148
+ └── interfaces/
149
+ features/ # κΈ°λŠ₯별 λͺ¨λ“ˆ
150
+ └── [feature]/
151
+ β”œβ”€β”€ domain/
152
+ β”œβ”€β”€ data/
153
+ └── presentation/
154
+ shared/ # 곡톡 μ»΄ν¬λ„ŒνŠΈ
155
+ β”œβ”€β”€ components/
156
+ └── utils/
157
+ ```
158
+
159
+ ### Atomic Design
160
+
161
+ UI μ»΄ν¬λ„ŒνŠΈ 쀑심 κ°œλ°œμ— μ΅œμ ν™”λœ νŒ¨ν„΄μž…λ‹ˆλ‹€.
162
+
163
+ ```
164
+ components/
165
+ β”œβ”€β”€ atoms/ # κ°€μž₯ μž‘μ€ UI λ‹¨μœ„
166
+ β”œβ”€β”€ molecules/ # atoms μ‘°ν•©
167
+ β”œβ”€β”€ organisms/ # molecules μ‘°ν•©
168
+ β”œβ”€β”€ templates/ # νŽ˜μ΄μ§€ λ ˆμ΄μ•„μ›ƒ
169
+ └── pages/ # μ‹€μ œ νŽ˜μ΄μ§€
170
+ hooks/
171
+ utils/
172
+ ```
173
+
174
+ ### Default
175
+
176
+ λΉ λ₯Έ μ‹œμž‘μ„ μ›ν•˜λŠ” 개발자λ₯Ό μœ„ν•œ κΈ°λ³Έ κ΅¬μ‘°μž…λ‹ˆλ‹€.
177
+
178
+ ```
179
+ components/
180
+ hooks/
181
+ pages/ (λ˜λŠ” app/)
182
+ utils/
183
+ styles/
184
+ types/
185
+ ```
186
+
187
+ ## μƒμ„±λ˜λŠ” 파일 ꡬ쑰
188
+
189
+ ### React ν”„λ‘œμ νŠΈ
190
+
191
+ ```
192
+ my-app/
193
+ β”œβ”€β”€ src/
194
+ β”‚ β”œβ”€β”€ [architecture folders]
195
+ β”‚ β”œβ”€β”€ App.tsx
196
+ β”‚ β”œβ”€β”€ main.tsx
197
+ β”‚ └── index.css
198
+ β”œβ”€β”€ index.html
199
+ β”œβ”€β”€ vite.config.ts
200
+ β”œβ”€β”€ tsconfig.json
201
+ β”œβ”€β”€ package.json
202
+ └── README.md
203
+ ```
204
+
205
+ ### Next.js ν”„λ‘œμ νŠΈ (App Router)
206
+
207
+ ```
208
+ my-app/
209
+ β”œβ”€β”€ src/
210
+ β”‚ β”œβ”€β”€ app/
211
+ β”‚ β”‚ β”œβ”€β”€ layout.tsx
212
+ β”‚ β”‚ β”œβ”€β”€ page.tsx
213
+ β”‚ β”‚ └── globals.css
214
+ β”‚ └── [architecture folders]
215
+ β”œβ”€β”€ next.config.js
216
+ β”œβ”€β”€ tsconfig.json
217
+ β”œβ”€β”€ package.json
218
+ └── README.md
219
+ ```
220
+
221
+ ### Next.js ν”„λ‘œμ νŠΈ (Pages Router)
222
+
223
+ ```
224
+ my-app/
225
+ β”œβ”€β”€ src/
226
+ β”‚ β”œβ”€β”€ pages/
227
+ β”‚ β”‚ β”œβ”€β”€ _app.tsx
228
+ β”‚ β”‚ β”œβ”€β”€ _document.tsx
229
+ β”‚ β”‚ └── index.tsx
230
+ β”‚ β”œβ”€β”€ styles/
231
+ β”‚ β”‚ └── globals.css
232
+ β”‚ └── [architecture folders]
233
+ β”œβ”€β”€ next.config.js
234
+ β”œβ”€β”€ tsconfig.json
235
+ β”œβ”€β”€ package.json
236
+ └── README.md
237
+ ```
238
+
239
+ ## μš”κ΅¬ 사항
240
+
241
+ - Node.js 18.0.0 이상
242
+
243
+ ## 버전 정보
244
+
245
+ ### v0.2.0 - μ΅œμ‹  (2025-01-26)
246
+
247
+ **μ£Όμš” μ—…λ°μ΄νŠΈ:**
248
+ - βœ… API 라이브러리 톡합 (Axios, Fetch API, TanStack Query, SWR)
249
+ - βœ… μ•„ν‚€ν…μ²˜λ³„ API 파일 μžλ™ 생성
250
+ - βœ… Next.js ν”„λ‘œμ νŠΈ ꡬ쑰 κ°œμ„  (`src/` 디렉토리 + μ ˆλŒ€ 경둜)
251
+ - βœ… CI/CD μžλ™ν™” (GitHub Actions)
252
+ - βœ… μžλ™ npm 배포 (main 브랜치 merge μ‹œ)
253
+ - βœ… λ¬Έμ„œ κ°œμ„  (CHANGELOG, CONTRIBUTING, WORKFLOWS)
254
+
255
+ μžμ„Έν•œ λ‚΄μš©μ€ [CHANGELOG.ko.md](./CHANGELOG.ko.md)λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.
256
+
257
+ ### v0.1.0 - MVP 릴리즈
258
+
259
+ **ν¬ν•¨λœ κΈ°λŠ₯:**
260
+ - βœ… 4κ°€μ§€ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄ (DDD, Clean Architecture, Atomic Design, Default)
261
+ - βœ… React (Vite) & Next.js (App Router / Pages Router) 지원
262
+ - βœ… Next.js 버전 선택 (Latest, 15.x, 14.x, 13.x)
263
+ - βœ… TypeScript κΈ°λ³Έ 포함
264
+ - βœ… μŠ€νƒ€μΌλ§: Tailwind CSS, CSS Modules
265
+ - βœ… μƒνƒœκ΄€λ¦¬: Zustand, Context API
266
+ - βœ… 폼: React Hook Form
267
+ - βœ… ν…ŒμŠ€νŒ…: Vitest + Testing Library
268
+ - βœ… ν˜„μž¬ 디렉토리 생성 지원 (`.` μ˜΅μ…˜)
269
+ - βœ… κΈ°λ³Έ 폴더 ꡬ쑰와 README μžλ™ 생성
270
+
271
+ ## λ‘œλ“œλ§΅
272
+
273
+ ### v0.3.0 (κ³„νš 쀑)
274
+ - [ ] μΆ”κ°€ UI 라이브러리 톡합 (shadcn/ui, MUI)
275
+ - [ ] 더 λ§Žμ€ ν…ŒμŠ€νŠΈ 및 μ•ˆμ •μ„± κ°œμ„ 
276
+ - [ ] μ»΄ν¬λ„ŒνŠΈ 생성기 μΆ”κ°€
277
+
278
+ ### ν–₯ν›„ κ³„νš
279
+ - [ ] μΆ”κ°€ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄ (Feature-Sliced Design, Hexagonal Architecture)
280
+ - [ ] μΆ”κ°€ μƒνƒœκ΄€λ¦¬ μ˜΅μ…˜ (Redux Toolkit, Jotai, Recoil)
281
+ - [ ] 인증 톡합 (NextAuth, Supabase)
282
+ - [ ] ORM 톡합 (Prisma, Drizzle)
283
+ - [ ] Docker μ„€μ • 포함
284
+ - [ ] Monorepo 지원 (Turborepo)
285
+
286
+ ## κΈ°μ—¬ν•˜κΈ°
287
+
288
+ 버그 리포트, κΈ°λŠ₯ μ œμ•ˆ, PR λͺ¨λ‘ ν™˜μ˜ν•©λ‹ˆλ‹€!
289
+
290
+ μžμ„Έν•œ λ‚΄μš©μ€ [CONTRIBUTING.md](./CONTRIBUTING.md)λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.
291
+
292
+ ## λΌμ΄μ„ μŠ€
293
+
294
+ MIT
295
+
296
+ ## μž‘μ„±μž
297
+
298
+ daawoonkim
299
+
300
+ ## μ°Έκ³ 
301
+
302
+ 이 ν”„λ‘œμ νŠΈλŠ” ν˜„λŒ€μ μΈ ν”„λ‘ νŠΈμ—”λ“œ 개발 λͺ¨λ²” 사둀와 λ‹€μ–‘ν•œ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ„ 기반으둜 ν•©λ‹ˆλ‹€.