chore: bootstrap development environment
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
# Holodream Tools
|
||||
|
||||
홀로드림스 덱 최적화와 스킬 로스 분석을 통합할 웹사이트의 개발 기반입니다. 현재 단계에는 게임 기능을 포함하지 않습니다.
|
||||
|
||||
## 구성
|
||||
|
||||
- SvelteKit + TypeScript + `@sveltejs/adapter-node`
|
||||
- SQLite + Drizzle ORM
|
||||
- Web Worker를 위한 독립 모듈 경계
|
||||
- Docker Compose 개발 환경(HMR)
|
||||
- 멀티 스테이지 production 이미지
|
||||
- Docker named volume 기반 SQLite 영속 저장소
|
||||
|
||||
## Docker 개발 실행
|
||||
|
||||
```bash
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
- 웹: <http://localhost:5173>
|
||||
- 상태 확인: <http://localhost:5173/api/health>
|
||||
|
||||
소스 파일을 수정하면 Windows의 Docker Desktop에서도 polling 기반 HMR이 동작합니다.
|
||||
|
||||
종료:
|
||||
|
||||
```bash
|
||||
docker compose down
|
||||
```
|
||||
|
||||
`docker compose down`은 SQLite 볼륨을 보존합니다. 데이터까지 지우려는 경우에만 `docker compose down --volumes`를 사용하세요.
|
||||
|
||||
## production 실행
|
||||
|
||||
```bash
|
||||
docker compose -f compose.prod.yaml up --build -d
|
||||
```
|
||||
|
||||
- 웹: <http://localhost:3000>
|
||||
- 상태 확인: <http://localhost:3000/api/health>
|
||||
|
||||
종료:
|
||||
|
||||
```bash
|
||||
docker compose -f compose.prod.yaml down
|
||||
```
|
||||
|
||||
## 호스트에서 실행
|
||||
|
||||
Node.js 22.12 이상이 필요합니다.
|
||||
|
||||
```powershell
|
||||
Copy-Item .env.example .env
|
||||
npm ci
|
||||
npm run dev
|
||||
```
|
||||
|
||||
기본 로컬 DB 경로는 `./data/holodream.db`입니다.
|
||||
|
||||
## 검증 명령
|
||||
|
||||
```bash
|
||||
npm run check
|
||||
npm run build
|
||||
```
|
||||
|
||||
스키마를 변경한 뒤에는 migration을 생성합니다.
|
||||
|
||||
```bash
|
||||
npm run db:generate
|
||||
```
|
||||
|
||||
생성된 migration은 서버가 시작될 때 자동 적용됩니다. 호스트에서 수동 적용하려면 `npm run db:migrate`를 사용합니다.
|
||||
|
||||
## 디렉터리 경계
|
||||
|
||||
```text
|
||||
src/
|
||||
├─ lib/
|
||||
│ ├─ engine/ # UI 프레임워크에 의존하지 않는 순수 계산 로직
|
||||
│ ├─ models/ # UI·엔진·서버가 공유하는 도메인 타입
|
||||
│ ├─ server/db/ # SQLite/Drizzle 서버 전용 모듈
|
||||
│ └─ workers/ # 무거운 최적화 작업의 Web Worker 진입점
|
||||
└─ routes/ # SvelteKit 화면과 API
|
||||
```
|
||||
|
||||
의존성 방향은 `UI → Engine → Models`를 유지합니다. 계산 엔진은 Svelte나 서버 모듈을 import하지 않습니다.
|
||||
Reference in New Issue
Block a user