How this site is observed
This page is meant to stay accurate, not aspirational — it's updated as each piece actually ships, not before.
Pipeline
Current status of each stage in the long-term architecture.
Browser
liveNext.js / TypeScript / React, statically exported
Grafana Faro
integrated, not yet connectedFrontend instrumentation SDK, gated by env var
Python / FastAPI backend
plannedApplication layer for backend telemetry
PostgreSQL / Redis / Kafka
plannedData and messaging layer
OpenTelemetry / Grafana Alloy
plannedCollector and pipeline layer
Grafana Cloud
plannedMetrics, logs, traces, profiles backend
Implemented today
The site itself is statically exported and served from Cloudflare Pages' CDN.
The Grafana Faro Web SDK is integrated in the codebase, in components/analytics/FaroInit.tsx, and only initializes when NEXT_PUBLIC_FARO_URL is set. That variable is currently unset in production, so no frontend telemetry is being collected from real visitors yet.
Planned
- Connect Faro to a real Grafana Cloud Frontend Observability collector, enabling real user monitoring, frontend error tracking, and Core Web Vitals.
- Add a Python/FastAPI backend service as the first non-static piece of the stack.
- Introduce PostgreSQL, Redis, and eventually Kafka as backend state and messaging needs arise.
- Deploy an OpenTelemetry Collector (Grafana Alloy) to receive and route telemetry from both frontend and backend.
- Add synthetic monitoring for availability and deployment health.
- Add k6 load testing once there's a backend worth load testing.
- Introduce Docker, Kubernetes/EKS, and Terraform as the backend and infrastructure footprint grows.
Why build it this way
Most portfolio sites either skip observability entirely or fake it with a screenshot of someone else's dashboard. Neither is interesting. This page exists so the site's own telemetry story is something a visitor — or another engineer — can actually verify against the code, not just take on faith. No credentials or collector endpoints are hardcoded anywhere in this repository; everything above is configured through environment variables, and this page will be updated as each stage moves from planned to real.