"A high-speed strategic escape into the neon-soaked grid."
Welcome to Metropolis Retro, an ultra-fast web application built for enthusiasts of chess, classic gaming, and vintage aesthetics. Hosted on Vercel and powered by Next.js with the Bun runtime, this platform merges timeless 64-square logic with a high-performance, retro-futuristic engine.
We utilize a modern, speed-first toolkit to ensure a lag-free experience for players and developers:
- Runtime: Bun β For lightning-fast installs, testing, and script execution.
- Framework: Next.js β Powering our hybrid static and dynamic gaming interface.
- Deployment: Vercel β Global Edge Network delivery.
- Quality Control: Multi-tier prek hooks via the pre-commit framework.
To maintain "Grandmaster" code quality, we employ a rigorous three-pillar pre-commit strategy:
- Standard Hooks: Automated linting, formatting, and syntax validation.
- Manual Verification: Curated checks for retro-theming accuracy.
- Audit-Based Security: Periodic hardening and dependency scanning to ensure a secure, production-ready environment.
prek run -a: run all the hooks against all filesprek run -a --hook-stage manual: run all manual hooks against all filesprek run -a -c .pre-commit-config-audit.yaml: run all the audit based hooks against all files
We welcome contributions from developers who want to help push Metropolis Retro to the next level. Whether you're fixing a bug, adding a feature, or improving our retro aesthetic β all moves are welcome.
Before contributing, ensure you have the following installed:
| Tool | Version | Purpose |
|---|---|---|
| Bun | β₯ 1.3.11 | JavaScript runtime, package manager & test runner |
| uv | latest | Python package manager for dev tooling (prek) |
| Python | β₯ 3.13 | Required by uv and pre-commit tooling |
| Node.js | β₯ 24 | Required by some prek hook dependencies |
| Git | latest | Version control |
-
Fork the repository on GitHub and clone your fork:
git clone https://github.com/<your-username>/metropolis-retro.github.io.git cd metropolis-retro.github.io
-
Install all dependencies (Python tooling + Node/Bun packages):
make install
This runs
uv sync(Python/prek tools) andbun install(JavaScript packages). -
Start the development server:
make dev
Open http://localhost:3000 in your browser.
| Command | Description |
|---|---|
make dev |
Start the Next.js dev server |
make build |
Build the Next.js app for production |
make lint |
Run ESLint on TypeScript/JavaScript files |
make prek |
Run all prek hooks against all files |
make prek-manual |
Run prek hooks with the manual stage |
make build-games |
Build all game sub-projects |
make clean |
Remove build artifacts and dependencies |
make help |
List all available Make targets |
All contributions must pass our three-pillar pre-commit strategy before merging:
- Standard hooks (
make prek) β trailing whitespace, YAML/JSON validation, spell checking, secret detection, ESLint, markdownlint, and more. - Manual hooks (
make prek-manual) β file permission checks, image optimization. - Audit hooks (
prek run -a -c .pre-commit-config-audit.yaml) β security-focused dependency scanning.
Run the full standard suite locally before opening a pull request:
make prek-
Create a feature branch from
main:git checkout -b feat/your-feature-name
-
Make your changes, commit with a clear message, then push:
git push origin feat/your-feature-name
-
Open a Pull Request against the
mainbranch on GitHub. -
Ensure all CI checks pass (workflows run automatically on every PR).
-
Request a review from a maintainer β see CODEOWNERS.
- TypeScript / JavaScript β enforced by ESLint (
eslint.config.mjs) and Biome (biome.json). Runmake lintto check. - Markdown β line length β€ 125 characters, enforced by markdownlint
(config:
.github/linters/.markdown-lint.yml). - YAML β validated by yamllint (config:
.github/linters/.yaml-lint.yml). - General β follow the
.editorconfigsettings (UTF-8, LF line endings, trailing newline, no trailing whitespace).