Scrum4Me/next.config.ts
Madhura68 ac11483c68 feat(ops): Sentry error-monitoring (v1-readiness item 2)
Vier config-files volgens Next.js 15+ conventie:
- instrumentation.ts (root) → koppelt server/edge config aan runtime-hook
- instrumentation-client.ts → client-init + onRouterTransitionStart
- sentry.server.config.ts → node-runtime
- sentry.edge.config.ts → edge-runtime (proxy.ts)

next.config.ts gewrapped met withSentryConfig:
- Source-map-upload ALLEEN als SENTRY_AUTH_TOKEN gezet is
- Tunnel /monitoring omzeilt ad-blockers (*.sentry.io)
- Silent buiten CI

SDK is no-op zonder NEXT_PUBLIC_SENTRY_DSN — geen network/overhead in
dev of bij ontbrekende creds. Sample-rates conservatief: errors 100%,
performance 10% in productie / 100% in dev. Geen Replay (privacy-review
nodig + overkill voor MVP). sendDefaultPii uit.

.env.example gedocumenteerd; architectuur-doc bijgewerkt met nieuwe
sleutelbeslissing en file-tree-aanvulling. v1-readiness #1 verschoven
naar 'done', #2 hiermee in flight.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 13:24:19 +02:00

27 lines
983 B
TypeScript

import type { NextConfig } from "next"
import { withSentryConfig } from "@sentry/nextjs"
import pkg from "./package.json"
const nextConfig: NextConfig = {
reactStrictMode: true,
serverExternalPackages: ['sharp'],
env: {
NEXT_PUBLIC_APP_VERSION: pkg.version,
NEXT_PUBLIC_BUILD_DATE: new Date().toISOString(),
},
}
// PBI/v1-readiness item 2: source-map-upload + tunnel pas actief als DSN +
// auth-token aanwezig zijn. Zonder env-vars draait `withSentryConfig` als
// no-op zodat lokale dev en CI zonder Sentry-creds blijft werken.
export default withSentryConfig(nextConfig, {
org: process.env.SENTRY_ORG,
project: process.env.SENTRY_PROJECT,
authToken: process.env.SENTRY_AUTH_TOKEN,
silent: !process.env.CI,
// Tunnel /monitoring → omzeilt ad-blockers die *.sentry.io blokkeren.
tunnelRoute: '/monitoring',
// Source-maps niet uploaden als auth-token ontbreekt.
sourcemaps: { disable: !process.env.SENTRY_AUTH_TOKEN },
disableLogger: true,
})