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

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