PHPackages                             markhuot/craft-keystone - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. markhuot/craft-keystone

ActiveCraft-plugin[Utility &amp; Helpers](/categories/utility)

markhuot/craft-keystone
=======================

A modern page builder

v2.0.0.x-dev(1y ago)51[4 issues](https://github.com/markhuot/craft-keystone/issues)proprietaryPHP

Since Nov 29Pushed 1y ago1 watchersCompare

[ Source](https://github.com/markhuot/craft-keystone)[ Packagist](https://packagist.org/packages/markhuot/craft-keystone)[ RSS](/packages/markhuot-craft-keystone/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (6)Versions (3)Used By (0)

Keystone
========

[](#keystone)

The page builder experience for [Craft CMS](https://www.craftcms.com)! Build complex pages without even touching a single template. Keystone allows you to organize your content in to components that can be endlessly nested and styled all from the Craft control panel.

[![Screenshot 2023-10-20 at 5.32.38 PM.png](src%2Fresources%2FScreenshot%202023-10-20%20at%205.32.38%E2%80%AFPM.png)](src%2Fresources%2FScreenshot%202023-10-20%20at%205.32.38%E2%80%AFPM.png)

Default Components
------------------

[](#default-components)

Keystone ships with a few default components to get you started, but it really should be extended per-site to provide all the components your site needs. The foundational components that come out-of-the-box are,

- Asset
- Heading
- Link
- Section
- Text

By combining those you can create a page that looks like the above screenshot. Notice how the text is nested within a heading because, like HTML, components can take any number of children to make vibrantly rich experiences.

Creating your own components
----------------------------

[](#creating-your-own-components)

Creating a component is as simple as adding a `.tiwg` file to your site's templates directory. Say you wanted to build a `card` component. You would create a file in the `templates/components` directory named `card.twig`. Keystone automatically picks up any components in that directory.

The `card.twig` file could contain something like this,

```

    {% slot "media" %}{% endslot %}
    {{ props.heading }}
    {% slot %}{% endslot %}

```

That would create a new "Card" component that has a `heading` field and two slots. The heading field could be updated in a normal Craft plain text field and the two slots would take any nested components you wanted to place in them.

It could also contain something much more complex, like this,

```
{# The default name would be `Card` based on the filename of `card.twig` #}
{% export name = "My Great Card" %}

{# The default icon would be a puzzle piece, but you can override that with any SVG here #}
{% export icon %}{% endexport %}

{# Any `prop` that is accessed below will automatically become a plain text field #}
{# If you want to override that you can export propTypes for any field you want to #}
{# provide more information for. #}
{% export propTypes = {
    heading: field('plaintext')
} %}

{# The `attributes` array will come out of the Keystone "Design" tab. You can provide #}
{# defaults for the user via `attributes.merge()`. #}

    {# Slots can be restricted to only allow specific component types so you can tell #}
    {# an area like that that it should only display assets #}
    {% slot "media" allow ["keystone/asset"] %}{% endslot %}

    {# Any field accessed on `props` will be available to edit in the Craft CP #}
    {{ props.heading }}

    {# The default `slot` #}
    {% slot %}{% endslot %}

```

Design
------

[](#design)

The Keystone Designer is configured out of the box to work with [Tailwind CSS](https://tailwindcss.com). Any design attributes set in the UI such as a padding of `4rem` will be converted in to a Tailwind class of `p-[4rem]`.

###  Health Score

16

—

LowBetter than 5% of packages

Maintenance18

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity29

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

620d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2628c4f6f6afddfe0b861cee15ae5b18c673d874f68786ebd1d01bba2dd6bdfb?d=identicon)[markhuot](/maintainers/markhuot)

---

Top Contributors

[![markhuot](https://avatars.githubusercontent.com/u/48975?v=4)](https://github.com/markhuot "markhuot (171 commits)")

###  Code Quality

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/markhuot-craft-keystone/health.svg)

```
[![Health](https://phpackages.com/badges/markhuot-craft-keystone/health.svg)](https://phpackages.com/packages/markhuot-craft-keystone)
```

###  Alternatives

[spicyweb/craft-neo

A Matrix-like field type with block hierarchy

395798.1k10](/packages/spicyweb-craft-neo)[verbb/formie

The most user-friendly forms plugin for Craft.

101372.9k40](/packages/verbb-formie)[solspace/craft-freeform

The most flexible and user-friendly form building plugin!

52664.9k12](/packages/solspace-craft-freeform)[supercool/tablemaker

Create customizable and user-defined table fields.

40141.7k](/packages/supercool-tablemaker)[verbb/vizy

A flexible visual editor field for Craft.

4348.6k](/packages/verbb-vizy)[verbb/social-poster

Automatically post entries to social media.

918.5k](/packages/verbb-social-poster)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
