No description
Find a file
hermes 3888942f7d
All checks were successful
CI / test (push) Successful in 46s
CI / build (push) Successful in 54s
ci: re-run via runner pickup verification
2026-09-26 20:06:49 -07:00
.forgejo/workflows ci: add httpx to test deps; restore clean ci.yaml 2026-09-12 02:43:38 -07:00
app fix: wire CSRF protection (issue #1), clamp pagination, validate entrypoint paths 2026-08-11 11:11:47 -07:00
generated_prompts initial commit 2026-02-15 17:15:09 -08:00
project_state initial commit 2026-02-15 17:15:09 -08:00
tests fix: wire CSRF protection (issue #1), clamp pagination, validate entrypoint paths 2026-08-11 11:11:47 -07:00
.dockerignore Fix CI, Dockerfile, tempfile leak, blocking I/O, and config issues 2026-05-09 19:09:49 -07:00
.gitignore chore: gitignore .kilo/ workdir (#11) 2026-09-09 08:25:40 -07:00
.pre-commit-config.yaml chore: add basic pre-commit hooks (trailing-whitespace, eof-fixer, ruff) 2026-06-03 17:28:35 -07:00
.quickfix-run.log fix #4: Add game update (re-upload) functionality 2026-05-27 15:01:44 -07:00
AGENTS.md docs: document CSRF config (ITCHBOX_CSRF_SECRET, ITCHBOX_CSRF_SECURE_COOKIE) 2026-08-11 11:12:11 -07:00
docker-compose.yml Fix CI, Dockerfile, tempfile leak, blocking I/O, and config issues 2026-05-09 19:09:49 -07:00
Dockerfile Fix CI, Dockerfile, tempfile leak, blocking I/O, and config issues 2026-05-09 19:09:49 -07:00
pyproject.toml ci: add httpx to test deps; restore clean ci.yaml 2026-09-12 02:43:38 -07:00
README.md docs: document CSRF config (ITCHBOX_CSRF_SECRET, ITCHBOX_CSRF_SECURE_COOKIE) 2026-08-11 11:12:11 -07:00
sample_game.zip initial commit 2026-02-15 17:15:09 -08:00

itchbox (MVP)

A tiny self-hosted itch.io-style gallery for static HTML5 games.

What it does

  • Upload a ZIP containing index.html (+ assets)
  • Extracts it safely to /data/games/<slug>/...
  • Lists games in a gallery, has a details page, and a play page (iframe)

Run with Docker

docker build -t itchbox .
docker run --rm -p 8080:8080 -v itchbox_data:/data itchbox

Then open: http://localhost:8080

Run with docker-compose

docker compose up --build

Dev run (local)

python -m venv .venv
. .venv/bin/activate
pip install -e .
uvicorn app.main:app --reload --host 0.0.0.0 --port 8080

Notes / security

  • MVP has no auth. Put it behind a reverse proxy / VPN if needed.
  • ZIP extraction rejects path traversal attempts.
  • Default max upload size: 200MB (set ITCHBOX_MAX_UPLOAD_BYTES).
  • All state-changing POST forms (upload/update/delete) are CSRF-protected with a signed double-submit cookie. Set ITCHBOX_CSRF_SECRET to a stable value in production so CSRF tokens survive restarts; if unset, an ephemeral secret is generated and a warning is logged. Behind HTTPS, set ITCHBOX_CSRF_SECURE_COOKIE=true.