37 lines
1.6 KiB
Markdown
37 lines
1.6 KiB
Markdown
# 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
|