Summary
Add a GitHub Actions CI workflow that runs lint + type checking + production build on every push and PR. The repo currently has no .github/ directory at all — changes to this Next.js 16 / TypeScript / Tailwind 4 site ship with zero automated checks.
What to do
- Create
.github/workflows/ci.yml
- Trigger:
push to main and pull_request
- Job steps (Node 22,
npm ci with cache):
npm run lint (ESLint config already exists: eslint.config.mjs)
npx tsc --noEmit (or the repo's typecheck script)
npm run build — Next.js static prerender (next build); the site is statically exported so this is safe in CI
- Keep it a single workflow for simplicity, matching the style of
groundcontrol/.github/workflows/ci.yml
Why it matters
- The site is the first thing users see before installing GroundControl on a VPS — a broken build or lint error reaching production damages trust
- GroundControl core repo has CI (ci/deploy/test workflows); its product site should too
- Catches TypeScript regressions and broken prerenders before deploy to Vercel
Acceptance criteria
Summary
Add a GitHub Actions CI workflow that runs lint + type checking + production build on every push and PR. The repo currently has no
.github/directory at all — changes to this Next.js 16 / TypeScript / Tailwind 4 site ship with zero automated checks.What to do
.github/workflows/ci.ymlpushtomainandpull_requestnpm ciwith cache):npm run lint(ESLint config already exists:eslint.config.mjs)npx tsc --noEmit(or the repo's typecheck script)npm run build— Next.js static prerender (next build); the site is statically exported so this is safe in CIgroundcontrol/.github/workflows/ci.ymlWhy it matters
Acceptance criteria
.github/workflows/ci.ymlexistsmain(green checkmark on the next push)