- 권한: 디스코드 ID로 요청마다 계산. 슈퍼어드민 293719842274541579(SUPERADMIN_DISCORD_IDS), 어드민은 슈퍼어드민이 디스코드 ID로 추가(로그인 전 미리 등록 가능), 고정 슈퍼어드민은 삭제 불가 - 게임 설정: 사용 여부, 표시 이름·설명·안내문, 원작 범위 안 인원, 모든 규칙 옵션 기본값, 옵션별 방장 변경 금지(잠금), 초기화. 입력 화면은 옵션 스키마(zod→JSON Schema)로 자동 생성 - 오목 옵션 전체에 한국어 제목·선택지 메타, 엔진 고정값(자동 착수 허용 횟수, 무승부 재제안 간격, 한 수 제한 초)을 옵션으로 꺼냄 - 사이트 설정: 이름, 공지, 점검 모드, 금지어, 방 수 제한, 연결 유예, 채팅 기본값 - 방 관리(목록·닫기), 사용자 관리(검색·닉네임 변경·이용 제한·강제 로그아웃·삭제, 슈퍼어드민 전용), 관리자 작업 기록(전/후 값) - 이용 제한: 세션 삭제 + 접속 종료 + 디스코드 재로그인 거부 - 테스트: 관리자 API 7개(권한·설정 반영·잠금·점검·금지어·방 닫기·이용 제한·기록), 오목 옵션 2개, e2e/admin.e2e.ts(슈퍼어드민 로그인→규칙 변경·잠금→어드민 추가→게스트 새 방 반영) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
39 lines
1.7 KiB
Markdown
39 lines
1.7 KiB
Markdown
# 같이 놀자 보드게임
|
|
|
|
광고 없이 가볍고, 링크 하나로 친구·가족과 바로 즐기는 온라인 보드게임 사이트.
|
|
계획서는 [docs/](docs/README.md)에 있고, 구현은 계획서를 따른다.
|
|
|
|
## 개발
|
|
```bash
|
|
bun install
|
|
bun run --filter '@bg/server' dev # 서버 :3000
|
|
bun run --filter '@bg/web' dev # 웹 :5173 (API/WS는 :3000으로 프록시)
|
|
```
|
|
브라우저에서 http://localhost:5173 을 연다. 디스코드 값이 없으면 게스트 로그인만 보인다.
|
|
|
|
## 확인
|
|
```bash
|
|
bun run typecheck
|
|
bun test # 규칙·서버 통합·방 단위 테스트
|
|
(cd apps/web && bunx vite build) # 웹 빌드
|
|
bun e2e/omok.e2e.ts # 브라우저 두 개로 오목 한 판 (Chrome 필요)
|
|
bun e2e/admin.e2e.ts # 관리자: 슈퍼어드민 로그인 → 규칙 변경·잠금 → 새 방 반영
|
|
```
|
|
|
|
## 배포
|
|
`deploy/.env.example`을 `deploy/.env`로 복사해 값을 채운 뒤:
|
|
```bash
|
|
cd deploy && docker compose up -d --build
|
|
```
|
|
자세한 절차는 [docs/11-deployment-ops.md](docs/11-deployment-ops.md).
|
|
|
|
## 관리자
|
|
`/admin`. 슈퍼어드민은 디스코드 ID `293719842274541579`(환경 변수 `SUPERADMIN_DISCORD_IDS`), 어드민은 관리자 화면에서 디스코드 ID로 추가한다. 자세한 내용은 [docs/14-admin.md](docs/14-admin.md).
|
|
|
|
## 구조
|
|
- `packages/engine` — 게임 공통 타입, 시드 난수, 테스트 도구
|
|
- `packages/shared` — 프로토콜, 닉네임·방 코드 규칙, 게임 목록 (`/lite`는 브라우저용)
|
|
- `packages/games/<id>` — 게임 규칙(순수 함수)
|
|
- `apps/server` — Bun 서버(HTTP API, WebSocket, 방 관리, SQLite)
|
|
- `apps/web` — React 웹
|