KGames
Free games for kids. No ads. No signup. No backend.
Philosophy
- Everything runs in the browser — HTML5, CSS, and JavaScript only
- No build tools, no package managers, no server required
- Games use Phaser 3 loaded from CDN
- Open source under GPL-3.0
Run locally
Just open index.html in any browser — double-click it or run:
xdg-open index.html # Linux
open index.html # macOS
Or use the included dev server (also used by the test suite):
node tests/serve.js
# then open http://localhost:8765
An internet connection is required on first load so the browser can fetch Phaser and Google Fonts from their CDNs. After that, the games themselves work offline.
Testing
Run tests before committing:
npm install # one-time setup (downloads headless Chromium ~112 MB)
npm test # unit tests + browser smoke tests
npm run test:unit— fast pure-logic tests, no browser requirednpm run test:browser— Playwright tests that load each game in a real browser and verify it actually renders
Deploy
rsync -av --delete --exclude=node_modules --exclude='.git' . user@server:/path/to/docroot/
Standard static file hosting. No .htaccess tricks needed.
Add a game
- Create
games/<slug>/index.html,games/<slug>/lib.js, andgames/<slug>/game.js - Add an entry to the
GAMESarray injs/main.js:{ slug: '<slug>', title: 'My Game', thumb: 'assets/thumbnails/<slug>.svg', status: 'live' } - Add a thumbnail SVG at
assets/thumbnails/<slug>.svg - Add unit tests in
tests/unit/and browser test cases intests/browser/runner.js - Run
npm test— must pass before committing
Source
Browse the code at https://www.keyboard.games/code/, or clone it:
git clone https://www.keyboard.games/code/kgames.git
The browser and the clone URL are static files generated by stagit — no forge, no server-side code.
License
GPL-3.0 — see LICENSE