Files
servesync-demo/PROGRESS.md
2026-03-19 01:27:01 +08:00

54 lines
2.0 KiB
Markdown

# ServeSync Demo — Build Complete ✅
**Completed by Forge on 2026-03-19**
## Live URLs
- **App:** http://servesync-demo.juankibin.space (domain)
- **Direct:** http://192.168.1.167:8092
- **API Docs:** http://192.168.1.167:8092/api/docs (if enabled)
- **Gitea:** http://192.168.1.159:3000/kibin/servesync-demo
## What's Built
### Backend (FastAPI + PostgreSQL + Redis)
- `/api/players/` — Player profiles, ELO ratings, membership tiers
- `/api/courts/` — Court management, booking, availability
- `/api/matches/` — Full matchmaking system (open + skill-based)
- `/api/tournaments/` — Double elimination tournament engine
- `/api/screen/` — TV display API with real-time data
- `/api/admin/seed` — POST to re-seed demo data
- WebSocket endpoints: `/ws/court/{id}`, `/ws/overview`, `/ws/matches`
### Frontend (Vue 3 + Tailwind)
- `/` Dashboard — Live court grid, leaderboard, tournament summary, quick actions
- `/courts` — Court booking with time slot selection
- `/matchmaking` — Stage 1 Open + Stage 2 Skill-Based lobby
- `/tournament` — Full double elimination bracket viewer with score entry
- `/players` — Player directory with tier/ELO display
- `/screen/:courtId` — TV display mode (court 1-4 or overview)
### Seed Data
- 12 demo players (Bronze→Elite, 850-1850 ELO)
- 4 courts (2x Sport Court, 2x Cushioned Tournament Grade)
- 3 active matches (Open, Skill-Based, Tournament)
- 2 lobby matches
- 1 in-progress tournament with full bracket
## Matchmaking Implementation
- **Stage 1 Open:** Free join, no restrictions
- **Stage 2 Skill-Based:** ELO ±200 constraint enforced
- **Stage 3 Tournament:** Double elimination, winners/losers brackets, Grand Final
- Auto-assigns available court when match starts
- ELO updates calculated via standard K=32 formula
## Re-seeding
If data gets stale or needs refresh:
```bash
curl -X POST http://192.168.1.167:8092/api/admin/seed
```
## Infrastructure
- Coolify App UUID: ycw8wg8gk08gwcwc8wwwwww8
- Gitea webhook CI/CD: Active (pushes trigger auto-deploy)
- DB volume: `pgdata` (persistent across deployments)