Modern, Crazy Fast, Ridiculously Easy and Amazingly Powerful Flat-File CMS
PHP Other
Latest commit 4d904e6 Jan 22, 2017 @flaviocopes flaviocopes Add an additional parameter to GPM::findPackage to avoid throwing an …
…exception, for use in Twig, re #1008
Failed to load latest commit information.
assets Added empty assets folder Aug 17, 2014
backup backup to backup folder Apr 27, 2015
bin Updated to Twig 1.25.0 and fixed an issue that resulted with streams … Oct 1, 2016
cache Created a .dependencies and some other install cleanup Aug 7, 2014
images Created a .dependencies and some other install cleanup Aug 7, 2014
logs Created a .dependencies and some other install cleanup Aug 7, 2014
system Add an additional parameter to GPM::findPackage to avoid throwing an … Jan 22, 2017
tests Add `range(int min, int max, int step)` twig function to generate an … Dec 1, 2016
tmp Added new `tmp` folder at root Aug 23, 2016
user Reverted change Oct 20, 2016
webserver-configs Fixed all `$_GET` parameters missing in Nginx (please update your ngi… Jan 13, 2017
.dependencies Switch to markdown-notices styling rather than older `>>>` block quot… May 23, 2016
.editorconfig Forcing 2 space indentation on all yaml files Sep 25, 2014
.gitignore Updated gitignore for user/config/security.yaml (#1231) Jan 3, 2017
.htaccess Added documented options to .htaccess to support detecting forwarded … Sep 23, 2016
.travis.yml Another parsing error Sep 19, 2016 Add an additional parameter to GPM::findPackage to avoid throwing an … Jan 22, 2017 Update Jun 29, 2016
LICENSE.txt renamed LICENSE to LICENSE.txt Dec 1, 2015 Update broken link for Doctrine Cache (#886) Jun 9, 2016
codeception.yml Drop default db config from config Jan 5, 2016
composer.json Add ability to adjust images orientation using EXIF data (#555) Oct 19, 2016
composer.lock Vendor updates Jan 17, 2017
index.php Reworked PHP CLI router PR #1218 (#1219) Dec 17, 2016
robots.txt Prevent crawling of unnecessary directories Nov 21, 2015


SensioLabsInsight Gitter Build Status

Grav is a Fast, Simple, and Flexible, file-based Web-platform. There is Zero installation required. Just extract the ZIP archive, and you are already up and running. It follows similar principles to other flat-file CMS platforms, but has a different design philosophy than most. Grav comes with a powerful Package Management System to allow for simple installation and upgrading of plugins and themes, as well as simple updating of Grav itself.

The underlying architecture of Grav is designed to use well-established and best-in-class technologies to ensure that Grav is simple to use and easy to extend. Some of these key technologies include:



These are the options to get Grav:

Downloading a Grav Package

You can download a ready-built package from the Downloads page on

With Composer

You can create a new project with the latest stable Grav release with the following command:

$ composer create-project getgrav/grav ~/webroot/grav

From GitHub

  1. Clone the Grav repository from to a folder in the webroot of your server, e.g. ~/webroot/grav. Launch a terminal or console and navigate to the webroot folder:

    $ cd ~/webroot
    $ git clone
  2. Install the plugin and theme dependencies by using the Grav CLI application bin/grav:

    $ cd ~/webroot/grav
    $ bin/grav install

Check out the install procedures for more information.

Adding Functionality

You can download plugins or themes manually from the appropriate tab on the Downloads page on, but the preferred solution is to use the Grav Package Manager or GPM:

$ bin/gpm index

This will display all the available plugins and then you can install one or more with:

$ bin/gpm install <plugin/theme>


To update Grav you should use the Grav Package Manager or GPM:

$ bin/gpm selfupgrade

To update plugins and themes:

$ bin/gpm update


We appreciate any contribution to Grav, whether it is related to bugs, grammar, or simply a suggestion or improvement. However, we ask that any contributions follow our simple guidelines in order to be properly received.

All our projects follow the GitFlow branching model, from development to release. If you are not familiar with it, there are several guides and tutorials to make you understand what it is about.

You will probably want to get started by installing this very good collection of git extensions.

What you mainly want to know is that:

  • All the main activity happens in the develop branch. Any pull request should be addressed only to that branch. We will not consider pull requests made to the master.
  • It's very well appreciated, and highly suggested, to start a new feature whenever you want to make changes or add functionalities. It will make it much easier for us to just checkout your feature branch and test it, before merging it into develop

Getting Started

Exploring More



Running Tests

First install the dev dependencies by running composer update from the Grav root. Then composer test will run the Unit Tests, which should be always executed successfully on any site.

You can also run a single unit test file, e.g. composer test tests/unit/Grav/Common/AssetsTest.php