PHPackages                             chinstrap-cms/default-template - 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. [Templating &amp; Views](/categories/templating)
4. /
5. chinstrap-cms/default-template

AbandonedArchivedLibrary[Templating &amp; Views](/categories/templating)

chinstrap-cms/default-template
==============================

Default template for the Chinstrap flat file CMS

021PHP

Since May 23Pushed 5y ago1 watchersCompare

[ Source](https://github.com/chinstrap-cms/default-template)[ Packagist](https://packagist.org/packages/chinstrap-cms/default-template)[ RSS](/packages/chinstrap-cms-default-template/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Chinstrap
=========

[](#chinstrap)

[![Build Status](https://camo.githubusercontent.com/4e4c28cbab27ed89040bb67c010f6eb7735bde7ed71c30b25ae06b6367bde5e0/68747470733a2f2f7472617669732d63692e6f72672f6d6174746865776264616c792f7374617469636f2e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/matthewbdaly/statico)[![Coverage Status](https://camo.githubusercontent.com/797d9aab22c1cedce6010b32b97d003120503bee0f0154f6c018e5cf56a959b3/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f6d6174746865776264616c792f7374617469636f2f62616467652e7376673f6272616e63683d6d6173746572)](https://coveralls.io/github/matthewbdaly/statico?branch=master)[![Type Safety Status](https://camo.githubusercontent.com/057c65ea0da8c65743928ec40cb2c87dca59157390b8058799e95f5d4abad9f3/68747470733a2f2f73686570686572642e6465762f6769746875622f6d6174746865776264616c792f7374617469636f2f636f7665726167652e737667)](https://camo.githubusercontent.com/057c65ea0da8c65743928ec40cb2c87dca59157390b8058799e95f5d4abad9f3/68747470733a2f2f73686570686572642e6465762f6769746875622f6d6174746865776264616c792f7374617469636f2f636f7665726167652e737667)

A minimal CMS. Features include:

- Defaults to pulling content from Markdown files, but you can implement your own source to pull it from any source you like, whether that's a database, API or whatever else is appropriate
- Files are fetched using Flysystem, meaning they can be stored locally and kept under version control, or pulled in from an S3 bucket, Dropbox folder or an FTP server
- Uses Twig for templating
- Comes with Laravel Mix and Tailwind configured out of the box
- Easy configuration with PublishingKit/Config - you can configure it with YAML, PHP arrays, or any other supported configuration mechanism
- Caching built in, with support for multiple backends
- Support for multiple Monolog loggers
- Search using Fuse.js
- Plugin system (experimental at this stage)

Planned features include:

- Differing configuration between environments - so your dev and production environments can use different cache backends, for example
- Dynamic form generation from config
- Multiple notifiers for form submission, including mail, SMS and webhook support, for easy integration into your own systems
- Dynamically generate navigation bars from content
- Support for taxonomies

The Chinstrap CLI
=================

[](#the-chinstrap-cli)

Chinstrap comes with its own command-line runner, which you can call like this:

```
$ php statico

```

This will display the available commands.

Where's the admin?
==================

[](#wheres-the-admin)

By design, Chinstrap doesn't include an admin interface out of the box. The intention is to optimise for developer's workflow rather than that of site owners, and so Markdown files are a better way to manage that.

In theory it should be possible to create a plugin to add the admin routes, but as at right now the source and document interfaces don't include the ability to do anything other than read content. Once that changes it should be possible to create an admin interface as a plugin.

How do I set it up?
===================

[](#how-do-i-set-it-up)

As it is right now, it's a single web application, and not ready for use.

The plan is that once it's feature complete, I'll divide it into two repositories. `statico/core` will be the code in the `src/` folder, and will contain the application code proper. The rest will form the basis of `statico/template`, which will be an initial boilerplate that pulls in `statico/core` as a dependency. Users wanting to build a new project will run the `composer create-project` command to pull in `statico/template`, and that will give them a basic boilerplate that includes some Twig views, config files, and basic bootstrapping. The aim will be to keep as much as possible in `statico/core` so that as far as possible, updates are merely a matter of running `composer update`.

What's the intended use case for this?
======================================

[](#whats-the-intended-use-case-for-this)

Basically, the ideal site for using Chinstrap meets the following criteria:

- Is a brochure site
- Is maintained primarily by developers (as opposed to site owners)

In my experience, many of these sites get built with Wordpress, for two reasons:

- Wordpress has substantial mindshare
- Supposedly, the fact it has an admin interface lets clients update it themselves

However, in my experience, Wordpress often turns out to be too complex for many non-technical users to administer, so developers end up being the ones asked to make any changes. They therefore have to cope with an interface that's not optimised for their skill sets.

Add to that the fact that Wordpress, at least out of the box, lacks a proper templating language and front end scaffolding, puts too much in the database, and isn't set up to handle different environments correctly, and you have a recipe for disproportionate amounts of frustration. Also, Wordpress requires a database, can be slow, and is a common target for exploitation.

Instead, Chinstrap enables a workflow more familiar to developers who use modern MVC frameworks like Laravel. You're given a basic boilerplate to get you started, and can create and theme your own layouts, as well as add Javascript. Content can either be stored locally, so it can be version controlled with the rest of the site for easy rollbacks, or pulled in using one of the remote filesystems. This can allow for some more creative workflows, such as pulling content from a Dropbox folder.

If you have a large number of similar sites, Chinstrap may suit your use case. You can easily copy the layout and front end files between installs, and content files can either be copied, or pulled from the same remote source. Similarly, small or relatively simple sites that don't change often may also be a good fit.

How do I build and install plugins?
===================================

[](#how-do-i-build-and-install-plugins)

The core of a Chinstrap plugin is its `Plugin` class. This must implement `Chinstrap\Core\Contracts\Plugin`, which defines a single `register()` method, which will be called during the application bootstrap. Any setup your plugin does must either be done in this method, or in a method or function it calls. The `Plugin` class is instantiated from the container, so you can use type hinting to inject any required dependencies in the constructor.

Once you've implemented your plugin, it must be available in your project (either in the project folder, or pulled in via Composer). You can then register it in your configuration files. If you're using YAML, for instance, you might register your plugin like this:

```
plugins:
  - My\Super\Awesome\Plugin
```

At some point I'll create a boilerplate for building Chinstrap plugins.

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity30

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/a596e5052494181ddc20aedefbebef191cc81008e320df098608c54a1dea7350?d=identicon)[matthewbdaly](/maintainers/matthewbdaly)

---

Top Contributors

[![matthewbdaly](https://avatars.githubusercontent.com/u/450801?v=4)](https://github.com/matthewbdaly "matthewbdaly (57 commits)")

### Embed Badge

![Health badge](/badges/chinstrap-cms-default-template/health.svg)

```
[![Health](https://phpackages.com/badges/chinstrap-cms-default-template/health.svg)](https://phpackages.com/packages/chinstrap-cms-default-template)
```

###  Alternatives

[limenius/react-bundle

Client and Server-side react rendering in a Symfony Bundle

3851.2M](/packages/limenius-react-bundle)[area17/laravel-auto-head-tags

Laravel Auto Head Tags helps you build the list of head elements for your app

4616.1k](/packages/area17-laravel-auto-head-tags)[jelix/wikirenderer

WikiRenderer is a library to generate HTML or anything else from wiki content.

1712.3k1](/packages/jelix-wikirenderer)[webkinder/sproutset

A Composer package for handling responsive images in Roots Bedrock + Sage + Blade projects.

282.2k](/packages/webkinder-sproutset)

PHPackages © 2026

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