Thanks for your interest in contributing. This document covers the basics.
- Fork the repository
- Clone your fork locally
- Open
index.htmlin a browser to verify everything works - Create a feature branch:
git checkout -b feature/your-feature
This is a zero-dependency static project. No build tools, no bundlers, no npm.
- HTML pages — each page is self-contained with inline styles where page-specific
- JavaScript — vanilla JS in
assets/js/. No frameworks. - CSS — shared styles in
assets/css/styles.css - Python tools — stdlib only, Python 3.8+
-
Syntax check all JS files:
for f in assets/js/*.js; do node --check "$f"; done
-
Run the data pipeline:
python3 tools/populate_public_data.py --seed-mode off --no-existing-manual
-
Run the integrity audit:
python3 tools/audit_release_integrity.py
-
Verify pages load without console errors in Chrome/Firefox/Safari
- No synthetic data. Every listing must trace to a real source.
- No hardcoded credentials. Auth uses client-side SHA-256 hashing.
- All user-facing strings must pass through
escapeHtml()or equivalent.
- Keep PRs focused on a single change
- Include a clear description of what changed and why
- Reference any related issues
- Ensure all existing functionality still works
Use the issue templates when available. Label your issues appropriately:
feature— new functionalitybug— something brokendata-pipeline— resolver, compiler, or tooling changesui— visual or interaction changessecurity— vulnerability reports (see SECURITY.md for private reporting)
- 2-space indentation in JS/HTML
- Single quotes in JS
camelCasefor functions and variables- No semicolons are fine — match existing file style
- Comment non-obvious logic