name: Frontend CI on: push: branches: [main] paths: - 'frontend/**' - '.github/workflows/frontend.yml' pull_request: branches: [main] paths: - 'frontend/**' - '.github/workflows/frontend.yml' workflow_dispatch: concurrency: group: frontend-${{ github.ref }} cancel-in-progress: true jobs: build: runs-on: ubuntu-latest defaults: run: working-directory: frontend steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: '22' cache: 'npm' cache-dependency-path: frontend/package-lock.json - run: npm ci - run: npx tsc --noEmit - run: npm run build env: # Optional: when the secret is unset the build still succeeds and the # leaderboard is disabled (see src/lib/supabase.ts). No placeholder, # so a keyless CI build doesn't bake in a bogus anon key. VITE_SUPABASE_ANON_KEY: ${{ secrets.VITE_SUPABASE_ANON_KEY }}