What you’ll build
A modern content site and blog where editors create and manage articles through a headless CMS, readers browse posts by category, and each author has a dedicated profile page. The finished product includes full SEO metadata, a newsletter signup form, site-wide search, analytics tracking, and one-click deployment to Netlify. By the end of this recipe you will have a production-ready blog that you can customize, rebrand, and launch as your own publication.Tech stack
| Service | Role |
|---|---|
| Next.js + TypeScript | Frontend framework with static generation and server-side rendering |
| Strapi | Headless CMS for managing articles, categories, and authors |
| Supabase | Comment system, newsletter subscribers, and user data |
| Google Analytics | Traffic analytics, page views, and audience insights |
| Netlify | Production deployment, hosting, and CDN |
Architecture overview
Here is how the pieces connect:- An editor creates a new article in Strapi, assigning a category, author, featured image, and SEO metadata.
- When the article is published, the Next.js frontend fetches the content from the Strapi API and renders it as a static page.
- Readers can browse by category or use the search bar to find articles by title or keyword.
- Each article page includes an author card that links to the author’s profile, showing their bio and all published posts.
- Readers can subscribe to the newsletter via a signup form powered by Supabase. Subscriber data is stored securely for future email campaigns.
- Google Analytics tracks page views, popular articles, and reader engagement across the site.
- The entire site is deployed to Netlify with automatic rebuilds triggered by CMS content changes.
How long does it take?
| Phase | What you’re building | Estimated time |
|---|---|---|
| Setup | Project, Strapi CMS | 5-10 minutes |
| Content | Articles, categories, authors | 10-15 minutes |
| Features | Search, newsletter | 5-10 minutes |
| Launch | Analytics, deploy | 5 minutes |
| Total | Complete content site | 25-40 minutes |
Step-by-step build
Start a new project
Open rocket.new and create a new project. Give Rocket a detailed description of the blog so it scaffolds the right pages, layout, and navigation from the start.
Connect Strapi as your CMS
Go to Integrations in your Rocket project and connect your Strapi instance. Then ask Rocket to set up the content types and connect them to the frontend.
Rocket handles the Strapi connection through the integrations panel. Your API URL and tokens are encrypted and stored securely, so you never need to copy them manually.
Build article pages
Now create the individual article pages with rich content rendering, author attribution, and SEO metadata.
Add categories and author pages
Build the category filter system and dedicated author profile pages so readers can explore content by topic or writer.
Add newsletter signup
Add a newsletter subscription form so readers can sign up for updates. Store subscribers in Supabase for future email campaigns.
You can later connect a service like Mailchimp, Brevo, or Resend to send automated email campaigns to your subscriber list.
Set up analytics
Connect Google Analytics to track page views, popular articles, and reader behavior.
Customization ideas
Once the base blog is running, here are ways to extend it.Add a comment system
Add a comment system
Let readers leave comments on articles. Use Supabase to store comments with moderation support so you can approve or remove comments before they appear.
Add dark mode
Add dark mode
Give readers the option to switch between light and dark themes. Persist the preference in localStorage so it carries across visits.
Add an RSS feed
Add an RSS feed
Generate an RSS feed so readers can subscribe using their favorite feed reader and get notified about new articles automatically.
Add social sharing buttons
Add social sharing buttons
Add related posts
Add related posts
Troubleshooting
Strapi content not appearing on the site
Strapi content not appearing on the site
Symptoms: The blog loads but articles are missing or pages show empty content.Fix:
- Confirm that your Strapi instance is running and accessible from the URL configured in your environment variables.
- Check that articles are set to Published in Strapi, not Draft. Draft content is not returned by the public API by default.
- Verify that the API permissions in Strapi allow public read access. Go to Settings > Roles > Public and enable
findandfindOnefor your content types. - Test the Strapi API directly in your browser by visiting
your-strapi-url/api/articlesto confirm data is returned. - If using incremental static regeneration, the page may take up to the configured revalidation period to show new content. Try a manual Netlify rebuild.
Images loading slowly or not displaying
Images loading slowly or not displaying
Symptoms: Featured images take too long to load, appear broken, or show a placeholder.Fix:
- If images are hosted in Strapi, make sure the Strapi media library is accessible from your frontend. Check that the media URL in your environment variables includes the correct protocol and domain.
- Add
next/imageoptimization by configuring the Strapi domain innext.config.jsunderimages.remotePatterns. - Serve images in modern formats (WebP or AVIF) using the Next.js Image component for automatic optimization.
- For large hero images, add a blurred placeholder using the
blurDataURLprop on the Next.js Image component.
SEO metadata not showing in search results or social previews
SEO metadata not showing in search results or social previews
What’s next?
Build a SaaS app
Follow the SaaS recipe to add subscription billing, team workspaces, and admin dashboards.
Build a booking app
Create a scheduling app with calendar integration, payments, and email confirmations.
Build a lead generation site
Build a landing page with lead capture forms, email nurture sequences, and CRM tracking.

