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.