# geekfighter

> **Start with [`brief.md`](brief.md)** — genesis + where everything lives.

## Project Info
- Type: custom
- Port: 3133
- Created by: rian
- Created: 2026-07-19

## Description


## Getting Started
1. Add files to `./public/` directory
2. Deploy: `srv-gw deploy --project geekfighter`
3. Visit: https://geekfighter.rian.ca

## Managing the Container
Use `srv-gw` commands (NOT docker/podman directly):
```bash
srv-gw deploy --project geekfighter     # Deploy/redeploy (reads docker-compose.yml)
srv-gw status --project geekfighter     # Check status
srv-gw logs --project geekfighter       # View logs
srv-gw restart --project geekfighter    # Restart
srv-gw stop --project geekfighter       # Stop
srv-gw start --project geekfighter      # Start
```

## Customizing
Edit `docker-compose.yml` to change the container setup (e.g., different image,
build from Dockerfile, add environment variables). Then run `srv-gw deploy`.

## This is a Street Fighter II–style game
- **Read `PLAN.md` first** — build plan, code map, prioritized TODO, and the testing recipe.
- **`docs/sf2-moves.md`** — the SF2 move/mechanic reference to build toward.
- **`.logs/progress.md`** — running progress journal (newest at bottom).
- Files in `public/**` are live bind-mounted: edit and reload, **no redeploy needed**.
- Sprite extractor: `tools/.venv/bin/python tools/extract.py "<sheet>.png" assets/<char> <contact.png>`.
- **Testing (the rAF loop is throttled in a hidden/automation tab — don't judge from a static
  screenshot):** drive the game via injected JS with the `TEST` harness on the live tab, e.g.
  `TEST.smoke(1500)` (AI-vs-AI regression, returns `{err,...}`), `TEST.motion(1,'qcf','hp')`,
  `TEST.hold(1,'right',40)`, then `TEST.paint()` + screenshot. See PLAN.md → "Testing recipe".
