Kirby is a modern, fast, flexible, file-based CMS with a beautiful control panel. Take our little tour to better understand what Kirby is all about.
We provide two downloadable kits for you to get started with.
The Starterkit is a full-blown Kirby installation with a lot of example content, blueprints, templates and more. It is ideal to explore many of Kirby's options and play with the Panel.
|Folder||What's in it?|
||The content of your website.|
||Think of this folder as your project folder. It contains your templates, configuration, plugins and setup files (blueprints) for the Panel.|
||The Kirby app. Great for studying the source code, but in general you should leave this folder untouched (apart from updating it when a new version is released).|
||This folder is managed by Kirby and holds public images and thumbnails as well as plugin and Panel assets. Let Kirby do its work and leave this folder as it is. The media folder and the files in it are auto-generated.|
Our Starterkit has an additional
/assets folder, we use it to store CSS files. This is just a convention we use. It's not required by Kirby.
Your content is not stored in a database, but directly in your file system. In your
/content folder to be exact. Each subfolder of your content folder represents a page.
The content for each page is stored in a text file together with additional resources like images, videos, or other documents. The
site.txt in the content folder contains general sitewide information.
In each text file in the content folder, content is structured in fields. Those fields are defined by our own simple syntax:
Title: Page Title ---- Text: Some Text ---- Date: 2019-06-26
Those fields come for free. You can add as many as you need. We recommend using them heavily to structure your content. It will help you later if you need to access specific data in your templates and is much cleaner than just one large blob of text.
All the data that is stored in your content folder can be pulled into your templates to render the pages of your site. Kirby templates are a combination of plain HTML and bits of our powerful PHP API. You don't need to be a PHP expert to get started writing templates. We will guide you through it.
A typical Kirby template looks like this:
<?php snippet('header') ?> <article> <header> <h1><?= $page->title() ?></h1> </header> <div class="text"> <?= $page->text()->kirbytext() ?> </div> </article> <?php snippet('footer') ?>
Kirby's web interface is called the Panel. You can find it at
While you can manage your site 100% in the file system, the Panel makes it a lot more comfortable to add new pages, edit content or upload files. In the background it will do all the hard work of creating folders and files for you.
The Panel is very versatile and can be customized to fit every project. To set up the Panel, you will use Kirby's so called blueprints to configure layouts, form fields, permissions and more.
Any Kirby site can be translated into multiple languages. Languages can be added via the Panel and content can be translated by your editors.
You can add multiple users to your installation and assign roles with permissions to each of them. You can give users Panel or just frontend access and build your own client or member area for your site.
Kirby has a very versatile and extensive plugin system that can extend pretty much any part of the system. There are many fantastic third-party plugins that you should definitely check out. But it's also easy to start building your own plugins.
Kirby has a built-in REST API that you can use for your own single page applications, mobile apps or in combination with a static site generator such as Gatsby.
If you want to break out of Kirby's URL structure, you can create your own custom routes and use Kirby more like a framework. Or you could create just a few routes next to the built-in ones in Kirby for special use-cases.
Contact form replies, user notifications, tiny newsletters – it's up to you what you build on top of Kirby's email engine.
Kirby has a built-in page cache that makes slow pages with a lot of content super fast. But there's much more to discover. You can use our caching system for your own data – and in your plugins. Or maybe you want to cache everything in Redis? Let's create a custom cache driver.
Yes, you read that right. Even though Kirby is a file-based CMS, you can connect parts of it to a MySQL or SQLite database.