Write with MDX, embedding JSX and custom React components directly in Markdown documents
tailwind-nextjs-starter-blog — Next.js Portfolio Template
By fu4303
A static blog and portfolio starter template built on Next.js and Tailwind CSS, using MDX for writing, with built-in tag pages, project pages, RSS, and sitemap, as an alternative to Jekyll or Hugo personal blogs.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Frontmatter follows Hugo field conventions, supporting title, date, tags, lastmod, draft, summary, and images
Each tag automatically generates a separate page, with built-in project showcase page, RSS feed, and sitemap
Integrates KaTeX math rendering and rehype-prism server-side code highlighting
Site configuration, navigation links, project data, and theme styles are centralized in the data and css directories for easy replacement
Provides scripts/compose.js to generate an article skeleton with prefilled frontmatter
Template Details
This is a blog starter template aimed at technical writers; the repository is forked by fu4303 from timlrx's tailwind-nextjs-starter-blog. It combines Next.js static generation with the Tailwind CSS styling system. Content is written as MDX or Markdown files stored in the data/blog directory, with frontmatter following Hugo's field conventions and supporting seven fields: title, date, tags, lastmod, draft, summary, and images. The template includes tag pages (each tag generates a separate page), a project showcase page, RSS feed, and sitemap, and integrates KaTeX math rendering, rehype-prism server-side code highlighting, and next/image image optimization.
Site information is centralized in data/siteMetadata.json, navigation links in data/headerNavLinks.js, project card data in data/projectsData.js, and the overall appearance can be adjusted via css/tailwind.css. components/MDXComponents.js allows custom JSX or React components to be called directly in Markdown, and components/social-icons supports extending social icons with Simple Icons SVGs. scripts/compose.js can generate an article skeleton with prefilled frontmatter.
For deployment, the README uses Vercel as the primary path; if switching to static hosting such as Netlify, GitHub Pages, or Firebase, because the template uses next/image, you need to configure an additional image optimization service (such as Imgix, Cloudinary, or Akamai) or replace next/image with a regular img tag. The repository is under the MIT license, free to use, modify, and distribute, but third-party assets such as demo images, fonts, and icons, as well as the quotas and charges of external services like Firebase, must be verified separately.
Is it right for your project?
Use Cases
- Migrating an existing Jekyll or Hugo personal blog to the Next.js stack
- Building a static blog with Markdown/MDX as the content source for technical writing
- Adding a project showcase page alongside the blog for use as a personal portfolio
- Writing technical tutorial articles that include math formulas or code blocks
Suitable For
- Developers accustomed to writing in Markdown or MDX who want content managed as files
- Personal site authors who need basic blog structure such as tag archives, RSS, and sitemap
- Users willing to configure an image optimization service themselves or adjust how next/image is used
- Teams that accept Vercel as the primary deployment path or can handle other static hosting configurations themselves
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
The README's quick start uses npx degit to pull the repository, then modify siteMetadata.json, projectsData.js, headerNavLinks.js in order and add articles
- 2
Run npm start or npm run dev for local development, previewing at localhost:3000 by default
- 3
Articles go in the data/blog directory; use node ./scripts/compose.js "article-name" .md to generate a skeleton with prefilled frontmatter
- 4
When deploying to Netlify, GitHub Pages, or Firebase, configure an alternative image optimization service for next/image or switch to a regular img tag
- 5
The repository is MIT licensed; retain the copyright and license notice when distributing; third-party assets and external services require separate verification of licensing and fees
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version's code are permitted.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- The README mentions Firebase integration; before enabling related dynamic features, you must configure it yourself and verify Firebase's quotas and charges.
- Demo images, fonts, icons, and other third-party assets must be verified under their respective licenses; they cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur separate charges.
- When deploying to non-Vercel static hosting such as Netlify, GitHub Pages, or Firebase, because the template uses next/image, you must additionally configure an image optimization service (such as Imgix, Cloudinary, or Akamai) or replace next/image with a regular img tag; otherwise, direct deployment is not possible.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
https://github.com/fu4303/tailwind-nextjs-starter-blog/blob/master/LICENSEhttps://github.com/fu4303/tailwind-nextjs-starter-blog/blob/master/README.mdAs the template uses `next/image` for image optimization, additional configurations has to be made to deploy on other popular static hosting websites like [Netlify](https://www.netlify.com/) or [Github Pages](https://pages.github.com/). An alternative image optimization provider such as Imgix, Cloudinary or Akamai has to be used. Alternatively, replace the `next/image` component with a standard `<img>` tag.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-13. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- Partly documented · 70 / 100
- Technologies
- Next.js · Hugo · Jekyll · React
- Website type
- Portfolio · Blog · Starter
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2021-04-26
- Screenshot last checked
- 2026-10-13
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-13
Inspect the recorded source material
SHA-256: 84e80d295ef07f14f7be59afa29d51c130017bea8c03e51acc83c62e29944ee7
2026-10-13T07:43:59.012Z
Source file / repository # Tailwind Nextjs Starter Blog [](https://vercel.com/new/git/external?repository-url=https://github.com/timlrx/tailwind-nextjs-starter-blog) This is a [Next.js](https://nextjs.org/), [Tailwind CSS](https://tailwindcss.com/) blogging starter template. Comes out of the box configured with the latest technologies to make technical writing a breeze. Easily configurable and customizable. Perfect as a replacement to existing Jekyll and Hugo individual blogs. ## Examples - [Demo Blog](https://tailwind-nextjs-starter-blog.vercel.app/) - this repo - [My personal blog](https://www.timlrx.com) - modified to auto-generate blog posts with dates Using the template? Happy to accept any PR with modifications made e.g. sub-paths, localization or multiple authors ## Motivation I wanted to port my existing blog to Nextjs and Tailwind CSS but there was no easy out of the box template to use so I decided to create one. It is inspired by [Lee Robinson's blog](https://github.com/leerob/leerob.io), but focuses only on static site generation. Design is adapted from [Tailwindlabs blog](https://github.com/tailwindlabs/blog.tailwindcss.com). I wanted it to be nearly as feature-rich as popular blogging templates like [beautiful-jekyll](https://github.com/daattali/beautiful-jekyll) and [Hugo Academic](https://github.com/wowchemy/wowchemy-hugo-modules) but with the best of React's ecosystem and current web development's best practices. ## Features - Easy styling customization with [Tailwind 2.0](https://blog.tailwindcss.com/tailwindcss-v2) - Near perfect lighthouse score - [Lighthouse report](https://www.webpagetest.org/result/210111_DiC1_08f3670c3430bf4a9b76fc3b927716c5/) - Lightweight, 43kB first load JS, uses Preact in production build - Mobile-friendly view - Light and dark theme - [MDX - write JSX in markdown documents!](https://mdxjs.com/) - Server-side syntax highlighting with [rehype-prism](https://github.com/mapbox/rehype-prism) - Math display supported via [KaTeX](https://katex.org/) - Automatic image optimization via [next/image](https://nextjs.org/docs/basic-features/image-optimization) - Flexible data retrieval with [next-mdx-remote](https://github.com/hashicorp/next-mdx-remote) - Support for tags - each unique tag will be its own page - Projects page - SEO friendly with RSS feed, sitemaps and more! ## Sample posts - [A markdown guide](https://tailwind-nextjs-starter-blog.vercel.app/blog/github-markdown-guide) - [Learn more about images in Next.js](https://tailwind-nextjs-starter-blog.vercel.app/blog/guide-to-using-images-in-nextjs) - [A tour of math typesetting](https://tailwind-nextjs-starter-blog.vercel.app/blog/deriving-ols-estimator) - [Simple MDX image grid](https://tailwind-nextjs-starter-blog.vercel.app/blog/pictures-of-canada) - [Example of long prose](https://tailwind-nextjs-starter-blog.vercel.app/blog/the-time-machine) ## Quick Start Guide 1. `npx degit https://github.com/timlrx/tailwind-nextjs-starter-blog.git` 2. Personalize `siteMetadata.json` 3. Modify `projectsData.js` 4. Modify `headerNavLinks.js` to customize navigation links 5. Add blog posts 6. Deploy on Vercel ## Development First, run the development server: ```bash npm start # or npm run dev ``` Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file. ## Extend / Customize `data/siteMetadata.json` - contains most of the site related information which should be modified for a user's need. `data/projectsData.js` - data used to generate styled card in projects page. `data/headerNavLinks.js` - navigation links. `data/logo.svg` - replace with your own logo. `data/blog` - replace with your own blog posts. `public/static` - store assets such as images and favicons. `css/tailwind.css` - contains the tailwind stylesheet which can be modified to change the overall look and feel of the site. `components/social-icons` - to add other icons, simply copy an svg file from [Simple Icons](https://simpleicons.org/) and map them in `index.js`. Other icons uses [heroicons](https://heroicons.com/). `components/MDXComponents.js` - pass your own JSX code or React component by specifying it over here. You can then call them directly in the `.mdx` or `.md` file. By default, a custom link and image component is passed. `layouts` - main templates used in pages. `pages` - pages to route to. Read the [Next.js documentation](https://nextjs.org/docs) for more information ## Post ### Frontmatter Frontmatter follows [Hugo's standards](https://gohugo.io/content-management/front-matter/). Currently 7 fields are supported. ``` title (required) date (required) tags (required, can be empty array) lastmod (optional) draft (optional) summary (optional) images (optional, if none provided defaults to socialBanner in siteMetadata config) ``` Here's an example of a post's frontmatter: ``` --- title: 'Introducing Tailwind Nexjs Starter Blog' date: '2021-01-12' lastmod: '2021-01-18' tags: ['next-js', 'tailwind', 'guide'] draft: false summary: 'Looking for a performant, out of the box template, with all the best in web technology to support your blogging needs? Checkout the Tailwind Nextjs Starter Blog template.' images: ['/static/images/canada/mountains.jpg', '/static/images/canada/toronto.jpg'] --- ``` ### Compose `scripts/compose.js` can be used to easily generate a post with pre-filled front matter. The first argument is the name of the post and the second optional argument is the extension (default to .mdx) Example code to generate the post called "My First Post" in markdown format ``` node ./scripts/compose.js "My First Post" .md ``` This will generate `./data/blog/my-first-post.md` with pre-filled front matter. ## Deploy **Vercel** The easiest way to deploy the template is to use the [Vercel Platform](https://vercel.com) from the creators of Next.js. Check out the [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. **Netlify / Github Pages / Firebase etc.** As the template uses `next/image` for image optimization, additional configurations has to be made to deploy on other popular static hosting websites like [Netlify](https://www.netlify.com/) or [Github Pages](https://pages.github.com/). An alternative image optimization provider such as Imgix, Cloudinary or Akamai has to be used. Alternatively, replace the `next/image` component with a standard `<img>` tag. See [`next/image` documentation](https://nextjs.org/docs/basic-features/image-optimization) for more details.
Explore similar templates
Compare previews and descriptions within the same stack and category.

