kjs그리고Claude Fable 5 edc9a91e09 목공소·상위 자재·장터 다중 슬롯 (경제 확장)
- 신규 자원: 판자(목재5→1, 판매 8코인)·석재 블록(돌5→1, 판매 12코인)
- 목공소(회관 Lv3, 제작 적성 2슬롯): 품목 선택 후 재료 소모하며
  자동 반복 가공 — 부엌과 동일한 조작 문법, 수거는 생산 건물과 동일
- 장터 증축: Lv1~3 = 판매 슬롯 1~3개, 슬롯별 품목 독립 판매(분당 5개)
  Lv2 비용 목재200+돌80, Lv3 비용 판자30+블록15
- 회관 Lv4 해금: 목공소 건설 + 판자60·블록40 + Lv8 고양이 2 (수용 12)
- HUD 판자·블록 필(목공소 보유 시), 채석장 회수 버튼 돌 이모지 수정
- 마이그레이션: sellKey→sellKeys[], resources.plank/block, craftKey
- 목공소 건물 이미지·아이콘은 임시(창고 변형) — 전용 에셋 교체 예정

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 17:17:50 +09:00
2026-08-13 11:50:57 +00:00

jskim.vexplor.com

Next.js(App Router, TypeScript) + PostgreSQL 개인 프로젝트.

스택

  • 프론트/백엔드: Next.js 15 (React 19, API Routes로 Node.js 백엔드 겸용)
  • DB: PostgreSQL 17 — THREEDEV 서버(211.115.91.140) pg-jskim 컨테이너, DB/계정 jskim
  • 배포: Gitea Actions → Harbor(harbor.wace.me/dev-pilots/jskim) → Docker + Traefik(HTTPS, jskim.vexplor.com)

로컬 개발

DB가 방화벽 뒤에 있어 SSH 터널이 필요하다.

# 터미널 1: DB 터널 (localhost:5436 -> pg-jskim)
./scripts/db-tunnel.sh

# 터미널 2: 개발 서버
npm run dev

배포

dev-pilots 교육 파이프라인을 그대로 사용한다. main 브랜치에 push하면 Gitea Actions(.gitea/workflows/deploy.yml)가 자동으로:

  1. Docker 이미지 빌드 → Harbor push (harbor.wace.me/dev-pilots/jskim)
  2. deploy/docker-compose.yml로 컨테이너 교체 (web + pgnet 네트워크, Traefik 라벨, 포트 3000)
  3. Traefik이 jskim.vexplor.com HTTPS 라우팅

운영 DATABASE_URL과 Harbor 인증(HARBOR_USER/HARBOR_SECRET)은 저장소 Secrets로 이미 등록되어 있다.

구조

src/
  app/              # App Router 페이지
    api/health/     # DB 연결 헬스체크
  lib/db.ts         # pg Pool (DATABASE_URL 사용)
scripts/db-tunnel.sh
Dockerfile              # standalone 빌드, node:20-alpine
deploy/docker-compose.yml  # 배포 정의 (Traefik 라벨, 앱 포트)
.gitea/workflows/deploy.yml  # CI/CD (dev-pilots 표준)
S
설명
제공된 설명이 없습니다
Readme
47 MiB
언어
TypeScript 96.1%
CSS 3%
Shell 0.3%
JavaScript 0.3%
Dockerfile 0.3%