Skip to content

Repository files navigation

RPS Arena

Gerçek zamanlı, eleme usulü taş-kağıt-makas turnuva uygulaması.

React + Node.js + Socket.io. Tek Docker container ile ayağa kalkar.

Özellikler

  • 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

Hızlı başlangıç (Docker)

docker compose up -d --build

Aç: http://localhost:4000

docker compose logs -f   # log
docker compose down      # durdur

Kalıcı veri: Docker volume tmk-data/data/store.json

Geliştirme

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 build

Proje yapısı

backend/          Express + Socket.io API
frontend/         React (Vite) istemci
docs/             Tasarım / mimari notları
Dockerfile        Tek image (UI + API)
docker-compose.yml

Ortam değişkenleri

Ö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ş

npm scriptleri

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

Tipik turnuva akışı

  1. Lobi kur veya koda katıl
  2. Oyuncular hazır ol
  3. Admin bracket hazırlar (veya Test Turnuvasını Başlat)
  4. Turnuvayı aktif et → aşamayı başlat
  5. Maçlar oynanır; aşama bitince sonraki aşama
  6. Şampiyonu yayınla

Detaylı tasarım notları: docs/

About

Gerçek zamanlı, eleme usulü taş-kağıt-makas turnuva uygulaması. React + Node.js + Socket.io

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages