GatsbyReactBlogStarter

gatsby-blog-template — Gatsby Blog Template

By completejavascript

A blog template based on Gatsby and React that uses Markdown to manage posts and pages, with built-in tags, categories, pagination, code highlighting, and Disqus comments.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-09-30View source

What stands out

A quick read of the recorded project description.

01

Posts and pages are both written in Markdown

02

Tag and category pages support pagination

03

Homepage post list includes "Load More"

04

Prism.js code highlighting with Tomorrow Night theme

05

Disqus comments with lazy loading support

06

Site information, navigation, and author profile are configured centrally in data/SiteConfig

Template Details

This is a Gatsby starter for blogging scenarios, with the repository name gatsby-blog-template, under the MIT license. Content is written in Markdown, and both posts and standalone pages follow the same file organization approach, making it suitable for separating writing from site structure.

Functionally, the template provides tag and category pages with pagination; the homepage presents a post list and supports "Load More"; code blocks are highlighted using Prism.js with the Tomorrow Night theme; comments are integrated with Disqus and support lazy loading. Styling is based on Shiba.CSS. Site information, navigation, footer, author profile, pagination count, tag and category path prefixes, 404 text, and more are configured centrally in the exported object in data/SiteConfig.

There are two installation methods: use gatsby new to create a new project from the repository, or clone the repository, delete .git, then install dependencies, and run npm run develop to preview at localhost:8000. The template is built on gatsby-advanced-starter, taniarascia.com, and Shiba.CSS. The README does not specify Node version requirements or production build details, so you need to verify dependencies and third-party asset licenses yourself before use.

GatsbyReactBlogStarter

Is it right for your project?

Use Cases

  • Building a personal technical blog with Markdown as the content source
  • An article archive site that needs organization by tags, categories, and pagination
  • A blog that wants to integrate Disqus comments and control when comments load
  • Developer writing scenarios that require code highlighting

Suitable For

  • Developers familiar with Gatsby and React who are willing to adjust the site through configuration files
  • Bloggers who write in Markdown and do not rely on a backend management system
  • Projects that need a ready-made blog structure and will replace styles and content themselves

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Use gatsby new to create a project from the repository, or clone the repository, delete .git, then run npm install

  2. 2

    Run npm run develop or gatsby develop to preview at localhost:8000

  3. 3

    Modify site title, domain, navigation, footer, author profile, pagination count, Disqus shortname, etc. in data/SiteConfig

  4. 4

    The README does not list Node version requirements; confirm local environment and dependency compatibility yourself

  5. 5

    Third-party assets such as demo images, fonts, and icons need separate license verification; MIT covers only the code

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of that version and does not mean external services or third-party assets are free.

Must comply with when using

  • The code of this version may be used, modified, used commercially, and distributed 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

  • The comment feature depends on the third-party Disqus service; you need to register a Disqus account and configure the shortname (disqusShortname in data/SiteConfig). Comment data is hosted on the Disqus platform and may be subject to its terms of service and free quota limits.
  • Using Facebook App Insights requires a Facebook app ID; this is an external service dependency, and you need to apply for it yourself and comply with Facebook platform terms.
  • Site analytics depends on Google Analytics; you need to replace it with your own GA tracking ID and comply with Google's terms of service; this is an external service dependency.
  • The author avatar references an external Gravatar image URL by default; in actual use, you need to replace it with your own avatar asset and pay attention to the availability and licensing of that external resource.
  • The MIT license covers only the code; the README explicitly states "unless otherwise stated," so third-party assets such as demo images, fonts, and icons may have separate licenses and must be checked separately before use.
  • Demo images, fonts, icons, and other third-party assets need to be checked against their respective licenses and cannot be judged solely by 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

Disqus for comment

Original README

siteFBAppID: "399626517562189", // FB Application ID for using app insights

Original README

googleAnalyticsID: "UA-96543695-7", // GA tracking ID.

Original README

userAvatar: "https://www.gravatar.com/avatar/42fd3d526fde1ef76d5002e4ebd303e9.jpg?s=300"

Original README

Copyright © 2019 Lam Pham. Unless otherwise noted, all code MIT license.

Original README
https://github.com/completejavascript/gatsby-blog-template/blob/dev/LICENSEhttps://github.com/completejavascript/gatsby-blog-template/blob/dev/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-01. 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
Gatsby · React
Website type
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
2026-01-15
Screenshot last checked
2026-10-01

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 Gatsby 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: a96827e42730e824dd25bc371ee1665e9d57bc4caefac563e7ec3541d96fa9a2

