lucagiardi.com — personal site

Role: Design & full-stack implementation

Personal portfolio: Next.js App Router, en/it/de, typed static content, SEO + feeds — calm linear UI, no CMS client.

lucagiardi.com — personal site

This is the site you are on — rebuilt as a static-first portfolio on Next.js 16, React 19, and Tailwind 4. Locales (en/it/de) run through next-intl; projects, experience, education, and blog posts live in typed TypeScript modules behind a single `@/content` access layer, so UI chrome stays in message files and a future headless CMS can replace getters without rewriting routes.

SEO is first-class: canonical + hreflang, Open Graph / Twitter cards, sitemap and robots, Person / WebSite / BlogPosting JSON-LD, RSS and JSON Feed, plus `llms.txt` and per-article Markdown for agents. Contact uses a server action + SMTP (addresses never rendered). The visual system keeps one accent (Lottie orange), a classic Lottie hero, shared `ProjectCard`s, and WCAG-minded landmarks — no WebGL, no scroll-jacking.

Highlights

  • Typed static content + `@/content` access layer (CMS-ready getters)
  • Three locales (en/it/de) with next-intl, canonical and hreflang
  • SEO pack: OG/Twitter, sitemap, robots, JSON-LD, RSS/JSON Feed, llms.txt
  • Contact form via server action + SMTP — mailbox never shown in the UI
  • Calm linear UI: Lottie hero, shared ProjectCard, orange accent `#ff6129`

Stack

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • next-intl
  • lottie-react
  • Headless UI