Static hub for lightweight HTML games, prototypes, and short guides. The site is intentionally simple: open a page, play, and move on.
site/index.html: Home page with featured games, demos, and guides.site/games/index.html: Games library with search + filters.site/games/playable/: Full playable game pages.site/games/demos/: Prototype demo pages.site/guides/: Guide pages.site/styles.css: Shared styles.build.py: Helper to rebuild the games list insite/games/index.html.
Open site/index.html directly in your browser, or run a quick static server:
python3 -m http.server --directory site 8000Then visit http://localhost:8000/.
- Drop a new HTML file into:
site/games/playable/for playable buildssite/games/demos/for demossite/guides/for guides
- Add page metadata in the
<head>for games (tags should be lowercase and comma-separated):<meta name="game-description" content="Short blurb shown on the games list."><meta name="game-tags" content="comma, separated, tags">
- Update the arrays in:
site/index.html(home page shelves + stats)site/games/index.html(full games library list)
Optional: run the helper to rebuild the games library list from page metadata:
python3 build.pybuild.py scans site/games/playable/ and site/games/demos/, then rebuilds
the games array in site/games/index.html using each page's <title>,
game-description, and game-tags values.
Multiplayer games are not static and require the server.ts backend to work. A simple Deno
server is provided that serves static files and handles WebSocket connections at
/ws.
- Deno (v1.30.0+)
- (Optional) Caddy (for HTTPS + reverse proxy)
- (Optional) DuckDNS account for dynamic DNS, allowing TLS termination with Caddy.
Run the Deno server that serves site/ and handles /ws:
deno run --allow-net --allow-read --allow-env server.tsThen visit http://localhost:8080/ (WebSocket endpoint: ws://localhost:8080/ws).
- Start the Deno server on port 8080 (see above).
- Ensure DNS for
swing-climb.duckdns.orgpoints to this host. - Run Caddy from the project root:
sudo setcap cap_net_bind_service=+ep $(which caddy)
caddy run --config CaddyfileThis will terminate HTTPS for https://swing-climb.duckdns.org/ and proxy to the Deno server.