# Shark Attack Fantasy Game — Technical Reference

## Game Overview
Fantasy league where players draft coastal regions and score points from real shark activity (sightings, bites, fatalities) reported globally. AI scraper searches for incidents daily.

## Architecture
- **Frontend:** Mobile-first PWA at `/var/www/shark-game/` (index.html, draft-room.html, league.html, how-to-play.html)
- **Backend:** FastAPI at `/root/shark-game/backend/server.py` on port 8083
- **Database:** SQLite at `/root/shark-game/backend/game.db`
- **AI Scraper:** Firecrawl + admin-ai classification pipeline at `/root/shark-game/scraper/scrape.py`
- **Domain:** `shark.iamgmb.com` (Cloudflare A record → 152.53.192.33)
- **Proxy:** Caddy reverse_proxy `/api/*` → 127.0.0.1:8083, static files from /var/www/shark-game/

## Scoring
| Event | Points |
|-------|--------|
| Sighting | 2 |
| Bite | 5 |
| Fatality | 10 |

## Regions
32 coastal regions with real 10-year ISAF (International Shark Attack File) data. Data source: `/root/shark-game/references/shark-incident-data-10yr.md`. Database pre-populates on startup.

## Draft Balancing
When draft starts with N players, the lowest-performing regions are removed so 32 % N = 0. Removed regions show as "🚫 Removed" on map and card grid.

## Map View
Uses Leaflet.js (CDN) with OpenStreetMap tiles. Dark-themed controls. Region markers are color-coded: teal=available, amber=your pick, red=taken, gray=excluded.

## API Endpoints
All under `/api/`:
- Auth: register, login, me
- Leagues: create, join, list, detail, settings
- Draft: board, pick, start
- Scores: leaderboard, daily, events
- Regions: list, events