Next.js SaaS Starter
The official Next.js SaaS starter template, integrating email/password authentication, Stripe Checkout subscriptions, a dashboard with user/team CRUD, basic Owner/Member RBAC, and activity logging.
Next.js · SaaS

Next.js Commerce
Vercel's officially maintained Next.js App Router ecommerce starter with deep Shopify integration, offering a complete product catalog, cart, and checkout flow. Core logic is modular for swapping backends, and community provider versions exist for BigCommerce, Medusa, and Saleor.
Next.js · E-commerce

Next-js-Boilerplate
A developer-first Next.js 16 starter with Tailwind CSS 4 and TypeScript, supporting both App Router and Page Router.
Next.js · Starter

tailwind-nextjs-starter-blog
A Next.js and Tailwind CSS blog starter template using Contentlayer for Markdown/MDX, with built-in SEO, code highlighting, and tags. It targets personal technical blogs and migration from Jekyll/Hugo to React, and supports one-click Vercel deployment.
Next.js · Blog

next-forge
next-forge is a Turborepo-based Next.js template maintained by Vercel, positioned as a starting point for SaaS products.
Next.js · Starter

SaaS-Boilerplate
SaaS-Boilerplate is an open-source SaaS starter template built with Next.js App Router, React 19, TypeScript, Tailwind CSS, and Shadcn UI.
Next.js · SaaS
