ahmet sekmen
En production

Portfolio v2

Ce site. Next.js 16 statique, dark mode, contact form via Resend, page veille avec ISR.

  • Next.js 16
  • TypeScript
  • Tailwind
  • Resend

Problème

Refondre l'ancien portfolio (React + Express + MongoDB + Docker, déployé sur VPS) vers un site statique simple à maintenir, hébergé gratuitement sur Vercel.

Contexte

Projet personnel. Domaine ahmetsekmen.fr (Ionos). En production depuis mai 2026.

Stack technique

  • Next.js 16.2.6 (App Router, Turbopack)
  • TypeScript
  • Tailwind v4 + Geist font
  • next-themes (toggle light/dark)
  • Zod v4 (validation form)
  • Resend (email)
  • rss-parser (page veille)
  • Vercel (hébergement gratuit)

Décisions techniques

  • Pas de CMS, contenu en TypeScript dans `src/lib/` : suffisant pour le volume, zéro infra, type-safe.
  • Pas de Cache Components Next.js 16 (`'use cache'` + `cacheLife`) : le modèle legacy `export const revalidate = N` est plus stable pour un portfolio simple.
  • ISR 6h sur la page veille plutôt que SSR : les feeds RSS changent peu et restent rapides à servir.
  • Resend plutôt que SMTP/Nodemailer/SES : free tier 100/jour suffit, intégration Server Action triviale.
  • lucide-react v1 a retiré les logos de marque pour raisons légales — SVG custom dans `src/components/icons.tsx` pour GitHub/LinkedIn.

Difficultés

  • Page veille avec 4 sources RSS (OpenAI, Simon Willison, Latent Space, Hugging Face) : `Promise.allSettled` pour qu'un feed mort ne casse pas la page.
  • Anthropic n'a pas de feed RSS officiel : Simon Willison couvre énormément Claude/MCP, palliatif efficace en attendant un scraper custom.

Résultats

  • En prod sur ahmetsekmen.fr, form de contact opérationnel (Resend mode test), responsive testé 375/768/1280px.
  • 5 pages : Accueil, Projets, À propos, Contact, Veille.