Working on my portfolio allowed me to experiment with the JAMstack. I chose Next.js as the main framework / static site generator, Contentful as the CMS, and Netlify for the CI/CD pipeline and hosting.
I started looking at a few examples on the Next.js repository, and I ended up creating my own starter template. The final set of features for this project includes:
Framer Motion for custom page transitions
custom lazy-loading image component
self-hosted, lazily-loaded web fonts
Structured Data snippets on each page
additional HTTP headers for enhanced security (including CSP) and performance
light/dark theme switcher (based on CSS Custom Properties)