# π― νλ‘μ νΈ μ€κ³ κ°μ΄λ ν
νλ¦Ώ
> **λͺ©μ **: Claude Codeμ νμ
μ μΌκ΄μ± ν보 λ° μ€μ λ°©μ§
> **μ¬μ©λ²**: νλ‘μ νΈ μμ μ μ΄ ν
νλ¦Ώμ 볡μ¬νμ¬ μμ±
## π **1. νλ‘μ νΈ κΈ°λ³Έ μ 보**
### νλ‘μ νΈλͺ
`[νλ‘μ νΈλͺ
]`
### νλ‘μ νΈ μ ν
- [ ] MVP/νλ‘ν νμ
(λΉ λ₯Έ κ°λ° μ°μ )
- [ ] νλ‘λμ
(νμ§/νμ₯μ± μ°μ )
- [ ] κ°μΈ νλ‘μ νΈ
- [ ] ν νλ‘μ νΈ
- [ ] ν΄λΌμ΄μΈνΈ νλ‘μ νΈ
### κ°λ° κΈ°κ°
- **μμμΌ**: YYYY-MM-DD
- **λͺ©ν μλ£μΌ**: YYYY-MM-DD
- **μμ κΈ°κ°**: Nμ£Ό
---
## π οΈ **2. κΈ°μ μ€ν (FIXED - μ λ λ³κ²½ κΈμ§)**
### Backend
- **Runtime**: Node.js 18+
- **Framework**: Express.js
- **Database**: SQLite3 (sqlite3 ν¨ν€μ§λ§ μ¬μ©)
- **ORM/쿼리**: μ§μ SQL 쿼리
- **μΈμ¦**: JWT
### Frontend (ν΄λΉμ)
- **Framework**: React/Vue/Vanilla
- **λΉλ λꡬ**: Vite/Webpack
- **μ€νμΌλ§**: CSS/Tailwind
### κ°λ° λꡬ
- **ν¨ν€μ§ κ΄λ¦¬μ**: npm
- **μ½λ νμ§**: ESLint + Prettier
- **ν
μ€νΈ**: Jest (νμμ)
---
## π **3. μ½λ© κ·μΉ (MANDATORY - λ°λμ μ€μ)**
### λ€μ΄λ° 컨벀μ
- **λ°μ΄ν°λ² μ΄μ€**: snake_case (created_at, updated_at, user_id)
- **JavaScript λ³μ**: camelCase (userId, createdAt)
- **νμΌλͺ
**: kebab-case (user-controller.js)
- **API μλν¬μΈνΈ**: kebab-case (/api/user-profile)
### λ°μ΄ν°λ² μ΄μ€ κ·μΉ
- **Primary Key**: νμ `id` (INTEGER PRIMARY KEY)
- **νμμ€ν¬ν**: created_at, updated_at (DATETIME)
- **μΈλν€**: [table]_id (user_id, post_id)
- **Boolean**: 0/1 (is_active, is_deleted)
### API μλ΅ νμ
```javascript
// μ±κ³΅ μλ΅
{
"success": true,
"data": { ... }
}
// μλ¬ μλ΅
{
"success": false,
"error": "μλ¬ λ©μμ§"
}
```
### μλ¬ μ²λ¦¬
- **λͺ¨λ async ν¨μ**: try-catch νμ
- **λ°μ΄ν°λ² μ΄μ€ μλ¬**: λ‘κΉ
+ μ¬μ©μ μΉνμ λ©μμ§
- **404 μλ¬**: λͺ
νν λ©μμ§ μ 곡
---
## π« **4. κΈμ§μ¬ν (FORBIDDEN - μ λ μ¬μ© κΈμ§)**
### ν¨ν€μ§ κΈμ§
- β `better-sqlite3` (sqlite3λ§ μ¬μ©)
- β `sequelize`, `prisma` (μ§μ SQLλ§)
- β `mongoose` (MongoDB μ¬μ© μ ν¨)
### λ€μ΄λ° κΈμ§
- β camelCase λ°μ΄ν°λ² μ΄μ€ μ»¬λΌ (CreateAt, UserId λ±)
- β λλ¬Έμ μμ λ³μλͺ
(CreateUser, GetData λ±)
- β μ½μ΄ λ¨μ© (usr, prd, usr_id λμ user_id)
### μ½λ© ν¨ν΄ κΈμ§
- β μ§μ λ°μ΄ν°λ² μ΄μ€ μ κ·Ό (컨νΈλ‘€λ¬μμ μ§μ 쿼리)
- β κΈλ‘λ² λ³μ μ¬μ©
- β console.log νλ‘λμ
μ½λμ λ¨κΈ°κΈ°
- β νλμ½λ©λ μ€μ κ°
---
## ποΈ **5. μν€ν
μ² μ€κ³ (SuperClaude ν¨ν΄ μ μ©)**
### ν΄λ ꡬ쑰
```
νλ‘μ νΈ/
βββ src/
β βββ controllers/ # API μλν¬μΈνΈ λ‘μ§
β βββ models/ # λ°μ΄ν° λͺ¨λΈ λ° DB μ κ·Ό
β βββ middleware/ # μΈμ¦, λ‘κΉ
λ±
β βββ utils/ # ν¬νΌ ν¨μ
β βββ routes/ # λΌμ°ν
μ€μ
βββ database/
β βββ schema.sql # ν
μ΄λΈ μ μ
β βββ migrations/ # DB λ³κ²½μ¬ν
βββ tests/ # ν
μ€νΈ νμΌ
βββ docs/ # μ€κ³ λ¬Έμ
```
### API μ€κ³ μμΉ
- **RESTful**: GET, POST, PUT, DELETE μλ―Έ μ€μ
- **μλ΅ νμ ν΅μΌ**: μ API μλ΅ νμ μ¬μ©
- **HTTP μνμ½λ**: 200, 201, 400, 401, 404, 500 μ μ ν μ¬μ©
- **μλ¬ μ²λ¦¬**: μΌκ΄λ μλ¬ μλ΅ κ΅¬μ‘°
### λ°μ΄ν°λ² μ΄μ€ μ€κ³ μμΉ
- **μ κ·ν**: 3NFκΉμ§ μ κ·ν μ μ©
- **μΈλ±μ€**: μμ£Ό κ²μλλ 컬λΌμ μΈλ±μ€ μμ±
- **μ μ½μ‘°κ±΄**: NOT NULL, UNIQUE, FOREIGN KEY μ μ ν μ¬μ©
---
## β
**6. κ²μ¦ 체ν¬λ¦¬μ€νΈ (Validation)**
### μ€κ³ κ²μ¦
- [ ] μꡬμ¬νμ΄ κΈ°μ μ€νμΌλ‘ ꡬν κ°λ₯νκ°?
- [ ] μ½λ© κ·μΉμ΄ λͺ
νν μ μλμλκ°?
- [ ] κΈμ§μ¬νμ΄ κ΅¬μ²΄μ μΌλ‘ λͺ
μλμλκ°?
- [ ] API μ€κ³κ° RESTful μμΉμ λ°λ₯΄λκ°?
- [ ] λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§κ° μ κ·νλμλκ°?
### μ μ§λ³΄μμ± κ²μ¦
- [ ] 6κ°μ νμλ μ΄ν΄ν μ μλ ꡬ쑰μΈκ°?
- [ ] μλ‘μ΄ κ°λ°μκ° μ½κ² μ΄ν΄ν μ μλκ°?
- [ ] νμ₯ μ κΈ°μ‘΄ μ½λ μμ μ μ΅μνν μ μλκ°?
### Claude Code νμ
κ²μ¦
- [ ] Claudeκ° ν·κ°λ¦΄ μ μλ λΆλΆμ΄ λͺ
μλμλκ°?
- [ ] μ΄μ μ€μλ€μ΄ κΈμ§μ¬νμ ν¬ν¨λμλκ°?
- [ ] μΌκ΄μ± μλ ν¨ν΄μ΄ μ μλμλκ°?
---
## π€ **7. Claude Code νμ
κ°μ΄λ**
### μμ
μμ μ λ°λμ νμΈ
1. "μ΄ νλ‘μ νΈμ μ€κ³ λ¬Έμλ₯Ό λ¨Όμ μ½μ΄μ£ΌμΈμ"
2. "κΈ°μ‘΄ ν¨ν΄κ³Ό μΌμΉνλμ§ νμΈν΄μ£ΌμΈμ"
3. "κΈμ§μ¬νμ μλ°νμ§ μμλμ§ μ²΄ν¬ν΄μ£ΌμΈμ"
### μλ‘μ΄ κΈ°λ₯ μΆκ° μ
1. κΈ°μ‘΄ νμΌ κ΅¬μ‘° νμΈ
2. λ€μ΄λ° 컨벀μ
μ€μ νμΈ
3. API μλ΅ νμ μΌμΉ νμΈ
4. μλ¬ μ²λ¦¬ ν¨ν΄ μΌμΉ νμΈ
### λ¬Έμ λ°μ μ
1. μ€κ³ λ¬Έμ λ€μ νμΈ
2. κΈ°μ‘΄ ꡬνλ λΉμ·ν κΈ°λ₯ μ°Έμ‘°
3. ν¨ν΄ μΌκ΄μ± μ°μ κ³ λ €
---
## π **8. λ³κ²½ μ΄λ ₯**
| λ μ§ | λ²μ | λ³κ²½ λ΄μ© | λ΄λΉμ |
|------|------|-----------|--------|
| YYYY-MM-DD | 1.0 | μ΄κΈ° μ€κ³ | [μ΄λ¦] |
| | | | |
---
**π― μ΄ λ¬Έμλ Claude Codeμμ νμ
μμ μΌκ΄μ± ν보μ μ€μ λ°©μ§λ₯Ό μν ν΅μ¬ κ°μ΄λμ
λλ€.**
**νλ‘μ νΈ μμ μ λ°λμ μμ±νκ³ , μμ
μ€ μμλ‘ μ°Έμ‘°νμΈμ!**