한줄요약 : 도커 컴포즈로 db+백앤드+프론트 다 묶어서 배포 + nginx 생각
artifacts/(menu/aliases/few_shots/manifest) 읽어서 LLM 호출/검증/주문 저장(SQLite 파일)./kiosk, /admin 라우트로 통합 권장 → 컨테이너 1개로 절약)../artifacts/cafe → 서버 read-only 마운트./data/sqlite → 서버가 DB 파일(malro.db) 쓰는 위치 (영속)malro-app/
packages/
server/ # NestJS (or FastAPI)
web/ # Next.js ( /kiosk /admin )
artifacts/
cafe/ # ← malro-data/outputs/cafe/* 복사본(JSON만)
menu.json
aliases.json
few_shots.jsonl
evalset.jsonl
artifact_manifest.json
data/
sqlite/ # 빈 폴더(컨테이너가 malro.db 생성)
.env # 서버 비밀키 등
docker-compose.yml
.env 예시 (루트에 두고 compose가 읽음)# Server
OPENAI_API_KEY=sk-xxxx
OPENAI_MODEL=gpt-4o-mini
ARTIFACTS_DIR=/app/artifacts/cafe
DB_PATH=/app/var/malro.db
PORT=4000
CORS_ORIGIN=*
# Web
NEXT_PUBLIC_API_BASE_URL=http://localhost:4000
WEB_PORT=3000
주의: OPENAI_API_KEY는 서버에서만 사용됩니다. 프론트에서 직접 LLM 호출 금지.
docker-compose.yml