The routed job workspace owns analysis, correspondence, timeline, and interview flows. Remove the unreachable duplicate dialog and keep coverage on the live components and route contracts.
Job Tracker frontend
The frontend is a statically exported Next.js 16 application using React 19, TypeScript, Material UI, and React Router. Next.js supplies the build shell; authenticated and public application routes are defined in src/App.tsx.
Requirements
- Node.js 24 (the version used by CI)
- npm 11 or a compatible npm release
- The Job Tracker API at
http://localhost:5202for normal local use
Install the lockfile exactly:
npm ci
Development
Start the application on Next.js's default development port:
npm run dev
Open http://localhost:3000. The client calls http://localhost:5202/api on localhost unless NEXT_PUBLIC_API_BASE_URL overrides it.
The Playwright harness uses port 3300 and starts its own isolated API and SQLite database. Do not point it at a development or production database.
Quality gates
npm run lint
npm test -- --runInBand
npm run build
The production build is written to out/ and is served by nginx in the frontend container.
Run the browser suite after installing Chromium once:
npx playwright install chromium
npm run test:e2e
The browser suite covers login, job creation, Career Workspace routing, and public CV/PDF access against isolated services.
Useful paths
app/— thin Next.js application shellsrc/App.tsx— application routes and shared authenticated shellsrc/api.ts— API client and local/default base URLsrc/components/— feature and shared UI componentssrc/i18n/— English and Norwegian Bokmål UI messagessrc/theme.ts— application themee2e/— Playwright browser testsnext.config.js— static-export configurationplaywright.config.ts— isolated browser-test services
Runtime configuration
NEXT_PUBLIC_API_BASE_URL is the only browser-visible API setting. Leave it unset in the production container so nginx proxies same-origin /api requests. Values prefixed with NEXT_PUBLIC_ are embedded at build time and must never contain secrets.
See the repository README.md for full-stack development and deploy/README.md for production requirements.