I spent the last couple of weeks building a website template for dental clinics, mostly to learn the Next.js 16 App Router properly: static rendering with next-intl , next/og , the new proxy.ts , Tailwind 4. The free version is MIT on GitHub, the full one has booking, a gallery and a second language.
Free lite (MIT): https://github.com/aivnaov123/lumen-dental-lite
Live demo of the full version: https://lumen-dental-demo-brown.vercel.app
Here are the five things that cost me the most time, so they don't cost you.
1. Every page silently became dynamic
With next-intl and a [locale] segment, I had generateStaticParams in the layout and assumed everything was prerendered.…