Starter of Calpa's Blog
Clone or download
Latest commit f732be5 Oct 16, 2018

README.md

Calpa's Blog

GitHub license Accept Pull Requests Twitter Greenkeeper badge Build Status CodeFactor

HomePage

Starter of Calpa's Blog.

If you like my blog, please star it. Many thanks.

Feature

  1. Responsive Design
  2. Parse Markdown in high speed (powered by remarkable)
  3. Support to sitemap
  4. Font Awesome is auto loaded (powererd by react-fontawesome)
  5. Source from Contentful, a flexible and easy-to-use content management system

Prerequisites

  1. Git
  2. Node: any 8.x version starting with 8.5.0 or greater
  3. A fork of the repo (for any contributions)
  4. A clone of the this repo on your local machine

Develop

How to start this project?

  1. Install Gatsby-CLI
npm install --global gatsby-cli
  1. Create new Gatsby project using this starter, awesome-blog is your blog's folder
gatsby new awesome-blog https://github.com/calpa/blog
  1. Open the folder
cd awesome-blog
  1. Run Development Server

    1. npm start to start the hot-reloading development server (powered by Gatsby)
    2. open http://localhost:8000 to open the site in your favorite browser
  2. Connect Contentful Server

    1. add the following config into .env.development file
    API_SPACE_ID = Your Contentful Space ID
    API_TOKEN = Your Content Delivery (Preview) API - access token
    

    If you are using contentful preview API, then all unpublished content will be available.

Configuration

Edit the export object in data/config

Note: To look up theme_color hex code, click here.

module.exports = {
  title: 'your blog title here',
  maxPages: 12
  meta: {
    description: 'blog description',
    keyword: 'blog, JavaScript',
    theme_color: '#hexcode',
    favicon: 'https:yourimageurl.com',
    google_site_verification: 'your google verification hash',
  },
  name: 'your name',
  email: 'your_email@gmail.com',
  iconUrl: 'https://youricon.jpg',
  License: 'by',
  url: 'https://yourblog.me',
  about: '/2018/05/01/about-your-name/',
  // Sidebar
  zhihuUsername: 'your zhiu user name here',
  githubUsername: 'your github user name here',
  friends: [
    {
      title: 'friend title',
      href: 'link to their blog',
    }
  ]

Plugins in the configuration file:

gaOptimizeId: 'GTM-WHP7SC5',
gaTrackId: 'UA-84737574-3',
navbarList: [
  {
    href: '/stats/',
    title: 'stat title',
  },
  {
    href: '/tags/',
    title: 'tags',
  },
  {
    href: '/guestbook/',
    title: 'guestbook',
  },
  {
    href: '/2018/10/04/about-your-blog/',
    title: 'your title',
  },
],
redirectors: [
  {
    fromPath: '/',
    toPath: '/page/1',
  },
],

Gitalk plugin configuration

gitalk: {
    clientID: '18255f031b5e11edd98a',
    clientSecret: '2ff6331da9e53f9a91bcc991d38d550c85026714',
    repo: 'calpa.github.io',
    owner: 'calpa',
    admin: ['calpa'],
    distractionFreeMode: true,
  },
}

Content Model

  1. Posts

To create a post, just provide the following object model:

{
  "name": "Post",
  "fields": {
    "title": "Post Title",
    "headerImgur": "header Image Link",
    "headerBackgroundColor": "#66ccff",
    "tags": "tag1, tag2, tag3",
    "url": "awesome-post",
    "createdDate": "new Date() or other dayjs supported datetime value",
    "content": "your markdown content",
    "jueJinLikeIconLink": "掘金 Badge Icon Url",
    "jueJinPostLink": "掘金 Post Url"
  }
}
  1. Headers

There are two configurable headers, Homepage and tags page.

{
  "name": "Headers",
  "fields": {
    "purpose": "Tags or Home",
    "headerImage": "header Image",
    "createdDate": "new Date() or other dayjs supported datetime value",
    "title": "Display Title",
    "titleVisible": "Do you want to show your title in the header?",
    "subTitle": "Display a smaller wordings",
    "subTitleVisible": "Do you want to show a smaller wordings in the header?"
  }
}

Deploy

Calpa's blog is currently using Netlify, though, you may use Github Pages as an alternative.

  • Github Pages

    npm run deploy to deploy the blog to Github Pages

  • Netlify

    Auto Deploy

TODO

  1. Update the number of post pages automatically.

Troubleshooting

  • For window is defined, wrap the require in check for window:

    if (typeof window !== `undefined`) {
      const module = require("module");
    }
  • npm run reset to clear the local cache

  • Check GatsbyJS Debugging Docs

Contributing

Please read CONTRIBUTING.md for more information.

Contact

If you are interested in this project, please feel free to contact Calpa Liu.

Thanks For Contribute... :)