(블로그 프로젝트 예시)

1. 요구사항 명세서 (Requirements Specification)

기능 요구사항:
- 사용자 회원가입/로그인
- 게시글 CRUD
- 댓글 시스템
- 카테고리/태그 관리
- 검색 기능

비기능 요구사항:
- 응답시간 < 2초
- 동시 사용자 100명 지원
- 모바일 반응형 지원

2. API 명세서 (API Documentation)

POST /api/auth/login
Request: { email, password }
Response: { token, user: { id, name, email } }

GET /api/posts
Query: ?page=1&limit=10&category=tech
Response: { posts: [...], totalPages: 5 }

POST /api/posts
Headers: Authorization: Bearer token
Request: { title, content, category, tags }

3. 데이터베이스 설계서 (Database Schema)

// User Schema
{
  _id: ObjectId,
  name: String,
  email: String (unique),
  password: String (hashed),
  role: String (admin/user),
  createdAt: Date
}

// Post Schema
{
  _id: ObjectId,
  title: String,
  content: String,
  author: ObjectId (ref: User),
  category: String,
  tags: [String],
  createdAt: Date,
  updatedAt: Date
}

개발 단계 산출물

4. 컴포넌트 설계서 (Component Architecture)

src/
├── components/
│   ├── common/
│   │   ├── Header.jsx
│   │   ├── Footer.jsx
│   │   └── Loading.jsx
│   ├── auth/
│   │   ├── LoginForm.jsx
│   │   └── RegisterForm.jsx
│   └── blog/
│       ├── PostList.jsx
│       ├── PostItem.jsx
│       └── PostEditor.jsx

5. 상태 관리 설계서 (State Management Design)

// Redux Store Structure
{
  auth: {
    user: null | UserObject,
    token: null | string,
    isLoading: boolean
  },
  posts: {
    list: [],
    currentPost: null,
    isLoading: boolean,
    error: null
  }
}

6. 코딩 컨벤션 문서

// 파일명: camelCase
// 컴포넌트명: PascalCase
// 변수명: camelCase
// 상수명: UPPER_CASE

// 예시
const API_BASE_URL = '<http://localhost:5000/api>';
const fetchUserPosts = async (userId) => {
  // implementation
};

협업/관리 산출물

7. 작업 분담표 (Task Assignment)

GANT

8. Git 브랜치 전략 문서

main: 배포용 브랜치
develop: 개발 통합 브랜치
feature/auth: 인증 기능
feature/posts: 게시글 기능
feature/comments: 댓글 기능
hotfix/critical-bug: 긴급 수정

커밋 메시지 형식:
feat: 새 기능 추가
fix: 버그 수정
docs: 문서 수정
style: 코드 스타일 수정

9. 배포 가이드