Grav CMS for Educators

Flipping the LMS with an
Open + Collaborative Web Platform



Paul D Hibbitts

Workshop resources:


Hello, Grav
(Workshop I) 


What is a Modern
Flat-file CMS?


What makes a CMS “Modern”?

  • Modern PHP code (i.e. reliability, speed, extensibility, etc.)

  • Use of current standards (i.e. Markdown, Twig, YAML, etc.)

  • Modular/customizable content chunks (i.e. reuse of content)

  • Further separation of content (i.e. files) from presentation

What makes a CMS “Flat-file”?

  • No database means less (or no) IT involvement needed

  • Content stored in text files rather than in a database

  • Takes full advantage of the collaborative ecosystem now available (i.e. GitHub)

  • Increased portability, as moving a site now only requires simply copying files to another location

  • All template and content files are 100% version controllable

Getting Grav
Up and Running



  • A Webserver (Apache, Nginx, LiteSpeed, etc.)
  • PHP 5.5.9 or higher (7.0 recommended, 2X faster!)

Installation (Server only)

  1. Download Grav Workshop Demo Site (​)
  2. Unzip the package onto your desktop
  3. Copy the entire Grav folder to your Web server
  4. Point your browser at the Web server folder
  5. Create your site administrator account
  6. And you're done!

Installation (Local Desktop)

  1. Download and install MAMP (
  2. Download/unzip Grav Workshop Demo Site (​)
  3. Unzip the downloaded Grav package onto your desktop
  4. Copy the entire Grav folder into the MAMP 'htdocs' folder
  5. Launch MAMP and press the MAMP 'Start Servers' button
  6. Enter 'localhost:8888' in Web Browser and choose Grav folder
  7. Create your site administrator account
  8. And you're done!

The Basics of Grav

Admin Panel

Admin Panel Overview

The 'Admin Panel' provides the ability to easily manage your site, modify content, and perform updates

The Basics of Grav

Working with Files

(instead of Admin Panel)

Your Content and Grav

All of your site content is stored in the 'user/pages' folder



Each page within Grav is stored as a folder, and within each folder the text and other elements of a page are stored


Page Folders


The numeric prefixes of a page folder name (i.e. '01') are used to determine the position of that page within a site navigation bar


Page Folders


To prevent a page from being included within the site navigation bar do not prefix the folder name with a number (i.e. 'sidebar)


The Basics of Grav

Page Content

Page Editing


Within a page folder a text file with the suffix '.md' (markdown) contains the content for that page


Recommended Text Editors


Page Names


The name of the file within a page folder determines the template used to display it (i.e. page '' would use the template 'item')


Page Content


Page Headers


Each page within Grav contains two main parts; a header
(starting and ending with three dashes ('---'),
with the content of the page below


Page Content




Markdown is a syntax to format the display of content stored as plain text - similar but simpler than HTML formating


Markdown Examples

H1 # Your Header Text Here
H2 ## Your Header Text Here
H3 ### Your Header Text Here
Italics _your italic text here_
bold **your bold text here**
unordered list item * your item here
ordered list item 1. your item here
link [link title](

Tip: To ensure a new paragraph after text in markdown,
put two spaces after the end of the line


Page Content

Linking Pages

Linking Pages


To included a link to one of your site's Grav pages you would generally use the following format: '[your link text](../path/page)'


Note: '../' indicates moving up the file directory


Page Content

Embeding Media

Embedding Media


To embed an image you would use the following format:
'![your media title](../path/image)'


Note: the above assumes media is stored within folder of page


Things to Explore Next...


Thank you! Questions?


Flip Your LMS with Grav (Workshop II)


Flipping your LMS


What is a Flipped LMS?

A flipped LMS approach is where an open platform,
in the control of course participants,
serves as an alternative front-end to the institutional LMS.

Why “Flip” the LMS?

  • To support pedagogical goals unmet by the current LMS
  • To deliver a better student (and facilitator) experience
  • To increase capability of access, sharing and collaboration

Experience Design Goals

  • For Students

    • Engaging

    • Organized

    • Relevant

    • Convenient

    • Enjoyable

  • For Facilitator(s)

    • Controllable (i.e. manageable)

    • Pliable (i.e. flexible)

    • Efficient

    • Enjoyable (hey, instructors are people too...)

Why Grav?

  • The best modern flat-file CMS currently available (to me)
  • Due to it's flat-file nature, Grav also fully supports...

An Open
+ Collaborative Workflow


Recommended Toolset

  • MAMP
  • Git service (e.g. GitHub, GitLab Gogs, etc.)
  • GitHub Desktop
  • Automatic deployment service (e.g. Deploy or Buddy)

What Skills are Required?

  • Basic User Skills, Level I (Web-server Only)

    • Text file editing

    • Copying/pasting/editing URLs

    • Markdown or simple HTML formatting

    • Web server access (i.e. FTP)

  • Basic User Skills, Level II (supports an open and collaborative workflow, which is also very efficient!)

    • Setting up a GitHub account

    • Configuring GitHub Desktop app

    • Setting up a GitHub to FTP server service (e.g. Deploy)

So, what does that workflow
look like?


How long would that
update take?

~ 30 Seconds
(your mileage may vary)

Setting up An Open and Collaborative Workflow - Part I

  1. Download/unzip Grav Course Hub Skeleton (
  2. Create a folder 'MAMP Websites' in your 'Documents' folder
  3. Copy the entire Grav folder into the 'MAMP Websites' folder
  4. Download, install, and launch MAMP
  5. Launch MAMP
  6. Change the 'Document Root' MAMP preferences setting to the 'MAMP Websites' folder (within 'Documents')
  7. Press the MAMP 'Start Servers' button
  8. Enter 'localhost:8888' as the URL in your Web Browser
  9. Choose the displayed Grav folder name
  10. Create your site administrator account

Want more details? Running Grav Locally with MAMP 


Setting up An Open and Collaborative Workflow - Part II

  1. Setup a GitHub account
  2. Download and configure GitHub Desktop
  3. Using GitHub Desktop, create a new repository of your locally running Grav installation
  4. Commit your entire site to your repository
  5. Setup an automatic deployment service (can be done later)


Want more details? Using Grav with GitHub Desktop


Course Hub
Skeleton Package


Course Hub Highlights

  • A complete ready-to-run Grav Skeleton Package (open source)
  • Blog-format, with 'featured' (sticky) posts
  • Important reminders & class preparations areas
  • Additional site pages can be easily added
  • Image header area above site navbar
  • Sidebar is a simple markdown file, which can also contain HTML
  • URL flag to only display page content (for display within LMS  )
  • External links are automatically opened in a new Tab/Window
  • Built-in support for entire site to be maintained on GitHub
  • Since everything is built with Grav it can be entirely customized

Want more information?

Explore the online demo at

Download the Course Hub skeleton at

Things to Explore Next...


Thank you! Questions?