diff --git a/HANDOFF.md b/HANDOFF.md index 9bb5030..ba3ba2e 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -4,7 +4,7 @@ - 프로젝트명: 10 Minute Planner 웹 UI - 기술 스택: Vue 3 + Vite + TailwindCSS + JavaScript -- 현재 기준 버전: `v0.1.22` 준비 중 +- 현재 기준 버전: `v0.1.23` 준비 중 - Git 원격 저장소: `https://git.sori.studio/zenn/planner.sori.studio.git` ## 기준 디자인 @@ -158,6 +158,9 @@ - 프론트 API 클라이언트는 `VITE_API_BASE_URL` 끝에 `/api`가 포함되어 있어도 `/api/api/...` 중복 주소가 생기지 않도록 정규화한다. - 로그인 실패 시에는 내부 라우트 문자열이나 서버 경로를 그대로 노출하지 않고, 사용자용 안내 문구만 보여준다. - 비로그인 상태에서는 왼쪽 사이드 내비게이션을 숨기고, 중앙 로그인 안내 화면만 보여주도록 정리했다. +- 배포용 `docker-compose.yml`과 별도로 개발용 `docker-compose.dev.yml`을 추가했다. +- 개발용 compose는 프론트 `5173`, 백엔드 `3001`, PostgreSQL `5432`를 열고, 소스 마운트 + Vite HMR + Node watch 기반으로 자동 반영된다. +- 비로그인 랜딩 카드는 상단 고정이 아니라 화면 중앙에 오도록 정렬을 수정했다. - 현재 환경에서는 Docker 데몬이 꺼져 있어서 `docker compose build` 실검증은 하지 못했고, 데몬 시작 후 다시 확인이 필요하다. - 이미지 저장 기능은 추후 `print-only` 또는 별도 export 전용 레이아웃을 기준으로 구현하면 화면/인쇄/공유 결과를 맞추기 쉽다. - Docker Compose는 프론트엔드와 백엔드를 함께 올리는 기준으로 설계하되, NAS 환경에 맞는 볼륨과 재시작 정책도 함께 고려한다. diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..0762dbc --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,61 @@ +services: + postgres: + image: postgres:16-alpine + container_name: ten-minute-postgres-dev + environment: + POSTGRES_DB: ten_minute_planner + POSTGRES_USER: planner + POSTGRES_PASSWORD: planner1234 + volumes: + - postgres_dev_data:/var/lib/postgresql/data + ports: + - "5432:5432" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U planner -d ten_minute_planner"] + interval: 10s + timeout: 5s + retries: 10 + restart: unless-stopped + + backend: + image: node:22-alpine + container_name: ten-minute-backend-dev + working_dir: /app + command: sh -c "npm install && npm run dev" + environment: + PORT: 3001 + DATABASE_URL: postgresql://planner:planner1234@postgres:5432/ten_minute_planner + CORS_ORIGIN: http://localhost:5173 + SESSION_TTL_DAYS: 30 + volumes: + - ./backend:/app + - backend_node_modules:/app/node_modules + depends_on: + postgres: + condition: service_healthy + ports: + - "3001:3001" + restart: unless-stopped + + frontend: + image: node:22-alpine + container_name: ten-minute-frontend-dev + working_dir: /app + command: sh -c "npm install && npm run dev" + environment: + VITE_API_BASE_URL: http://localhost:3001 + CHOKIDAR_USEPOLLING: "true" + volumes: + - .:/app + - /app/backend + - frontend_node_modules:/app/node_modules + depends_on: + - backend + ports: + - "5173:5173" + restart: unless-stopped + +volumes: + postgres_dev_data: + backend_node_modules: + frontend_node_modules: diff --git a/package-lock.json b/package-lock.json index 0bf9613..ac036e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ten-minute-planner", - "version": "0.1.22", + "version": "0.1.23", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ten-minute-planner", - "version": "0.1.22", + "version": "0.1.23", "dependencies": { "vue": "^3.5.13" }, diff --git a/package.json b/package.json index 7a834b8..ce985ec 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ten-minute-planner", "private": true, - "version": "0.1.22", + "version": "0.1.23", "type": "module", "scripts": { "dev": "vite", diff --git a/src/App.vue b/src/App.vue index dda9393..ea2c1f5 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1298,8 +1298,8 @@ onMounted(() => {