2.7 KiB
2.7 KiB
Tech Context — PEDW FrontEnd
Languages and framework
- JavaScript-first codebase (TypeScript tooling present).
- Next.js
^14.2.28with Pages Router. - React
^18.2.0.
Core libraries in active use
- Auth:
next-auth+ Prisma adapters. - Data/state:
redux,react-redux,next-redux-wrapper,redux-persist,redux-thunk,redux-form. - Data access/integration:
axios,crypto-js,jsonpath-plus. - i18n:
next-translate, locale config ini18n.js. - Storage/infrastructure integrations:
@azure/storage-blob,@azure/storage-queue,@azure/identity. - Notifications/telemetry:
notifications-node-client(GOV.UK Notify),applicationinsights. - PDF/maps:
@react-pdf/renderer,react-pdf,leaflet,react-leaflet,google-map-react.
Runtime and configuration
- Standard app start script uses Next runtime (
npm start). - Additional custom server entries exist (
server.js,server/server.js) but are currently treated as non-active for the refactor baseline unless deployment evidence indicates otherwise. - Environment-driven config for auth, relay/API roots, hash key, notify key, and database URL.
Relay forwarding hardening policy knobs (P2-S3)
- Shared relay middleware now enforces centralized timeout/retry behavior for relay-backed GET flows.
- Supported env knobs:
RELAY_TIMEOUT_MS(default8000, clamped100..30000)RELAY_RETRY_MAX(default2, clamped0..4)RELAY_RETRY_BASE_DELAY_MS(default200, clamped0..5000)RELAY_RETRY_MAX_DELAY_MS(default1200, clamped0..5000)
- Retry classification:
- retryable:
408,429,5xx, selected transient transport errors - non-retryable: deterministic client/auth statuses (
400,401,403,404,422) and other explicit non-retryable HTTP statuses
- retryable:
- Logging behavior:
- structured redacted relay events emitted for retry/failure
- duplicate endpoint-layer error logging suppressed when relay layer already emitted terminal failure log
Tooling and quality gates
- Linting:
npm run lint(next lint). - Formatting conventions from
.prettierrc: 4 spaces, no trailing commas. - Prisma client generation script available:
npm run prisma:generate.
CI/CD and deployment artifacts
azure-pipelines.ymlexists (legacy-looking Node 10 build pipeline).Jenkinsfileexists (Node 20 + Docker build/push/deploy flow).Dockerfileexists (Node 20 Alpine runtime).- Repository contains mixed deployment artifacts; active production path should be treated as environment-dependent unless confirmed.
Local development workflow
npm installnpm run devnpm run lintnpm run build && npm startfor production-like verification