온라인 멀티플레이어 마나 수집 보드게임. 주문서를 구매하고, 보너스를 쌓아 크리처를 소환하여 숙련 점수 15점을 먼저 달성하면 승리합니다.
| 영역 | 기술 |
|---|---|
| Client | React 19, Vite 6, Zustand, Framer Motion, TailwindCSS |
| Server | Fastify 5, WebSocket (ws) |
| Shared | TypeScript 5, 공용 타입 및 게임 로직 |
| Infra | Docker (node:22-alpine), K3s, Cloudflare Tunnel |
packages/
├── client/ # React SPA (Vite)
├── server/ # Fastify + WebSocket 게임 서버
└── shared/ # 공유 타입, 게임 규칙, 카드/크리처 데이터
k3s/ # Kubernetes 매니페스트 (Deployment, Service, Cloudflared)
docs/ # 카드 일러스트 문서
# 의존성 설치
pnpm install
# 개발 서버 (클라이언트 + 서버 동시 실행)
pnpm dev
# 개별 실행
pnpm dev:client
pnpm dev:server
# 빌드 & 실행
pnpm build
pnpm start
# 린트
pnpm lintdocker build -t master-of-mana:latest .
docker run -p 8080:8080 master-of-mana:latest- 2~4인 실시간 멀티플레이
- 턴마다 마나 수집, 주문서 구매, 또는 주문서 예약 중 하나를 수행
- 주문서를 구매하면 해당 원소 보너스가 쌓임
- 보너스 조건을 충족하면 크리처를 소환 (플레이어당 1체)
- 숙련 점수 15점 도달 시 마지막 라운드 개시, 최고 점수 플레이어 승리