Gerçek zamanlı, eleme usulü taş-kağıt-makas turnuva uygulaması.
React + Node.js + Socket.io. Tek Docker container ile ayağa kalkar.
- Lobi oluştur / koda katıl / rastgele lobi
- 2–64 oyuncu, BYE destekli single-elimination bracket
- Best-of (3 puana ilk ulaşan) maçlar, 10 sn hamle süresi
- Admin paneli: seed, aşama kontrolü, pause/resume, walkover, test odası
- Canlı bracket, activity feed, yayın overlay
- Bağlantı kopunca reconnect + grace period walkover
- Disk’e persist (
DATA_FILE) — container restart’ta state kalır
docker compose up -d --builddocker compose logs -f # log
docker compose down # durdurKalıcı veri: Docker volume tmk-data → /data/store.json
Gereksinimler: Node.js 22+, npm
npm install
npm run dev| Servis | URL |
|---|---|
| Frontend | http://localhost:5173 |
| Backend | http://localhost:4000 |
npm run typecheck
npm run self-check
npm run buildbackend/ Express + Socket.io API
frontend/ React (Vite) istemci
docs/ Tasarım / mimari notları
Dockerfile Tek image (UI + API)
docker-compose.yml
Örnek: .env.example
| Değişken | Açıklama | Varsayılan |
|---|---|---|
PORT |
HTTP port | 4000 |
HOST |
Bind adresi | 0.0.0.0 |
SERVE_FRONTEND |
1 = backend frontend/dist sunar |
Docker’da 1 |
FRONTEND_ORIGIN |
CORS (* = Origin yansıt) |
* / dev’de Vite |
DATA_FILE |
Persist dosyası | ./data/store.json |
VITE_SOCKET_URL |
Build-time socket URL (boş = same-origin) | boş |
| Script | Ne yapar |
|---|---|
npm run dev |
Backend + frontend birlikte |
npm run build |
Production build |
npm start |
Backend’i başlat |
npm run self-check |
Temel invariant kontrolü |
npm run docker:up |
Compose build + up |
- Lobi kur veya koda katıl
- Oyuncular hazır ol
- Admin bracket hazırlar (veya Test Turnuvasını Başlat)
- Turnuvayı aktif et → aşamayı başlat
- Maçlar oynanır; aşama bitince sonraki aşama
- Şampiyonu yayınla
Detaylı tasarım notları: docs/