MDX blog content is powered by Fumadocs, with articles placed in the content/blog/ directory
shadcn-blog — Next.js Blog Template
By techwithanirudh
A Next.js blog template that uses shadcn/ui and Fumadocs to render MDX content, with integrated authentication, comments, newsletter emails, and a database.
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.
Built-in Better Auth authentication and comment system, with data stored in Neon PostgreSQL via Drizzle ORM
Newsletter emails are integrated through Resend, with an emails/ directory for email templates
Includes SEO outputs such as sitemap, RSS, and OpenGraph images
The interface is built with shadcn/ui components and Tailwind CSS, while Biome handles code checking and formatting
Template Details
This is a Next.js template for personal or team blogs. Content is stored as MDX files in the content/blog/ directory and parsed and rendered by Fumadocs, so the writing workflow is close to that of a static site, while pages are rendered through Next.js App Router routes.
Beyond article display, the template also includes user authentication (Better Auth), a comment system, newsletter emails (Resend), and a data layer based on Drizzle ORM and Neon PostgreSQL, with reserved SEO-related outputs such as sitemap, RSS, and OpenGraph images.
Before use, you need to prepare your own database connection, authentication secret, and email service API key, and copy .env.example to configure environment variables. The repository is released under the MIT license, but third-party assets such as demo images and fonts must be checked separately for licensing.
Is it right for your project?
Use Cases
- Building a personal technical blog with comments and newsletter features
- Projects that need an MDX writing workflow and want to keep Next.js App Router routing
- Secondary development of content sites based on shadcn/ui components
Suitable For
- Developers familiar with Next.js and React
- Teams willing to configure PostgreSQL, authentication, and email services themselves
- Projects that need a mixed content format of blog and documentation
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires Node.js 20+ and pnpm 10.7.0; first run pnpm install
- 2
Copy .env.example to .env and fill in DATABASE_URL, BETTER_AUTH_SECRET, BETTER_AUTH_URL, and RESEND_API_KEY
- 3
Use pnpm db:push to sync the database schema, and pnpm dev to start the local development server
- 4
Site information, navigation, and social links are modified in the corresponding files under src/constants/
- 5
The code is MIT licensed, but third-party assets such as demo images, fonts, and icons must be confirmed separately for licensing
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version of the public repository under the MIT license; the free scope is the code of this version and does not mean that 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 complete 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
- Using this template requires providing your own Neon PostgreSQL database connection string; you must register and configure an external database service, otherwise it cannot run.
- The newsletter email feature depends on the Resend service; you must apply for an API key yourself and bear the corresponding service costs, otherwise email-related features are unavailable.
- The authentication feature requires generating and configuring a BETTER_AUTH_SECRET key yourself, which is a mandatory configuration item before deployment.
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domain, hosting, database, payment, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
Required variables: - `DATABASE_URL`: Neon PostgreSQL connection string
Original README
- `RESEND_API_KEY`: For newsletter emails
Original README
https://github.com/techwithanirudh/shadcn-blog/blob/main/LICENSEhttps://github.com/techwithanirudh/shadcn-blog/blob/main/README.md- `BETTER_AUTH_SECRET`: Auth secret key
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-03. 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
- More documented · 92 / 100
- Technologies
- Next.js · React
- Website type
- Blog · Documentation
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
- 2026-01-25
- Screenshot last checked
- 2026-10-03
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.
Automatically checked against source and license rules; no manual editorial review.
Inspect the recorded source material
SHA-256: d16b9612022168a7fef42bc026d1f91d3a2f40ef5e83aa0413f5068714706ccd
2026-10-03T00:42:39.631Z
Source file / repository# Modern Blog Template A modern, fully-featured blog template built with the latest web technologies. Includes user authentication, comments, newsletter signup, and more. ## Features - **Modern Stack**: Next.js 16, React 19, TypeScript 5.9 - **Content Management**: MDX-powered blog posts with Fumadocs - **User Features**: Authentication with Better Auth, commenting system - **Developer Experience**: Biome for linting/formatting, TypeScript, Tailwind CSS - **SEO Optimized**: Sitemap, RSS feed, OpenGraph images - **Database**: Drizzle ORM with Neon PostgreSQL - **Email**: Newsletter integration with Resend - **Styling**: Tailwind CSS with shadcn/ui components ## Getting Started ### Prerequisites - Node.js 20+ (see `.nvmrc`) - pnpm 10.7.0 ### Installation ```bash pnpm install ``` ### Environment Setup Copy `.env.example` to `.env` and fill in your environment variables: ```bash cp .env.example .env ``` Required variables: - `DATABASE_URL`: Neon PostgreSQL connection string - `BETTER_AUTH_SECRET`: Auth secret key - `BETTER_AUTH_URL`: Your app URL - `RESEND_API_KEY`: For newsletter emails ### Development ```bash pnpm dev ``` Open [http://localhost:3000](http://localhost:3000) to see your blog. ## Available Commands - `pnpm dev`: Start development server - `pnpm build`: Build for production - `pnpm start`: Start production server - `pnpm check`: Run Biome linter - `pnpm check:write`: Auto-fix linting issues - `pnpm typecheck`: Run TypeScript type checking - `pnpm db:push`: Push database schema changes - `pnpm db:studio`: Open Drizzle Studio ## Project Structure ``` ├── content/ │ └── blog/ # Blog posts (MDX) ├── emails/ # Email templates ├── public/ # Static assets ├── scripts/ # Build scripts ├── src/ │ ├── app/ # Next.js app directory │ │ ├── (home)/ # Main site routes │ │ │ └── (blog)/ # Blog routes │ │ ├── (auth)/ # Authentication pages │ │ ├── (llms)/ # LLM-readable content │ │ └── api/ # API routes │ ├── components/ # React components │ │ ├── ui/ # shadcn/ui components │ │ ├── sections/ # Layout sections │ │ └── blog/ # Blog-specific components │ ├── constants/ # App constants │ ├── lib/ # Utilities and helpers │ ├── server/ # Server-side code │ │ ├── auth/ # Authentication │ │ ├── comments/ # Comment system │ │ └── db/ # Database │ └── styles/ # Global styles └── source.config.ts # Fumadocs configuration ``` ## Writing Blog Posts Create a new MDX file in `content/blog/`: ```mdx --- title: Your Post Title description: A brief description date: 2026-01-24 author: Your Name tags: [nextjs, react, typescript] image: /images/blog/cover.jpg --- Your content here... ``` ## Customization 1. **Site Configuration**: Update `src/constants/site.ts` 2. **Navigation**: Edit `src/constants/navigation/links.tsx` 3. **Social Links**: Update `src/constants/navigation/social.tsx` 4. **Styling**: Modify `src/styles/globals.css` and Tailwind config ## Technologies - **Framework**: [Next.js 16](https://nextjs.org/) - **React**: [React 19](https://react.dev/) - **TypeScript**: [TypeScript 5.9](https://www.typescriptlang.org/) - **Styling**: [Tailwind CSS 4](https://tailwindcss.com/) - **UI Components**: [shadcn/ui](https://ui.shadcn.com/) - **Content**: [Fumadocs](https://fumadocs.vercel.app/) - **Database**: [Drizzle ORM](https://orm.drizzle.team/) + [Neon](https://neon.tech/) - **Authentication**: [Better Auth](https://www.better-auth.com/) - **Email**: [Resend](https://resend.com/) - **Linting**: [Biome](https://biomejs.dev/) ## License MIT
Explore similar templates
Compare previews and descriptions within the same stack and category.

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

