Personal site built with Next.js (App Router). Includes a portfolio, a writing section driven by Markdown, and a small protected area for emergency info.
src/app: routes (App Router)src/components: shared UI and layout componentssrc/lib: server-side content and markdown helperscontent/writing: Markdown posts (frontmatter + body)public: static assets served as-isassets: design/source assets (psd, png)
yarn install
yarn devyarn buildDynatrace RUM is injected into every page via the agentless JavaScript tag.
Set NEXT_PUBLIC_DYNATRACE_SCRIPT_URL at build time (in Vercel for
production) to the src URL of the RUM JavaScript tag from the
application's agentless monitoring setup in Dynatrace. When the variable is
unset — e.g. locally or in CI — no RUM script is loaded.
Server-side traces are exported to Dynatrace via OpenTelemetry
(src/instrumentation.ts, using @vercel/otel). Set two variables (in
Vercel for production):
DYNATRACE_OTLP_ENDPOINT— the environment's OTLP base endpoint, e.g.https://{your-environment-id}.live.dynatrace.com/api/v2/otlpDYNATRACE_API_TOKEN— an access token with theopenTelemetryTrace.ingestscope (keep it secret — noNEXT_PUBLIC_prefix)
When either variable is unset, no tracing is registered.
Add a new file to content/writing with frontmatter fields used by the site:
slugtitledateexcerptcoverImagepreviewImage