Grav is an open source Flat-File CMS written in PHP developed by RocketTheme. When we say Flat-File CMS it means that the Content Management System doesn’t rely on a Database to serve content, instead, it stores content in files that can be a text file or a markdown file depending on what kind of content it is handling or what kind of CMS it is. Flat-File CMS are useful with your I/O for file handling is faster than a Database response or when you don’t have enough resource to power a Database. It is also useful if a specific Database type costs money, Flat-File CMS at times can cost cheaper then a Database driven CMS. There are many Flat-File CMS out there like Statamic, Kirby, PhileCMS and many other. To know what makes Grav a better choice stay tuned.
Grav is one of the fastest flat-file CMS with a cleaner code base that follows the PSR standards. Grav uses YAML that uses the
<code class="highlighter-rouge">.yaml extension to store system and other various configuration. It uses Markdown files with the
<code class="highlighter-rouge">.md extension to store content the Markdown files are parsed by Parsedown one of the best PHP based Markdown parser. Grav uses Twig for templating that is one of the most popular PHP-based templating engines. It is also a better templating engine compared to other templating engines because Twig is parsed directly into PHP that makes it really fast.
The benefit of using Twig for templating is that the user does not require knowledge of PHP and can directly read the documentation and start developing themes for it. This is one of the reasons why I love Grav.
Grav has it’s own package manager named GPM was also known as Grav Package Manager that lets the user install/uninstall/update 3rd party plugins and themes. It is also the at the very core of Grav that lets the user update this Grav install on every new update. The GPM package manager makes Grav, even more, user-friendly. Grav also comes with other CLI tools like
grav it is similar to GPM. Grav
grav CLI lets the user purge cache and manage much other various stuff.
Even after Grav being in the development stage turns out to be very stable. Grav developers are working on an Admin Panel plugin that lets the user have a really nice looking GUI to work with Grav. The Admin panel is currently not yet available it would be available in version 1.0.1, you can find the screenshots over here. Grav is being developed on GitHub.
Grav lets the user create skeletons some skeletons are already available here.
For a developer, Grav has a lot of user in areas where one would prefer file based system or lack resource to have a Database at the same time not lack functionality for this reason. Grav plugins are written in PHP and let 3rd part developers add more functionality to Grav. Grav lets theme developers file written in PHP named after the theme name that can make a connection with plugins or have it’s own unique functionality. Grav lets the theme have its own YML configuration file with a
.yaml an extension that lets the theme developer add this/her own configuration with having to mess with the CMS core configuration files.
Grav being a Flat-File CMS also lets the user manage it using version control and sync based system, as the whole system just files. Version Controlling a CMS can be a very good idea at times as it lets the user have a track record of every change made and lets the user revert back to an older build. This can be better achieved on a Flat-File CMS, because If a Database driven CMS is version control like an SQLite driven CMS then only the binary change can be visible and file size as this does not show the big changes made to the system and makes the SQLite driven CMS a much unfriendly option for version control users.
In my opinion, Grav is one of the fastest Flat-File CMS I have ever used and one of the best in the way it works. Grav might be the best alternative to Database driven systems in the near future.
Thanks for reading. This is my first written preview of any web technology. Feel free to give a feedback or ask any questions in a comment below.
This post was written before the features of Grav became common to other CMS