Score tracker & statistics for Skull King card games.
- Full scoring — bids vs tricks, with all bonuses (pirates captured by SK, SK captured by mermaid, black 14, color 14s, Tigresse)
- Butin card — linked to another player, +20 if both succeed, −20 if both fail
- Single-button validation — fill in all players then validate the round at once
- Score correction — click any past score to edit it
- Round-by-round input — guided flow through 10 rounds with live score preview
- Early stop — end a game before round 10
- Delete games — remove games from the dashboard
- Real-time chart — score evolution graph updated after each round
- Player profiles — win rate, bid accuracy, average score, best/worst score, win streaks
- Advanced stats — score progression over games, average score per round (bar chart)
- Authentication — email/password login, per-user data isolation
- Supabase backend — data persists across devices and sessions
- Animated backgrounds — Aurora, Waves, Particles, Squares, Threads (switchable)
- Dark / Light mode — toggle in sidebar
- Responsive — collapsible sidebar, works on mobile
- React 18 + TypeScript
- Vite 5
- Tailwind CSS v4
- BTCV Design System (@btcv/ui)
- Supabase (PostgreSQL + Auth)
- Recharts
- Lucide icons
# Install dependencies
npm install
# Start dev server
npm run dev
# Build for production
npm run buildCreate a .env file:
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_PUBLISHABLE_KEY=your-publishable-key
Run the SQL schema in your Supabase SQL Editor to create the required tables (players, games, game_players, round_scores) with RLS policies.
Deployed on Cloudflare Pages with:
| Setting | Value |
|---|---|
| Framework preset | None |
| Build command | npm run build |
| Output directory | dist |
Environment variables (VITE_SUPABASE_URL, VITE_SUPABASE_PUBLISHABLE_KEY) are committed in .env.production since both values are public (client-side anon key).