Backend-first chess project with:
- A TypeScript/Express API (
apps/server) - A Rust chess engine exposed to Node via
napi-rs(packages/engine) - SQL bootstrap scripts (
database)
As of March 5, 2026, the project is in a solid technical foundation phase:
- API structure has been cleaned for maintainability (typed config, centralized errors, startup bootstrap).
- Database connectivity and module boundaries are production-oriented.
- Rust engine exposes core chess validation/status functions and includes unit tests.
- Repository is now prepared for public hosting hygiene (
.gitignore, env example, root docs).
.
|-- apps/
| `-- server/ # Express API (TypeScript)
| `-- web/ # Next UI (TypeScript)
|-- packages/
| `-- engine/ # Rust + napi-rs chess engine
|-- database/
| `-- test.sql # Example schema/seed - (tests)
`-- README.md
- Node.js 20+
- npm 10+ (or compatible)
- PostgreSQL 14+
- Rust toolchain (for local native engine builds)
cd apps/server
npm install
cp .env.example .envUpdate .env with your PostgreSQL credentials.
Run the SQL in database/test.sql against your PostgreSQL instance.
cd apps/server
npm run devDefault endpoints:
GET /GET /healthGET /api/test
cd apps/server
npm run build
npm startLocal development commands:
cd packages/engine
yarn install
yarn build
yarn testThe Rust engine currently exports:
validateAndMove(fen, uciMoveStr)getGameStatus(fen)
xClean server startup separation (appvsserver)xCentralized environment validationxTyped database access and route flowxCentralized error handling and 404 handlingxPublic-repo safe ignore rules and env template-CI pipeline (recommended next)-API tests/integration tests (recommended next)-Issue/PR templates and contribution guide (recommended next)
From the repository root:
git init
git add .
git commit -m "chore: clean architecture, docs, and github prep"
git branch -M main
git remote add origin https://github.com/<your-user>/<your-repo>.git
git push -u origin mainIf you already created a remote repo with a README, use git pull --rebase origin main before pushing.