No description
  • TypeScript 86%
  • HTML 6.6%
  • CSS 5.9%
  • Dockerfile 1.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
smalla 02992c88a0 docs: add step-by-step deploy instructions to README
Document the full path from local push to server deploy: pushing to
git.andy-small.com, cloning/pulling on the host, and running docker
compose, so deployment isn't tribal knowledge.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PLQgoC7Uf2Wa8szDscsso8
2026-08-31 11:29:27 -05:00
docs/superpowers Add implementation plan for GenericRetroTennis MVP 2026-08-31 08:14:18 -05:00
src fix: clamp frame delta, remove dead GameAction type, use npm ci, broaden dockerignore, add zstd compression 2026-08-31 08:56:42 -05:00
.dockerignore fix: clamp frame delta, remove dead GameAction type, use npm ci, broaden dockerignore, add zstd compression 2026-08-31 08:56:42 -05:00
.gitignore Add design spec for GenericRetroTennis MVP 2026-08-31 08:08:19 -05:00
Caddyfile fix: clamp frame delta, remove dead GameAction type, use npm ci, broaden dockerignore, add zstd compression 2026-08-31 08:56:42 -05:00
docker-compose.yml feat: Docker + Caddy deployment with automatic HTTPS 2026-08-31 08:47:50 -05:00
Dockerfile fix: clamp frame delta, remove dead GameAction type, use npm ci, broaden dockerignore, add zstd compression 2026-08-31 08:56:42 -05:00
index.html feat: start screen, match-over screen, and Play Again 2026-08-31 08:41:05 -05:00
MVP-template.md Add design spec for GenericRetroTennis MVP 2026-08-31 08:08:19 -05:00
nextaction.md Update nextaction.md: MVP implemented and merged, deployment is what's left 2026-08-31 09:12:49 -05:00
package-lock.json chore: scaffold Vite + TypeScript project 2026-08-31 08:20:51 -05:00
package.json chore: scaffold Vite + TypeScript project 2026-08-31 08:20:51 -05:00
README.md docs: add step-by-step deploy instructions to README 2026-08-31 11:29:27 -05:00
tsconfig.json chore: scaffold Vite + TypeScript project 2026-08-31 08:20:51 -05:00
vite.config.ts chore: scaffold Vite + TypeScript project 2026-08-31 08:20:51 -05:00

GenericRetroTennis

A personal Pong clone. Single player vs. a computer opponent, first to 11 points (win by 2), no accounts, no sound.

Develop

npm install
npm run dev

Open the printed local URL in Chrome.

Build

npm run build
npm run preview

Deploy (Docker + Caddy, automatic HTTPS)

Requires a DNS A record for tennis.andy-small.com pointing at the host, and ports 80/443 reachable from the internet (needed for the Let's Encrypt HTTP-01 challenge).

1. Push local changes to git.andy-small.com

git add -A
git commit -m "..."
git push origin master

2. Get the code onto the hosting server

First time — clone the repo on the server:

git clone https://git.andy-small.com/andy/genericretrotennis.git
cd genericretrotennis

Subsequent updates — pull the latest master:

cd genericretrotennis
git pull origin master

3. Build and run with Docker Compose

docker compose up --build -d

This rebuilds the image from the current checkout and (re)starts the retro-tennis container. Caddy handles HTTPS automatically via Let's Encrypt on first request.

Confirm it worked:

docker compose logs -f

Check that Caddy obtained a certificate cleanly, then load https://tennis.andy-small.com and verify it serves the game with a valid cert.