2026-10-01T13:56:55.608Z

Source file / repository
[![Netlify Status](https://api.netlify.com/api/v1/badges/89b8cdfb-af7f-48d5-863f-64fbbdfe8986/deploy-status)](https://app.netlify.com/sites/gb-template/deploys) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Maintainability](https://api.codeclimate.com/v1/badges/b23277cf6232a88f59ec/maintainability)](https://codeclimate.com/github/completejavascript/gatsby-blog-template/maintainability)

# gatsby-blog-template

A GatsbyJS Blog Template for blogging purpose.

## Installation

Install this template (assuming [Gatsby](https://github.com/gatsbyjs/gatsby/) is installed and updated) by running from your CLI:

```bash
gatsby new YourProjectName https://github.com/completejavascript/gatsby-blog-template
npm run develop # or gatsby develop
```

Or you can fork the project, make your changes there and merge new features when needed.

Alternatively:

```bash
git clone https://github.com/completejavascript/gatsby-blog-template YourProjectName # Clone the project
cd YourProjectname
rm -rf .git # So you can have your own changes stored in VCS.
npm install # or yarn install
npm run develop # or gatsby develop 
```

Navigate to localhost:8000.

## Features

  * Posts and pages in Markdown
  * Tags and categories with pagination
  * Homepage as list of articles, support "Load more" function
  * Code highlight using [Prism.js](https://prismjs.com/) and Tomorrow Night theme
  * Disqus for comment
  * Style using [Shiba.CSS](https://github.com/completejavascript/shiba-css)

## Configuration

Edit the export object in `data/SiteConfig`:

```js
const config = {
  // Site info
  siteTitle: "Gatsby Blog Template", // Site title.
  siteTitleShort: "GB Template", // Short site title for homescreen (PWA). Preferably should be under 12 characters to prevent truncation.
  siteTitleAlt: "Gatsby Blog Template", // Alternative site title for SEO.
  siteLogo: "/logos/logo-1024x1024.png", // Logo used for SEO and manifest.
  siteUrl: "https://gb-template.netlify.com", // Domain of your website without pathPrefix.
  pathPrefix: "", // Prefixes all links. For cases when deployed to example.github.io/gatsby-advanced-starter/.
  siteDescription: "A GatsbyJS Blog Template for blogging purpose.", // Website description used for RSS feeds/meta description tag.
  siteRss: "/rss.xml", // Path to the RSS file.
  siteLang: "en",
  siteFBAppID: "399626517562189", // FB Application ID for using app insights
  googleAnalyticsID: "UA-96543695-7", // GA tracking ID.
  postDefaultCategoryID: "", // Default category for posts.
  // Common for tag, category pages and widget
  numberLatestPost: 8,
  postsPerPage: 6,
  // Use for post
  dateFromFormat: "YYYY-MM-DD HH:mm", // Date format used in the frontmatter.
  dateFormat: "MMMM Do, YYYY", // Date format for display.
  postTagged: "TAGGED",
  postInCategories: "POSTED IN",
  postOnDate: "Posted on",
  // Use for comment
  lazyLoadComments: true,
  disqusShortname: "gb-template", // Disqus shortname.
  btnLoadComments: "Load comments",
  // Use for home page
  numberLoadmore: 6,
  btnLoadmore: "Load more",
  homeHasLoadmore: true,
  homeHasThumbnail: true,
  homeHeader: "Home",
  // Use for page
  pathPrefixPagination: "/page", // Prefix path for pagination
  pageNotFoundTitle: "Page Not Found", // 
  pageNotFoundBtn: "Back to our site",
  pageNotFoundContent: "Looks like you've followed a broken link or entered a URL that doesn't exist on this site.",
  // Use for tag
  pathPrefixTag: "/tag", // Prefix path for tags
  tagHeader: "Posts tagged as", // use in header of tag-template page
  tagHasThumbnail: true,
  // Use for category
  pathPrefixCategory: "/category", // Prefix path for category
  categoryHeader: "Posts in category", // use in header of category-template page
  categoryHasThumbnail: true,
  // Use for widget
  categoryWidgetTitle: "Categories",
  tagWidgetTitle: "Tags",
  latestPostsWidgetTitle: "Latest posts",
  // Use for user info
  userName: "Lam Pham", // Username to display in the author segment.
  userEmail: "[email protected]", // Email used for RSS feed's author segment
  userTwitter: "CmpltJavaScript", // Optionally renders "Follow Me" in the UserInfo segment.
  userLocation: "Hanoi, Vietnam", // User location to display in the author segment.
  userAvatar: "https://www.gravatar.com/avatar/42fd3d526fde1ef76d5002e4ebd303e9.jpg?s=300", // User avatar to display in the author segment.
  userDescription:
    "Software Engineer, Web Developer, JavaScript Lover & Blogger @completejavascript.", // User description to display in the author segment.
  // Links to social profiles/projects you want to display in the author segment/navigation bar.
  userLinks: [
    {
      label: "Email",
      url: "mailto:[email protected]",
      iconClassName: "far envelope"
    },
    {
      label: "Website",
      url: "https://completejavascript.com/",
      iconClassName: "fas globe"
    },
    {
      label: "Twitter",
      url: "https://twitter.com/CmpltJavaScript",
      iconClassName: "fab twitter"
    },
    { 
      label: "Facebook", 
      url: "https://www.facebook.com/completejavascript/", 
      iconClassName: "fab facebook-f" 
    },
    { 
      label: "Linkedin", 
      url: "https://www.linkedin.com/in/completejavascript/", 
      iconClassName: "fab linkedin-in"
    },
  ],
  // Use for navigation
  navTitle: "GB Template",
  navLinks: [
    { label: "About", url: "/about" },
    { label: "Contact", url: "/contact" },
  ],
  // Use for footer
  socialLinks: [
    { 
      label: "Codepen", 
      url: "https://codepen.io/completejavascript/", 
      iconClassName: "fab codepen" 
    },
    { 
      label: "FreeCodeCamp", 
      url: "", // Ignore 
      iconClassName: "fab free-code-camp"
    },
    { 
      label: "GitHub",
      url: "https://github.com/completejavascript",
      iconClassName: "fab github"
    },
    { 
      label: "Facebook", 
      url: "https://www.facebook.com/completejavascript/", 
      iconClassName: "fab facebook-f"
    },
    { 
      label: "Linkedin", 
      url: "https://www.linkedin.com/in/completejavascript/", 
      iconClassName: "fab linkedin-in"
    },
    {
      label: "Twitter",
      url: "https://twitter.com/CmpltJavaScript",
      iconClassName: "fab twitter"
    },
    {
      label: "RSS",
      url: "https://gb-template.netlify.com/rss.xml",
      iconClassName: "fas rss"
    },
  ],
  footerLinks: [
    { label: "Home", url: "/" },
    { label: "About", url: "/about" },
    { label: "Contact", url: "/contact" },
    { label: "Terms of Use", url: "/terms" },
    { label: "Privacy Policy", url: "/privacy" },
    { label: "Sitemap", url: "https://gb-template.netlify.com/sitemap.xml" },
  ],
  copyright: "Copyright © 2019 Lam Pham. Unless otherwise noted, all code MIT license.",
  // Use for manifest
  themeColor: "#2196F3", // Used for setting manifest and progress theme colors.
  backgroundColor: "#FFF" // Used for setting manifest background color.
};

// Validate

// Make sure pathPrefix is empty if not needed
if (config.pathPrefix === "/" || config.pathPrefix === "") {
  config.pathPrefix = "";
} else {
  // Make sure pathPrefix only contains the first forward slash
  config.pathPrefix = `/${config.pathPrefix.replace(/^\/|\/$/g, "")}`;
}

// Make sure siteUrl doesn't have an ending forward slash
if (config.siteUrl.substr(-1) === "/")
  config.siteUrl = config.siteUrl.slice(0, -1);

// Make sure siteRss has a starting forward slash
if (config.siteRss && config.siteRss[0] !== "/")
  config.siteRss = `/${config.siteRss}`;

module.exports = config;
```

## Acknowledgements

This project is based on: 
  
  * [gatsby-advanced-starter](https://github.com/vagr9k/gatsby-advanced-starter/)
  * [taniarascia.com](https://github.com/taniarascia/taniarascia.com)
  * [Shiba.CSS](https://github.com/completejavascript/shiba-css)

## Author

  * [Lam Pham](http://about.phamvanlam.com)

## License

This project is open source and available under the [MIT License](https://github.com/completejavascript/gatsby-blog-template/blob/dev/LICENSE).
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.