Today I migrated my blog from Hugo to Grav. Before I did that, I also considered another well known static CMS generation solution called Hexo. In the end, I chose Grav for three reasons:

  1. Grav is written with PHP, and I know PHP much better than Go and NodeJs. And I love PHP :)
  2. Grav is well designed in terms of customization, like developing your own plug-in or theme. And the documents are very detailed.
  3. Grav has an admin panel, which allows you to edit pages and configurations without remote logging into your host server. Normally, when using static blogging systems, it's a pain to modify files. Of course there is always a solution, which I will talk about later, it's still very handy to have a built-in editing feature like this:

Admin Panel

I believe most people prefer hosting their sites with Apache instead of IIS. Well, I'm using IIS emotionally because I'm a MSFT employee and my VM is on Azure (We have $150 free budget each month for personal use). Setting up Grav is fairly easy following the steps here, one thing you need to handle when hosting on IIS is the URI-Rewrite, Grav only provides the .htaccess file which is not supported by IIS. You have to create a corresponding web.config file to make it work, and it's pretty easy to do: Just import the .htaccess using IIS manager:

Admin Panel

Here comes the important part, I think no one would like to login to the host server every time he wants to edit a blog. Actually this is what I do at the beginning and it's actually not that bad when you are using Windows Server and having good network connection since you can have the same editing experience with remote desktop. After a few round of investigation, there are actually more options. Let's take a look:

Remote-Remote means using a third party online IDE which connects remotely to your host server via FTP or SFTP, then you edit the files using their services in the browser. Providers like Cloud9 and Codetasty give you the ability to setup a workspace which connects to a specific server. The later one is free and you can try it. But based on my experience, the connection is not very stable as you have no control over it.

Remote-Local is almost the same with Remote-Remote, but this time, you will host the online IDE by yourself, so the IDE runs on the same host with your blog and it manipulates files on your host locally. Icecoder is a good example in this category. In the case of Grav, the admin panel is the IDE.

The last option is my favorite. As a blog writer, you might not always have the network connection and want to write something, how would you do it? Yes you can write the blog locally and paste it to your site when you are online. Yet there is a better solution for you as a developer. Using Visual Studio Code and its plugin ftp-sync, you can sync the whole blog folder from the server to local disk via FTP or SSH, then edit whatever you want and sync files back when available. There should be similar solutions on Sublime Text and other editors if you don't use VS Code.