Creating a Website on Grav CMS: No Database, Fast, and Turnkey

Creating a Website on Grav CMS: No Database, Fast, and Turnkey

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1414
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    980
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    994

Creating a Website on Grav CMS: No Database, Fast, and Turnkey

Recently, we migrated a documentation website from WordPress to Grav. The client complained about slow loading and complex deployments. After migration, speed increased from 1.5 seconds to 200 ms, and maintenance was reduced to a simple git push. However, many developers starting with Grav make the same mistake: they don't enable caching. As a result, speed drops 2-3 times. In this article, we'll cover how to avoid this and properly configure Grav.

Order Grav website development — we'll analyze your project and provide a commercial proposal within one day.

When to Choose Grav and When Not?

Grav is a flat-file CMS where content is stored in files rather than a database. It's ideal for projects where content is static or rarely updated, the team works with Markdown and git, and hosting is limited (no MySQL/PostgreSQL). Typical examples: documentation sites, portfolios, blogs, landing pages. Grav is not suitable for e-commerce with thousands of SKUs, complex portals with user-generated content, or sites with intensive user sessions.

Why Grav Is Faster Than Traditional CMS?

Unlike WordPress or Joomla, Grav doesn't make database queries on each request. Content is read from files and cached in /cache/. On weak hosting (e.g., 512 MB RAM), Grav delivers a page in 20-50 ms, whereas WordPress takes 200-400 ms. That's a 3-5x improvement on typical projects. Hosting savings can be up to 70% compared to traditional CMS.

How We Develop Websites on Grav: Our Approach

We approach each project individually. First, we analyze requirements, select appropriate plugins (e.g., Grav Plugin SimpleForm, Admin Plugin). Then we develop a custom theme using Twig with SEO and Core Web Vitals in mind. We always enable caching and configure the assets pipeline. Example: for a documentation site, we created 5 templates, 2 collections, and integrated Elasticsearch via a plugin. This achieved load speeds under 200 ms on cheap hosting.

How to Configure Grav in 5 Steps

  1. Install Grav via Composer: composer create-project getgrav/grav your-project.
  2. Configure the base system.yaml: enable caching and configure assets processing.
  3. Create page structure in user/pages.
  4. Develop templates using Twig and Blueprints.
  5. Deploy to hosting via Git.

These steps help avoid common mistakes and quickly launch your project.

How Page Structure Works

Grav uses a file-based structure for pages. Each page is a folder with a .md file. The folder name with a numeric prefix defines sorting order. Example:

  • user/pages/01.home/home.md → template home.html.twig
  • user/pages/02.services/services.md → template services.html.twig
  • user/pages/03.blog/blog.md → template blog.html.twig
  • user/pages/03.blog/my-post/default.md — blog post

Folders starting with an underscore (e.g., _service-dev) are hidden and not displayed in listings.

Frontmatter and Templates

Each .md file contains YAML frontmatter:

--- title: Custom Development slug: custom-development published: true template: service-detail taxonomy: category: [services] metadata: description: 'Web application development' --- 

Collections and Listings

To list child pages, use Twig:

{% set posts = page.children.visible.order('date', 'desc').slice(0, 10) %} {% for post in posts %} <article class="post-card"> <h2><a href="{{ post.url }}">{{ post.title }}</a></h2> {{ post.content|striptags|slice(0, 200) }} </article> {% endfor %} 

Blueprints: Custom Fields

Blueprints describe page fields for the admin panel:

# user/blueprints/pages/service-detail.yaml form: fields: header.intro: type: textarea label: Introduction header.hero_image: type: filepicker label: Main image 

Performance and Caching

Cache configuration in system.yaml:

cache: enabled: true driver: auto lifetime: 604800 gzip: true assets: css_pipeline: true js_pipeline: true 

On a weak host without APC/Redis, pages are served from the file cache — speed comparable to static sites.

Typical Projects and Timeframes

Site Type Number of Templates Timeline
Landing page / business card 3–5 1–2 weeks
Corporate site with blog 6–10 2–4 weeks
Documentation 5–8 2–3 weeks

What's Included in Development

  • Requirements analysis and architecture selection (collections, taxonomies)
  • Installation of Grav and necessary plugins (forms, SEO, sitemap)
  • Custom theme development in Twig with Core Web Vitals compliance
  • Caching configuration and assets optimization
  • Testing and access handover
  • 30-day support warranty

Grav vs WordPress

Characteristic Grav WordPress
Database None (flat-file) MySQL
Page speed 20-50 ms 200-400 ms
Deployment simplicity Git Requires DB migration
Security Fewer vulnerabilities Frequent core updates
Maintenance Minimal Regular updates

Common Mistakes and Their Solutions

  • Forgetting to enable cache — speed drops 2-3 times. Always check cache.enabled: true.
  • Using plugins when custom Twig code is sufficient — this increases complexity and load time.
  • Not configuring assets pipeline — CSS and JS load separately, increasing load time. Use assets.css_pipeline: true.

Get a consultation right now — we'll discuss your project's tasks and deadlines.