Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
Production-ready portfolio starter with Next.js, Strapi CMS, and Tailwind CSS, featuring SSG, SEO, and a secure contact form.
Next.js, Strapi Portfolio Starter is an open-source monorepo template that combines a Next.js frontend with a Strapi CMS backend to produce a statically generated portfolio website with projects, blog, and a validated contact form.
The starter is a monorepo with two applications: a Next.js site in the next directory and a Strapi CMS in the strapi directory. It takes content managed through Strapi (homepage sections, projects, blog posts, contact info) and outputs pre-rendered HTML pages at build time. The project is created by Marios Sofokleous, released under the MIT license, and its demo reports PageSpeed scores of 98–100 across mobile and desktop.
backup/data.tar.gz with a single command.sizes attributes reduce layout shift and bandwidth.tailwind.config.js and generate a primary scale from 50 to 950 with tools like UI Colors.The setup runs through npm scripts: clone the repo, run npm run setup to install both workspaces, restore the Strapi configuration dump, optionally import demo data, start Strapi on port 1337, generate two API tokens (read-only and form-creation), then start Next.js on port 3000. For production, the docs walk through deploying Strapi and Next.js with Coolify on a Hetzner Cloud VPS, including rsync of backup directories and transfer-token migration.
Pros — High PageSpeed scores (98+ mobile, 100 desktop), built-in SEO schemas and sitemap, security features like honeypot and rate limiting, and a documented production path using Coolify.
Cons — The roadmap lists missing features: no RSS feed, no CAPTCHA on the contact form, no pagination for blog/projects pages, and no file-type restrictions on media uploads.
Yes, the repo is released under the MIT license, so you can use and modify it freely, including for commercial projects.
You need Node.js and npm. The npm run setup command installs dependencies for both the Next.js and Strapi workspaces. Strapi runs at localhost:1337 and Next.js at localhost:3000 in development.
Yes. A Strapi configuration dump and a demo data archive are included in the backup directory. You can restore the config with npm run strapi config:restore and import content with npm run strapi import.
The contact form uses a honeypot field to catch bots, Zod validation on both client and server, and a rate-limiting Strapi middleware to block abusive API traffic.
Yes. The production guide uses Coolify on a Hetzner VPS, but because the project is a standard Next.js and Strapi app, it can also be deployed on managed services like Vercel or Netlify for the frontend and any Node.js host for Strapi.
