1. 프로젝트 초기화
프롬프트
> 런닝코스 공유 서비스 초기화해줘
- Frontend : React (Vite 기반), TailwindCSS, React Query 포함
- Backend : Spring Boot (Java, Gradle)
- Database : SQLite (개발용)
- 인증 : JWT (Spring Security)
- 이미지 업로드 : 로컬 저장 + S3 전환 고려
결과
런닝코스 공유 서비스가 초기화되었습니다.
프로젝트 구조:
running_share_service/
├── frontend/ # React + Vite + TailwindCSS + React Query
└── backend/ # Spring Boot + Gradle + SQLite + JWT
주요 기능:
- ✅ Frontend: React (Vite), TailwindCSS, React Query, React Router, Axios
- ✅ Backend: Spring Boot 3.2.0, Java 17, Gradle 8.5
- ✅ Database: SQLite (자동 설정)
- ✅ 인증: JWT + Spring Security
- ✅ 파일 업로드: 로컬 저장 (S3 전환 준비 완료)
실행 방법:
Frontend:
cd frontend
npm run dev
Backend:
cd backend
./gradlew bootRun
2. 기능 명세 작성
프롬프트
> 위 서비스의 MVP 기능 명세서를 작성해줘
- 사용자 스토리 형식
- 우선순위 표시(p0,p1,p2)
- 예상 구현 시간 포함
결과
MVP 기능 명세서를 작성했습니다. (MVP_SPEC.md)
주요 내용:
📋 5개 카테고리, 21개 사용자 스토리
1. 사용자 인증 및 관리 (3개)
2. 런닝 코스 관리 (6개)
3. 소셜 기능 (4개)
4. 마이페이지 (2개)
5. UI/UX (3개)
⏱️ 예상 구현 시간:
- P0 (필수): 38시간 - 최소 기능 출시
- P1 (중요): 28시간 - 완성도 있는 MVP
- P2 (추가): 7시간 - 부가 기능
- 총 MVP: 66시간 (약 2주, 1인 개발 기준)
🎯 각 스토리 포함 사항:
- 사용자 관점의 스토리
- 구체적인 인수 조건
- 세부 구현 시간 (Backend/Frontend 분리)
3. 아키텍처
프롬프트
> 아키텍처 다이어그램을 mermaid chart를 포함해서 작성해줘
결과
아키텍처 다이어그램을 작성했습니다. (ARCHITECTURE.md)
주요 내용:
📊 13개의 Mermaid 다이어그램 포함
1. 시스템 아키텍처 개요 - 전체 레이어 구조
2. 프론트엔드 아키텍처 - React 계층 구조 + 폴더 구조
3. 백엔드 아키텍처 - Spring Boot 계층 구조 + 폴더 구조
4. 데이터베이스 스키마 - ERD (7개 테이블)
5. API 아키텍처 - 시퀀스 다이어그램 + 엔드포인트 구조
6. 인증 플로우 - 회원가입/로그인/인증 요청 플로우
7. 파일 업로드 아키텍처 - Local/S3 저장 전략
8. 상태 관리 - React Query 캐싱 전략
9. 보안 아키텍처 - 다층 보안 체계
10. 배포 아키텍처 - AWS 기반 프로덕션 환경
11. 성능 최적화 - Frontend/Backend/Network 최적화
12. 확장성 - 마이크로서비스 전환 가능
13. 모니터링 및 로깅 - Sentry, CloudWatch 통합
각 다이어그램은 Markdown에서 바로 렌더링되며, GitHub/GitLab에서도 확인 가능합니다.
1. 시스템 아키텍처
graph TB
subgraph "Client Layer"
A[Web Browser]
B[Mobile Browser]
end
subgraph "Frontend - React + Vite"
C[React Router]
D[React Query]
E[Axios HTTP Client]
F[TailwindCSS]
G[Map API SDK]
end
subgraph "Backend - Spring Boot"
H[Spring Security + JWT Filter]
I[REST Controllers]
J[Service Layer]
K[Repository Layer]
L[JPA/Hibernate]
end
subgraph "External Services"
M[Kakao/Google Map API]
N[AWS S3<br/>Optional]
end
subgraph "Data Storage"
O[(SQLite DB)]
P[Local File System]
end
A --> C
B --> C
C --> D
D --> E
E --> H
H --> I
I --> J
J --> K
K --> L
L --> O
J --> P
J -.-> N
G --> M
style A fill:#e1f5ff
style B fill:#e1f5ff
style C fill:#fff4e1
style D fill:#fff4e1
style E fill:#fff4e1
style H fill:#e1ffe1
style I fill:#e1ffe1
style J fill:#e1ffe1
style O fill:#ffe1f5
style P fill:#ffe1f5
2. 프론트엔드 아키텍처
graph LR
subgraph "Presentation Layer"
A[Pages]
B[Components]
C[Layouts]
end
subgraph "Business Logic Layer"
D[Custom Hooks]
E[React Query Hooks]
F[Context/State]
end
subgraph "Data Access Layer"
G[API Service]
H[Axios Instance]
end
subgraph "Utilities"
I[Auth Utils]
J[Format Utils]
K[Validation Utils]
end
A --> D
B --> D
D --> E
E --> G
G --> H
D --> F
D --> I
D --> J
D --> K
style A fill:#ffebee
style B fill:#ffebee
style D fill:#e3f2fd
style E fill:#e3f2fd
style G fill:#e8f5e9
style H fill:#e8f5e9
3. 백엔드 아키텍처
graph TB
subgraph "Presentation Layer"
A[Auth Controller]
B[Course Controller]
C[Comment Controller]
D[User Controller]
E[File Controller]
end
subgraph "Security Layer"
F[JWT Filter]
G[Security Config]
end
subgraph "Service Layer"
H[Auth Service]
I[Course Service]
J[Comment Service]
K[User Service]
L[File Storage Service]
end
subgraph "Repository Layer"
M[User Repository]
N[Course Repository]
O[Comment Repository]
P[Like Repository]
Q[Bookmark Repository]
end
subgraph "Domain Layer"
R[User Entity]
S[Course Entity]
T[Comment Entity]
U[Like Entity]
V[Bookmark Entity]
end
F --> A
F --> B
F --> C
F --> D
A --> H
B --> I
C --> J
D --> K
E --> L
H --> M
I --> N
I --> P
I --> Q
J --> O
K --> M
M --> R
N --> S
O --> T
P --> U
Q --> V
style A fill:#ffcdd2
style B fill:#ffcdd2
style C fill:#ffcdd2
style F fill:#fff9c4
style H fill:#c5e1a5
style I fill:#c5e1a5
style M fill:#b3e5fc
style N fill:#b3e5fc
4. 데이터베이스 스키마
erDiagram
USERS ||--o{ COURSES : creates
USERS ||--o{ COMMENTS : writes
USERS ||--o{ LIKES : gives
USERS ||--o{ BOOKMARKS : saves
COURSES ||--o{ COMMENTS : has
COURSES ||--o{ LIKES : receives
COURSES ||--o{ BOOKMARKS : saved_in
COURSES ||--o{ COURSE_IMAGES : contains
COURSES ||--o{ ROUTE_POINTS : has
USERS {
bigint id PK
varchar username UK
varchar email UK
varchar password
varchar nickname
varchar profile_image
timestamp created_at
timestamp updated_at
}
COURSES {
bigint id PK
bigint user_id FK
varchar title
text description
decimal distance
varchar difficulty
text start_point
text end_point
int view_count
int like_count
int comment_count
timestamp created_at
timestamp updated_at
}
ROUTE_POINTS {
bigint id PK
bigint course_id FK
decimal latitude
decimal longitude
int sequence
}
COURSE_IMAGES {
bigint id PK
bigint course_id FK
varchar image_url
boolean is_thumbnail
int sequence
}
COMMENTS {
bigint id PK
bigint course_id FK
bigint user_id FK
text content
timestamp created_at
timestamp updated_at
}
LIKES {
bigint id PK
bigint course_id FK
bigint user_id FK
timestamp created_at
}
BOOKMARKS {
bigint id PK
bigint course_id FK
bigint user_id FK
timestamp created_at
}
5. API 아키텍처
sequenceDiagram
participant C as Client
participant F as JWT Filter
participant Ctrl as Controller
participant Svc as Service
participant Repo as Repository
participant DB as Database
C->>F: HTTP Request + JWT Token
F->>F: Validate Token
F->>Ctrl: Authenticated Request
Ctrl->>Ctrl: Validate Input
Ctrl->>Svc: Business Logic Call
Svc->>Repo: Data Access
Repo->>DB: SQL Query
DB-->>Repo: Result
Repo-->>Svc: Entity
Svc-->>Ctrl: DTO
Ctrl-->>C: JSON Response
6. 인증 플로우
sequenceDiagram
participant U as User
participant FE as Frontend
participant BE as Backend
participant DB as Database
rect rgb(200, 220, 250)
Note over U,DB: 회원가입 플로우
U->>FE: 회원가입 정보 입력
FE->>BE: POST /api/auth/register
BE->>BE: 비밀번호 암호화 (BCrypt)
BE->>DB: 사용자 저장
DB-->>BE: 저장 완료
BE-->>FE: JWT Token
FE->>FE: Token 저장 (localStorage)
FE-->>U: 회원가입 완료 + 자동 로그인
end
rect rgb(220, 250, 220)
Note over U,DB: 로그인 플로우
U->>FE: 로그인 정보 입력
FE->>BE: POST /api/auth/login
BE->>DB: 사용자 조회
DB-->>BE: 사용자 정보
BE->>BE: 비밀번호 검증
BE->>BE: JWT Token 생성
BE-->>FE: JWT Token + User Info
FE->>FE: Token 저장
FE-->>U: 로그인 완료
end
rect rgb(250, 220, 220)
Note over U,DB: 인증된 요청 플로우
U->>FE: 코스 등록 요청
FE->>BE: POST /api/courses + Authorization Header
BE->>BE: JWT Token 검증
BE->>DB: 데이터 저장
DB-->>BE: 저장 완료
BE-->>FE: 성공 응답
FE-->>U: 등록 완료 메시지
end
7. 파일 업로드 아키텍처
graph TB
subgraph "Client"
A[File Selection]
B[Image Preview]
C[Upload Request]
end
subgraph "Frontend Validation"
D{File Type Check}
E{File Size Check}
F[Compress Image]
end
subgraph "Backend Processing"
G[Receive MultipartFile]
H[Validate File]
I{Storage Type?}
end
subgraph "Storage Options"
J[Local File System]
K[AWS S3]
end
L[Return File URL]
M[Update Database]
A --> B
B --> C
C --> D
D -->|Valid| E
D -->|Invalid| N[Error: Invalid Type]
E -->|Valid| F
E -->|Invalid| O[Error: Too Large]
F --> G
G --> H
H --> I
I -->|Local| J
I -->|S3| K
J --> L
K --> L
L --> M
style J fill:#b3e5fc
style K fill:#ffccbc
style N fill:#ffcdd2
style O fill:#ffcdd2
8. 상태 관리 아키텍처
graph TB
subgraph "Global State"
A[Auth Context]
B[Toast Context]
end
subgraph "Server State - React Query"
C[Courses Query]
D[Course Detail Query]
E[Comments Query]
F[User Query]
end
subgraph "Local State"
G[Form State]
H[UI State]
I[Filter State]
end
subgraph "Components"
J[Pages]
K[Containers]
L[Presentational]
end
J --> A
J --> B
J --> C
J --> D
K --> C
K --> E
K --> G
L --> H
C -.Cache.-> M[(Query Cache)]
D -.Cache.-> M
E -.Cache.-> M
F -.Cache.-> M
style A fill:#ffe0b2
style B fill:#ffe0b2
style C fill:#c8e6c9
style M fill:#b2dfdb
9. 보안 아키텍처
graph TB
subgraph "Frontend Security"
A[XSS Prevention]
B[CSRF Token]
C[Input Sanitization]
D[Secure Token Storage]
end
subgraph "Network Security"
E[HTTPS Only]
F[CORS Configuration]
G[Rate Limiting]
end
subgraph "Backend Security"
H[JWT Validation]
I[Password Encryption]
J[SQL Injection Prevention]
K[File Upload Validation]
end
subgraph "Data Security"
L[Sensitive Data Encryption]
M[Secure Database Access]
end
A --> E
B --> F
C --> H
D --> H
H --> I
H --> J
K --> M
I --> L
style A fill:#ffccbc
style H fill:#c5cae9
style L fill:#b2dfdb
4. WBS
프롬프트
> 위 서비스의 MVP 개발을 위한 WBS 를 작성해줘
- Markdown 테이블 형식으로 작성해줘
- 팀 구성 : 백엔드 개발자 1명 , 프론트는 AI
결과
WBS를 작성했습니다. (WBS.md)
주요 내용:
📅 전체 일정: 17일 (3주), 총 167시간
Phase 구성:
1. Phase 1-4: 백엔드 기반 작업 (5일)
- 프로젝트 초기 설정, 인증, 코스 관리, 파일 업로드
2. Phase 5: 프론트엔드 메인 개발 (3일, AI 활용)
- 공통 컴포넌트, 레이아웃, 코스 관리 UI
3. Phase 6-7: 추가 기능 (3일)
- 소셜 기능, 마이페이지
4. Phase 8-11: 마무리 (4일)
- 통합, 테스트, 배포, 문서화
🎯 주요 특징:
- 백엔드 개발자 1명 중심으로 일정 계획
- AI(Claude Code)를 활용한 프론트엔드 빠른 개발
- 우선순위 기반 작업 배분 (P0/P1/P2)
- 리스크 관리 및 일일 체크리스트 포함
- 명확한 성공 기준 (DoD) 정의
5. 리스크 확인
프롬프트
> 실제 결과물을 보고 리스크 분석을 해줘
결과
실제 결과물 기반 리스크 분석을 완료했습니다. (RISK_ANALYSIS.md)
🔴 핵심 발견 사항
현재 진행률: 전체 MVP 대비 약 5% (167시간 중 7.5시간)
심각한 문제 3가지 (즉시 해결 필요):
1. ⚠️ TailwindCSS 빌드 실패 - 프론트엔드 개발 불가
2. ⚠️ Gradle Wrapper JAR 누락 - 백엔드 빌드 불가
3. ⚠️ Java 환경 미설정 - 백엔드 실행 불가
21개 리스크 식별:
- 🔥 Critical: 5개
- 🔶 High: 4개
- 🟢 Medium: 7개
- 🟢 Low: 5개
주요 리스크:
- 핵심 비즈니스 로직 미구현 (Controller, DTO, API 전체 없음)
- 백엔드 개발자 1인 부담 (167시간 작업)
- JWT Secret Key 보안 취약점
- AI 생성 코드 품질 불확실성
권장 조치:
1. 즉시: 개발 환경 3대 문제 해결 (1.5시간)
2. 우선순위 조정: P0만 집중 (17일 → 12일)
3. 성공 확률: 30% → 70% (리스크 완화 시)