LIVE2026

Personal site, blog and portfolio

marcoscoelho.pt

This site is the portfolio of portfolios — it's the project that documents all the other projects. The design constraint was deliberate: no templates, no UI kit, everything built from primitives. The goal was a site that feels like a senior engineer's environment — editorial, precise, technically credible. The content engine is Sanity v5 with a custom schema for posts, categories, and SEO metadata. Content editors (just me, for now) write in the Sanity Studio, hit Publish, and the page is live on the edge within 3 seconds thanks to Vercel's on-demand ISR triggered by a Sanity webhook.

marcoscoelho.pt site screenshot

<3s

Publish to Edge

via on-demand ISR + webhook

100

Lighthouse

performance score

Sanity v5

CMS

with real-time preview

Content Pipeline

The pipeline is: write in Sanity Studio → hit Publish → Sanity fires a webhook → Next.js revalidates the affected path → Vercel serves the fresh page from the edge. No full rebuild, no waiting. The revalidation is path-scoped, so publishing one post only re-renders that post's page — not the entire site.

TypeScriptOn-demand ISR webhook — revalidates only the changed path
// src/app/api/revalidate/route.ts
export async function POST(req: Request) {
  const { slug, type } = await req.json()

  if (type === 'post') {
    revalidatePath(`/blog/${slug}`)
    revalidatePath('/blog')
    revalidatePath('/')
  }

  return Response.json({ revalidated: true, slug })
}

Design Philosophy

The design is intentionally counter-trend — no hero gradients, no floating blobs, no SaaS marketing patterns. The aesthetic is closer to a technical editorial magazine: large type, long reading lines, generous whitespace, and a dark palette with almost no colour. The only colour used purposefully is a single blue for interactive elements and a muted gold for emphasis.

Next.js 16App Router, Server Components, on-demand ISR, API routes
Sanity v5Headless CMS, GROQ queries, Portable Text, real-time preview
SupabaseNewsletter signups, site metadata, transactional data
Tailwind CSS 4Utility-first styling with custom design tokens
VercelEdge deployment, webhook-triggered revalidation, analytics
Sanity Studio content editor for marcoscoelho.pt

Sanity Studio content editor for marcoscoelho.pt