Thank you for your interest in contributing! KhelZon is an open-source, single-player browser arcade built with vanilla HTML, CSS, and JavaScript. Every contribution helps make the project better for players and developers.
- Report bugs — Open a bug report
- Suggest features — Open a feature request
- Propose a new game — Open a game idea
- Fix issues or add code — Fork the repo, make changes, and open a pull request
- Improve docs — README, comments, or in-app About text
You do not need permission to open an issue. If you're unsure, open one anyway — maintainers will help triage it.
- Check existing issues to avoid duplicates
- For large changes (new game, routing overhaul, storage format), open an issue first so we can align on approach
- Read the Code of Conduct
KhelZon has no build step. ES modules require a local HTTP server:
git clone https://github.com/pradipNP/khelzon.git
cd khelzon
# Option A — Python
python -m http.server 8080
# Option B — Node
npx serve .Open http://localhost:8080 in your browser.
| Path | Purpose |
|---|---|
index.html |
App shell |
js/app.js |
Boot, splash, init |
js/router.js |
Hash routing & views |
js/lobby.js |
Welcome lobby |
js/storage.js |
Per-player local scores |
js/gameRegistry.js |
Game catalog & metadata |
js/games/ |
One module per game |
css/main.css |
Theme, layout, lobby |
css/games.css |
Game-specific styles |
sw.js |
Service worker (offline cache) |
- Create
js/games/your-game.jsexporting a default object withmount(container)andunmount()(see existing games) - Register it in
js/gameRegistry.jswithid,name,description,icon,category,instructions, andload - Add styles in
css/games.cssif needed - Ensure the game fits the viewport (use
js/gameFit.jshelpers for canvas/grid games) - Test on desktop and mobile
- Vanilla JS only — no frameworks or bundlers
- Match existing style — naming, spacing, and patterns used in nearby files
- Keep diffs focused — one logical change per pull request when possible
- Accessibility — use semantic HTML,
aria-*labels, keyboard-friendly controls - Mobile-first — games and UI should work on small screens without forced scrolling in the play area
- No secrets — never commit API keys, tokens, or
.envfiles
- Fork pradipNP/khelzon and create a branch from
main - Make your changes and test locally
- Update
README.mdif you add games, routes, or user-facing features - Add
sw.jscache entries if you add new static assets loaded by the app - Open a PR against
mainwith:- A clear title (e.g.
fix: memory matrix grid on narrow screens) - What changed and why
- How you tested it
- A clear title (e.g.
- Link related issues (
Fixes #123)
Maintainers will review when they can. Be patient and responsive to feedback.
| Label | Meaning |
|---|---|
bug |
Something is broken |
enhancement |
Improvement to existing feature |
game |
New or updated game |
good first issue |
Good entry point for newcomers |
help wanted |
Maintainer would welcome a PR |
By contributing, you agree that your contributions will be licensed under the MIT License.
Open a GitHub issue or start a discussion on the repo. We're happy to help you get started.