Next.js UI for social lead qualification, job monitoring, account settings and analysis.
Use Node.js 24. The CI workflow uses npm and package-lock.json.
npm ci
cp env.local.example .env.local
# Configure .env.local with approved project values.
npm run dev
Open http://localhost:3000. The example uses a local Go API at http://localhost:8080.
Set these variables before npm run build:
| Variable | Purpose |
|---|---|
| NEXT_PUBLIC_GO_API_URL | HTTPS Go API base URL; production uses https://whatnot-api.openmart.com |
| NEXT_PUBLIC_SUPABASE_URL | Supabase project URL |
| NEXT_PUBLIC_SUPABASE_ANON_KEY | Public client key |
| SUPABASE_SERVICE_ROLE_KEY | Server-only key for privileged server routes; never prefix with NEXT_PUBLIC_ |
Also configure the Okta variables and CONNECTION_GRAPH_PREPARE_SECRET shown in env.local.example for their respective features. Public variables are embedded at build time: changing them requires a rebuild. Use the correct values for each deployment environment; never deploy the CI fixture keys.
Missing required settings are reported together before compilation. Keeping required configuration explicit prevents a nominally successful production build that sends browser requests to localhost. This check does not validate key permissions or connectivity.
npm run lint
npm run typecheck
npm test
npm audit
npm run build
Lint fails on warnings. Existing job and graph tests, plus build-config and mocked Supabase request regressions, run via npm test.
Both npm and pnpm lockfiles are retained for existing consumers. After dependency changes, update the npm lockfile and import it with pnpm 10 to synchronize pnpm-lock.yaml; verify a frozen-lockfile installation. The matching npm/pnpm override pins Next.js’s PostCSS to 8.5.28 until its upstream dependency is patched.
The existing Porter workflows exclude frontend-only changes; that alone does not prove a deployment defect when Vercel handles the frontend separately. Verify their live build context and deployment ownership before changing those triggers. A repository rename or Go monorepo import requires a coordinated build-context and deployment migration.