# SQLite + FastAPI + Vue Hello World 구현 계획
> **에이전트 작업자용:** 현재 세션에서 인라인으로 실행한다. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** SQLite에 저장된 `'hello world'` 값을 FastAPI API를 통해 Vue 화면에 표시하는 최소 실행 예제를 만든다.
**Architecture:** `backend/`에는 SQLite 초기화 스크립트와 FastAPI API를 두고, `frontend/`에는 Vite 기반 Vue 앱을 둔다. Vue는 `/api/message`를 호출해 DB 값을 받아 렌더링한다.
**Tech Stack:** Python, FastAPI, sqlite3, uvicorn, Vue 3, Vite
---

### Task 1: 백엔드 기본 구조 만들기
**Files:**
- Create: `backend/requirements.txt`
- Create: `backend/init_db.py`
- Create: `backend/main.py`
- Test: `python3 -m py_compile backend/init_db.py backend/main.py`

- [ ] **Step 1: requirements 파일 작성**
Content:
```text
fastapi
uvicorn
```
Expected: 백엔드 설치 의존성이 명확해진다.

- [ ] **Step 2: SQLite 초기화 스크립트 작성**
Code should:
```python
import sqlite3
from pathlib import Path
```
Behavior:
- `app.db` 생성
- `messages` 테이블 생성
- 기존 데이터 삭제 후 `'hello world'` 삽입
Expected: `python3 backend/init_db.py` 실행 시 DB 파일과 샘플 데이터가 생성된다.

- [ ] **Step 3: FastAPI 앱 작성**
Code should:
```python
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
```
Behavior:
- `GET /api/message`
- SQLite에서 첫 메시지 조회
- 없으면 404 반환
Expected: 앱이 JSON으로 `{ "message": "hello world" }`를 반환할 수 있다.

- [ ] **Step 4: Python 문법 확인**
Run:
```bash
python3 -m py_compile backend/init_db.py backend/main.py
```
Expected: 출력 없이 종료

### Task 2: 프론트엔드 기본 구조 만들기
**Files:**
- Create: `frontend/package.json`
- Create: `frontend/vite.config.js`
- Create: `frontend/index.html`
- Create: `frontend/src/main.js`
- Test: `npm run build`

- [ ] **Step 1: package.json 작성**
Content should include:
```json
{
  "scripts": {
    "dev": "vite",
    "build": "vite build"
  }
}
```
Expected: Vue/Vite 개발 및 빌드 명령이 준비된다.

- [ ] **Step 2: Vite 프록시 설정 작성**
Behavior:
- `/api` 요청을 `http://127.0.0.1:8000`으로 프록시
Expected: 프론트엔드에서 상대 경로로 API 호출 가능

- [ ] **Step 3: index.html 작성**
Behavior:
- `#app` 마운트 포인트 제공
Expected: Vue 앱이 정상적으로 마운트 가능

- [ ] **Step 4: Vue 메인 앱 작성**
Behavior:
- 로딩 상태 표시
- `/api/message` fetch
- 성공 시 메시지 표시
- 실패 시 에러 문구 표시
Expected: 브라우저에서 `'hello world'`를 볼 수 있는 최소 화면이 구성된다.

- [ ] **Step 5: 프론트엔드 빌드 확인**
Run:
```bash
npm install
npm run build
```
Expected: 빌드 성공

### Task 3: 실행 문서 정리
**Files:**
- Modify: `README.md`
- Test: 문서 진단 확인

- [ ] **Step 1: README에 예제 실행 섹션 추가**
Include:
```markdown
## SQLite + FastAPI + Vue 예제 실행
```
Details:
- Python 가상환경 생성
- 백엔드 의존성 설치
- DB 초기화
- FastAPI 실행
- 프론트엔드 설치/실행
- 접속 URL 안내
Expected: 처음 보는 사용자도 따라 실행 가능

### Task 4: 기본 동작 검증
**Files:**
- Modify: 필요 시 문제 있는 파일
- Test: DB 초기화, Python 문법, 프론트엔드 빌드

- [ ] **Step 1: DB 초기화 실행**
Run:
```bash
python3 backend/init_db.py
```
Expected: `backend/app.db` 생성

- [ ] **Step 2: FastAPI 의존성 설치 후 앱 import 확인**
Run:
```bash
python3 -m venv .venv
.venv/bin/pip install -r backend/requirements.txt
.venv/bin/python -c "from backend.main import app; print(app.title)"
```
Expected: 앱 타이틀 출력

- [ ] **Step 3: 프론트엔드 설치 및 빌드**
Run:
```bash
npm install
npm run build
```
Expected: 빌드 성공

- [ ] **Step 4: 결과 요약 정리**
Include:
```text
생성 파일
실행 방법
검증 결과
```
Expected: 사용자가 바로 실행을 이어갈 수 있다.
