This Website
liveA static Next.js portfolio evolving, piece by piece, into an observed distributed application.
This repository is the engineering lab, not the production portfolio. The actual production site at aldhairmartinez.com lives in a separate repository, aldhairmartinez-portfolio — a deliberately simple, static Next.js site on Cloudflare Pages with a Cloudflare Worker for the contact form. This lab's own static frontend may be deployed through its own, separate Cloudflare Pages project at its default *.pages.dev URL — not the aldhairmartinez.com domain.
This site started as a static Next.js portfolio, but the plan for it goes further: it's meant to become a working example of how a simple frontend evolves into an observed, full-stack system — without pretending to be more than it currently is at each step.
What's here today
- Next.js (App Router) + TypeScript + Tailwind CSS, exported statically and served from this repo's own Cloudflare Pages project.
- Content (projects, writing) authored as MDX with typed frontmatter, so new entries don't require touching a component.
- Grafana Faro frontend instrumentation, live in this repo's own deployment and in local development — see
/observabilityfor the honest current-state breakdown. - A FastAPI backend, instrumented with OpenTelemetry, running locally in Docker — not hosted anywhere public, by design. It handles the contact form, sending real email through Resend to
hello@aldhairmartinez.com. - Grafana Alloy, also running locally, relays the backend's traces over OTLP to Grafana Cloud Tempo / Application Observability.
- One continuous distributed trace from browser to backend: Faro propagates a W3C trace context header on the contact form's request, and FastAPI continues that same trace rather than starting a new one.
- PostgreSQL, running locally alongside the backend, persists contact submissions, resume-download and project-view analytics, and deployment history — plain
psycopgwith a connection pool, no ORM yet. Every query appears as its own span in the same traces as the request that triggered it.
Where it's going
The backend, Alloy, and PostgreSQL are all real and working — they're just not production infrastructure yet. What's still ahead:
FastAPI + Alloy + PostgreSQL (Docker Desktop, local)
→ AWS-hosted backend infrastructure
→ Redis (once there's a real caching use case)
→ Kafka (once there's a real event-processing use case)
Google Workspace is also planned, to turn hello@aldhairmartinez.com from a forwarding address into a full mailbox. Kubernetes/EKS, Terraform, k6, and synthetic monitoring get introduced progressively as the backend's infrastructure footprint grows. The /observability page tracks what's implemented versus planned as that build-out happens.
Why build it this way
The easy version of a portfolio site is a static page that says what I've done. The more useful version is a system that demonstrates it — where the README, the architecture, and the telemetry are all things a visitor (or another engineer) can actually inspect.