2.6 KiB
2.6 KiB
구조 및 의사결정 이력
2026-06-19: 독립 Vue 프로젝트로 시작
- 기존 UA Deck Builder와 별도 Git 저장소로 분리했다.
- 덱 빌더는 카드 선택과 덱 데이터 제공을 담당한다.
- Play Uniare는 카드 조작과 실시간 세션을 담당한다.
- 카드 이미지의 대규모 복제를 피하기 위해 기존 카드 자산 도메인을 참조한다.
2026-06-19: Vue 3, Vite, Tailwind CSS 채택
- 사용자가 직접 유지보수할 수 있는 Vue 3를 선택했다.
- 정적 빌드와 빠른 개발 서버를 위해 Vite를 사용한다.
- 일관된 UI 작성을 위해 Tailwind CSS를 기본 스타일 방식으로 정했다.
2026-06-19: 카드 소유자만 조작하는 권한 모델
- 플레이어는 자신이 소유한 카드만 조작한다.
- 전투나 효과로 내 카드가 제거되어도 내 카드 소유자가 직접 정리한다.
- 이 원칙으로 동시에 같은 카드를 수정하는 충돌을 줄인다.
- 온라인 모드에서는 서버가 소유권을 최종 검증한다.
2026-06-19: Docker 기반 NAS 배포
- UGREEN NAS에서 재현 가능한 배포를 위해 Docker Compose를 사용한다.
- Vue 빌드에는 Node.js를 사용하고 실행 이미지는 Nginx를 사용한다.
- 테스트와 운영 컨테이너를 서로 다른 포트로 분리한다.
2026-06-19: 기존 카드 이미지 읽기 전용 공유
- 기존 Uniare의 실제 웹 루트는
/volume1/docker/projects/apps/uniare/config/www로 확인했다. - 카드 원본은 해당 웹 루트의
images폴더를 사용한다. - 새 프로젝트의 NAS 위치는
/volume1/docker/projects/apps/playuniare로 정했다. - 이미지 중복 저장을 막기 위해 Docker bind mount를 사용한다.
- 원본 보호를 위해 컨테이너에는 읽기 전용으로 연결한다.
- 브라우저에는 같은 출처의
/card-assets경로로 제공한다.
2026-06-19: 실시간 서버 포트 정책
- 흔히 사용하는
3000대신 로컬 Socket.IO 기본 포트를31873으로 정했다. - Docker 내부 포트는 다른 컨테이너와 중복될 수 있음을 명시했다.
- NAS 호스트 공개 포트만 중복되지 않도록 관리한다.
- 운영 환경에서는 포트를 직접 공개하지 않고
/socket.io리버스 프록시를 사용한다.
2026-06-19: NAS HTTP 포트 환경변수화
- 기존 테스트 포트
18080이 NAS의 다른 서비스와 충돌했다. - 테스트 기본 포트를
41808, 운영 기본 포트를41809로 변경했다. - NAS별 포트 충돌에 대응할 수 있도록
.env와 Compose 변수로 관리한다.