Nextjs-tailwindcss-blog-template
A personal blog template built with Next.js and Tailwind CSS, using Velite to process Markdown content. It includes home, about, contact and article pages, with a demo site and a companion YouTube tutorial.
Next.js · Blog

nextjs-prisma-boilerplate
A production-grade full stack starter built on Next.js 12, React 18, Prisma 4, and Postgres, with layered frontend and backend architecture, Jest and Cypress testing, next-auth authentication, Docker and Gitpod development environments, GitHub Actions CI/CD, and Traefik-based production deployment.
Next.js · Documentation

Next-js-Blog-Boilerplate
A blog starter built on Next.js 12 and Tailwind CSS 3, integrating TypeScript, ESLint, Prettier, and PostCSS.
Next.js · Blog

nextjs-blog-theme
A Next.js 15 and Tailwind CSS 4.x blog starter by Netlify, designed by Bejamas, with MDX support, dark/light theme switching, and environment-variable configuration. It includes a visual setup wizard for deploying to Netlify and manages content via local .mdx files.
Next.js · Blog

blog
A personal blog forked from Timlrx's tailwind-nextjs-starter-blog, built with Next.js, React, and Tailwind CSS. Content is stored as Markdown/MDX under data/, with site, author, navigation, and project data in separate files.
Next.js · Blog
