Add a GitHub Actions workflow at .github/workflows/ci.yml that runs on push and pull_request to main. It should checkout code, set up Node (use engines field from package.json, default Node 20), run npm ci, run npm run build, and run the vitest test suite. Add a status badge to README.md. Fail the build on lint/typecheck errors if those scripts exist.
Add a GitHub Actions workflow at .github/workflows/ci.yml that runs on push and pull_request to main. It should checkout code, set up Node (use engines field from package.json, default Node 20), run npm ci, run npm run build, and run the vitest test suite. Add a status badge to README.md. Fail the build on lint/typecheck errors if those scripts exist.