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)
8. Git 브랜치 전략 문서
main: 배포용 브랜치
develop: 개발 통합 브랜치
feature/auth: 인증 기능
feature/posts: 게시글 기능
feature/comments: 댓글 기능
hotfix/critical-bug: 긴급 수정
커밋 메시지 형식:
feat: 새 기능 추가
fix: 버그 수정
docs: 문서 수정
style: 코드 스타일 수정
9. 배포 가이드