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
- Most games use Phaser 3 loaded from CDN; Story Stamp is plain DOM
- 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.
Games
| Game | Teaches |
|---|---|
| Letter Find | letter names |
| Animal Letter | initial sounds |
| Animal Spell | spelling with letter tiles |
| Work | oral language and vocabulary |
| Fire Truck | arrow keys, directions |
| Story Stamp | sounding out words at the library desk (synthetic phonics), with spaced review |
Story Stamp's recorded phonemes and words come from Wikimedia Commons and its
pictures from Fluent Emoji; see games/story-stamp/CREDITS.md. Regenerate its
assets with python3 tools/story-stamp-assets.py (needs numpy and ffmpeg)
and check the phoneme clips with python3 tools/story-stamp-audit.py.
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