Forked from Timlrx's tailwind-nextjs-starter-blog template
blog (pycoder2000) — Next.js Blog Template
By pycoder2000
A personal blog forked from Timlrx's tailwind-nextjs-starter-blog template, built with Next.js, React, and Tailwind CSS, used by the author to host their articles and portfolio.
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 with Next.js, React, and Tailwind CSS
Posts are stored as Markdown/MDX files in the data/blog directory
Site information, author, navigation, and project data are centralized in separate files under the data directory
Provides a scripts/compose.js script that generates new posts with front matter through interactive prompts
The README lists integrations such as Prisma, PlanetScale, NextAuth.js, Email Octopus, and giscus, along with corresponding environment variables
Template Details
This is a personal blog project. In the README, the author states it is used to host their personal portfolio, with the live site at musing.vercel.app. The project is forked from Timothy Lin's tailwind-nextjs-starter-blog template, uses Next.js, React, and Tailwind CSS, and is deployed on Vercel.
Content is stored as Markdown/MDX files in the data/blog directory. Author information is in data/authors/default.md, site information is centralized in data/siteMetadata.js, project card data is in data/projectsData.js, and navigation links are in data/headerNavLinks.js. The project also provides a scripts/compose.js script that generates new posts with front matter through interactive prompts.
The tech stack listed in the README also includes Prisma, PlanetScale, NextAuth.js, Email Octopus, and giscus comments, along with corresponding environment variable examples (such as DATABASE_URL, OAUTH_CLIENT_KEY, EMAILOCTOPUS_API_KEY, NEXT_PUBLIC_GISCUS_REPO, etc.), indicating that the repository contains integration configurations beyond a purely static blog.
Note: The README's installation and build sections contain obvious typos. The development server command is written as npm start, while the production build section writes npm run dev and the preview writes npm run serve. In actual use, refer to the script definitions in the project's package.json. In addition, the "Comment" line in the README is mistakenly written as Tailwindcss; it should be giscus.
Is it right for your project?
Use Cases
- Use as a personal blog or portfolio site; replace the content files under the data directory to publish your own posts
- Use as a reference project for learning how to implement a blog with Next.js + Tailwind CSS
- Deploy on Vercel and bind a custom domain
- Refer to its MDX content organization and custom component approach in components/MDXComponents.js
Suitable For
- Personal bloggers who want to manage post content with Markdown/MDX
- Developers familiar with React and Next.js who are willing to modify the source code directly
- Developers who need reference configurations for integrations such as comments, subscriptions, and authentication
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
The commands in the README contain typos: the development server is written as npm start, the production build as npm run dev, and the preview as npm run serve. Please refer to the scripts in package.json.
- 2
You need to create .env.local and fill in environment variables according to .env.example, including configurations related to giscus, Email Octopus, database, OAuth, Twitter, and Spotify
- 3
The README recommends using NVM to install and switch to the Node version specified by the project
- 4
Customization entry points include data/siteMetadata.js, data/authors/default.md, data/projectsData.js, data/headerNavLinks.js, and data/logo.svg
- 5
If using a comment solution other than giscus or an analytics service, you need to adjust the content security policy in next.config.js
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 that external services or third-party assets are free.
Must comply with when using
- You are allowed to use, modify, commercialize, and distribute the code of this version for free.
- 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
- Running the project requires creating .env.local and configuring environment variables, including keys and credentials for third-party services such as giscus comments, Email Octopus subscriptions, database, OAuth, Twitter, and Spotify. You need to register for the corresponding services and obtain API keys yourself.
- The default comment solution is giscus; if you switch to another comment or analytics service, you need to modify the content security policy in next.config.js yourself.
- This project is forked from Timothy Lin's tailwind-nextjs-starter-blog template. When using it, you need to retain and comply with the upstream template's attribution and license requirements.
- The README recommends deploying to the Vercel platform; using that platform may involve account registration and fee terms for third-party services, which you need to verify yourself.
- Demo images, fonts, icons, and other third-party assets need to be checked against their respective licenses; you cannot judge based solely on the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
Create a .env.local and following the .env.example input some environment variables so that can run normally.
Original README
Modify the content security policy in `next.config.js` if you want to use any analytics provider or a commenting solution other than giscus.
Original README
The original template is designed by <a href="https://github.com/timlrx" target="_blank">Timothy Lin</a> and can be found
Original README
https://github.com/pycoder2000/blog/blob/master/LICENSEhttps://github.com/pycoder2000/blog/blob/master/README.mdThe easiest way to deploy the template is to use the [Vercel Platform](https://vercel.com) from the creators of Next.js.
Original README
Compiled by DeepSeek based on repository license and README ·2026-09-30. 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 · 90 / 100
- Technologies
- Next.js · React
- Website type
- Blog
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
- 2025-04-05
- Screenshot last checked
- 2026-09-30
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: 9a9db5628085fde320c4fad5545bfd4eee3d267b8a3d3b5f388b0b350f6ccb89
2026-09-30T08:12:34.551Z
Source file / repository<div align="center"> <img alt="Logo" src="https://github.com/pycoder2000/blog/raw/master/public/static/images/logo.png" width="100" /> </div> <h1 align="center"> Personal Blog - <em>Mere Musings</em> </h1> <p align="center"> This is my personal portfolio blog hosted <a href="https://musing.vercel.app/" target="_blank">here</a> built with <a href="https://nextjs.org/" target="_blank">Next.js</a>, <a href="https://tailwindcss.com/" target="_blank">Tailwind CSS</a> and hosted with <a href="https://www.vercel.com/" target="_blank">Vercel</a>. </p> <p align="center"> The original template is designed by <a href="https://github.com/timlrx" target="_blank">Timothy Lin</a> and can be found <a href="https://github.com/timlrx/tailwind-nextjs-starter-blog" target="_blank">here</a>. The demo for the same can be found <a href="https://tailwind-nextjs-starter-blog.vercel.app/" target="_blank">here</a>. </p> <div align="center"> <a href="https://musing.vercel.app/" target="blank" ></a> <a href="https://github.com/pycoder2000/blog/issues/new?assignees=&labels=bug&template=bug_report.md&title="></a> <a href="https://github.com/pycoder2000/blog/issues/new?assignees=&labels=&template=feature_request.md&title="></a> <a href="https://github.com/pycoder2000/blog/fork"></a> <img src="https://img.shields.io/github/stars/pycoder2000/blog?color=darkgreen&style=for-the-badge"> </div>  <div align="center">       </div> ## 🛠 Installation & Set Up 1. Clone this repository ```sh gh repo fork repository --clone=true ``` 2. Change directories ```sh cd blog ``` 3. Install and use the correct version of Node using [NVM](https://github.com/nvm-sh/nvm) ```sh nvm install ``` 4. Install dependencies ```sh npm install ``` 5. Start the development server ```sh npm start ``` 6. Create a .env.local and following the .env.example input some environment variables so that can run normally. ```txt NEXT_PUBLIC_GISCUS_REPO= NEXT_PUBLIC_GISCUS_REPOSITORY_ID= NEXT_PUBLIC_GISCUS_CATEGORY= NEXT_PUBLIC_GISCUS_CATEGORY_ID= EMAILOCTOPUS_API_URL= EMAILOCTOPUS_API_KEY= EMAILOCTOPUS_LIST_ID= DATABASE_URL= OAUTH_CLIENT_KEY= OAUTH_CLIENT_SECRET= NEXTAUTH_URL= SECRET= TWITTER_API_KEY= TWITTER_BEARER_TOKEN= SPOTIFY_CLIENT_ID = SPOTIFY_CLIENT_SECRET = SPOTIFY_REFRESH_TOKEN = ``` ## 🏗️ Building and Running for Production 1. Generate a full static production build ```sh npm run dev ``` 2. Preview the site as it will appear once deployed ```sh npm run serve ``` 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. ## 👨🎨️ Customization 1. Personalize `siteMetadata.js` (site related information) 2. Modify the content security policy in `next.config.js` if you want to use any analytics provider or a commenting solution other than giscus. 3. Personalize `authors/default.md` (main author) 4. Modify `projectsData.js` 5. Modify `headerNavLinks.js` to customize navigation links 6. Add blog posts ## 📝 Files to customize - `data/siteMetadata.js` - contains most of the site related information which should be modified for a user's need. - `data/authors/default.md` - default author information (required). Additional authors can be added as files in `data/authors`. - `data/projectsData.js` - data used to generate styled card on the 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. - `tailwind.config.js` and `css/tailwind.css` - contain the tailwind stylesheet which can be modified to change the overall look and feel of the site. - `css/prism.css` - controls the styles associated with the code blocks. Feel free to customize it and use your preferred prismjs theme e.g. [prism themes](https://github.com/PrismJS/prism-themes). - `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 use [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. - `next.config.js` - configuration related to Next.js. You need to adapt the Content Security Policy if you want to load scripts, images etc. from other domains. ## 🔨 Compose Run `node ./scripts/compose.js` to bootstrap a new post. Follow the interactive prompt to generate a post with pre-filled front matter. ## 📚 Tech Stack | Tool | Link | | -------------- | --------------------------------------------------------- | | Framework | [Next.js](https://nextjs.org/) | | ORM | [Prisma](https://prisma.io/) | | Database | [PlanetScale](https://planetscale.com) | | Authentication | [NextAuth.js](https://next-auth.js.org/) | | Deployment | [Vercel](https://vercel.com) | | Styling | [Tailwindcss](https://tailwindcss.com/) | | Comment | [Tailwindcss](https://tailwindcss.com/) | | Newsletter | [Email Octopus](https://emailoctopus.com/) | | Favicon | [realfavicongenerator](https://realfavicongenerator.net/) | | Content | [MDX](https://mdxjs.com/) | ## 📈 Stats <img src="https://img.shields.io/website?down_color=red&down_message=offline&style=for-the-badge&up_color=green&up_message=online&url=https%3A%2F%2Fmusings.vercel.app"> <img src="https://img.shields.io/github/repo-size/pycoder2000/blog?style=for-the-badge&color=darkgreen" /> <img src="https://img.shields.io/github/languages/top/pycoder2000/blog?style=for-the-badge" /> <img src="https://img.shields.io/github/commit-activity/m/pycoder2000/blog?style=for-the-badge&color=orange" /> <img src="https://img.shields.io/github/deployments/pycoder2000/blog/Preview%20–%20blog?style=for-the-badge" /> <a href="https://tech-blogs.dev" target="_blank" ></a> <a href="https://makeapullrequest.com" target="blank" ></a> ## 🪜 Project structure ```bash 📦 root ├── 🗂️ components # React files to customize the components for the site ├── 🗂️ css # Tailwind and Prisma CSS files ├── 🗂️ data # Files to change the content of pages │ ├── 🗂️ authors # Markdown files for authors of blog │ ├── 🗂️ blog # Markdown files for blog posts │ └── 🗂️ snippets # Markdown files for code snippets ├── 🗂️ layouts # Templates for pages ├── 🗂️ lib # Non-react modules ├── 🗂️ pages # Page files for website ├── 🗂️ public # Static files for images, rss, and assets │ ├── 🗂️ static # Holds images, favicons, and other assets │ │ ├── 🗂️ favicon # Favicon files │ │ └── 🗂️ images # Image Files │ ├── 📝 feed.xml # RSS feed │ ├── 📝 robots.txt # Helps crawlers to crawl your site │ └── 📝 sitemap.xml # Sitemap ├── 🗂️ scripts # Scripts to run for different tasks ├── 📝 tailwind.config.js # Contains tailwind stylesheet to change the look └── 📝 next.config.js # configuration related to Next.js ``` ## 📊 Google Lighthouse Performance Metrics  ## 🚀 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. [](https://vercel.com/new/git/external?repository-url=https://github.com/timlrx/tailwind-nextjs-starter-blog) ## 🍰 Contributing Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again! 1. Fork the Project 2. Commit your Changes ```bash git commit -m 'Add some Feature' ``` 3. Push to the Branch ```bash git push origin main ``` 4. Open a Pull Request <div align="center"> <a href="https://makeapullrequest.com" target="blank" ></a> </div>
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

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

tailnext
Tailnext is a free, open-source template built on the Next.js 14 App Router and Tailwind CSS, created by the onWidget team.
Next.js · Blog

sylph
Sylph is a minimal portfolio and blog template built on Next.js, supporting MDX/Markdown writing, light/dark themes, and automatic OG image generation. It includes sitemap, robots.txt, metadata, and syntax highlighting, with automatic blog timestamps.
Next.js · Portfolio
