GRAV is a modern open source flat-file CMS

BUILD FASTER WEBSITES

From simple to sophisticated, Grav has the flexibility to power all sorts of websites. Flexible content structure and powerful Twig templating allow easy realization of any design.

Use your favorite Markdown editor to create your content online or offline.


GRAV ORIGINS

Andy Miller - Grav Founder & Lead Developer

  • Why we built Grav... The origins of Grav come from a personal desire to work with an open source platform that focused on speed and simplicity, rather than an abundance of built-in features that come at the expense of complexity.
  • There are plenty of great open source CMS platforms out there, including personal favorites Joomla and WordPress, as well as some really promising up-and-coming platforms like PageKit.
  • All of these platforms rely on a database for data persistence, are powerful, and offer a good degree of flexibility.
  • One real downside to these platforms is they require a real commitment to learn how to use and develop on them. You really have to pick one out of the pack, and dedicate yourself to that platform if you wish to become competent as either a user, developer, or administrator.
  • What if there was a platform that was fast, easy-to-learn, and still powerful & flexible? Surely something already exists that meets these criteria? In my search for such a platform, it became clear that a flat-file based CMS was likely to be the answer, and there are a bunch to choose from! I created a list of requirements I thought would ensure an ideal platform for my needs:

    • Fast, right out of the box
    • Flat-file based
    • Content created in Markdown
    • Templating provided by Twig or a similar established project
    • Extensible and flexible via far-reaching plugin architecture
    • Simple to install, with minimal server requirements
    • Must be open source and MIT licensed if possible
    • Solid Documentation
    • Enjoyable to use
  • The problem was, nothing really fit my requirements exactly. The ones that met my requirements the closest were not open source, so the option of forking it and adding the features I wanted was not available. I was left with two options:
    • Start with one of the open source platforms and transform it into my ideal solution.
    • Start from scratch
  • Originally, I thought that Pico might make a good base to start from as it already satisfied a good deal of the requirements. However, as I delved deeper, I realized it was not going to make a great starting point due to its functional approach. So, option #2 was the only option left to me. I started over.
  • Grav is heavily inspired by a whole raft of other platforms, but is written from scratch focusing on speed, simplicity, and flexibility.
  • The core of Grav is built around the concept of folders and markdown files for content. These folders and files are automatically compiled into HTML and cached for performance.
  • Its pages are accessible via URLs that directly relate to the folder structure that underpins the whole CMS. By rendering the pages with Twig Templates, you have complete control over how your site looks, with virtually no limitations.
  • Part of the flexibility comes from Grav's simple, but powerful, taxonomy functionality that lets you create relationships between pages. Another key part of this flexibility is the plugin architecture that exists throughout the entire platform to allow you to interact and modify pretty much any part of Grav as needed.

    Markdown Samples

Headings

H1 Heading 40px

H2 Heading 32px

H3 Heading 28px

H4 Heading 24px

H5 Heading 20px
H6 Heading 16px
# H1 Heading
# H1 Heading `40px`</small>`

<span class="h1">H1 Heading</span>

Paragraphs

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent risus leo, dictum in vehicula sit amet, feugiat tempus tellus. Duis quis sodales risus. Etiam euismod ornare consequat.

Climb leg rub face on everything give attitude nap all day for under the bed. Chase mice attack feet but rub face on everything hopped up on goofballs.

Markdown Semantic Text Elements

Bold **Bold**

Italic _Italic_

Deleted ~~Deleted~~

Inline Code `Inline Code`

HTML Semantic Text Elements

I18N <abbr>

Citation <cite>

Ctrl + S <kbd>

TextSuperscripted <sup>

TextSubscripted <sub>

Underlined <u>

Highlighted <mark>

<time>

x = y + 2 <var>

Blockquote

The advance of technology is based on making it fit in so that you don't really even notice it, so it's part of everyday life.

- Bill Gates

> The advance of technology is based on making it fit in so that you don't really even notice it,
> so it's part of everyday life.
>
> <cite>- Bill Gates</cite>

Unordered List

  • list item 1
  • list item 2
    • list item 2.1
    • list item 2.2
    • list item 2.3
  • list item 3
* list item 1
* list item 2
    * list item 2.1
    * list item 2.2
    * list item 2.3
* list item 3

Ordered List

  1. list item 1
  2. list item 2
    1. list item 2.1
    2. list item 2.2
    3. list item 2.3
  3. list item 3
1. list item 1
1. list item 2
    1. list item 2.1
    1. list item 2.2
    1. list item 2.3
1. list item 3

Table

Name Genre Release date
The Shawshank Redemption Crime, Drama 14 October 1994
The Godfather Crime, Drama 24 March 1972
Schindler's List Biography, Drama, History 4 February 1994
Se7en Crime, Drama, Mystery 22 September 1995
| Name                        | Genre                         | Release date         |
| :-------------------------- | :---------------------------: | -------------------: |
| The Shawshank Redemption    | Crime, Drama                  | 14 October 1994      |
| The Godfather               | Crime, Drama                  | 24 March 1972        |
| Schindler's List            | Biography, Drama, History     | 4 February 1994      |
| Se7en                       | Crime, Drama, Mystery         | 22 September 1995    |

Notices

The notices styles are actually provided by the markdown-notices plugin but are useful enough to include here:

This is a warning notification

This is a error notification

This is a default notification

This is a success notification

! This is a warning notification

!! This is a error notification

!!! This is a default notification

!!!! This is a success notification