Monoplane/CpMultiplane - simple PHP frontend, that uses cockpit as a library

It took some time since my last attempt to write this project and it had a really ugly code base. This time I’m quite happy with it.

The idea of a headless CMS is, to keep it headless and Cockpit is also fully functional, when using it as a library. Monoplane provides a basic structure to display collection entries as pages and it is easy to extend with custom controllers. I tried to keep the semantics and naming patterns from cockpit and I just finished a test installation on my localhost and on one remote server and it seems to work :blush:

Most functionality is written down in the readme. Suggestions are welcome.


Not setup yet with custom pages - it just displays the README file for now - but I wanted to share it.

1 Like

Well,… I decided again, that the code base was ugly and I rewrote the whole thing.

The code base wasn’t intuitive, it was designed for very simple portfolio websites with a few pages and it didn’t really support multilingual setups.

If you used or use Monoplane and find bugs, I might fix them, but I will concentrate on CpMultiplane in the future. The code base is cleaner, it supports multilingual pages by default and it has much more features…

Most options from Monoplane will also work in CpMultiplane, but a lot of the config variables changed.

Some new features in CpMultiplane:

  • simple blog functionality
  • multilingual (optional) with language prefix, e. g.:
  • 2 modes for structured content
    1. one collection per content type, e. g. a collection named pages and a collection named posts
    2. a single collection named pages - each entry has a type page or post
  • simple content preview while editing pages
  • a basic responsive theme with scss files
  • contact forms - fully functional without javascript

I have to update the docs some more and a demo is coming soon…

1 Like

It is not really clear how to set up CpMultiplane.

I got only:

Page not found

Something went wrong. This site doesn’t exist.

I’m working on a quickstart script with predefined settings right now. Stay tuned.

I worked hard the last days and did a lot of fixes and improvements. Check out the latest version 0.2.1. It feels stable now.

To get started with predefined settings and addons just use a few quickstart cli commands.

cd ~/html

git clone .
git clone cockpit

./mp multiplane/quickstart --template full --user username --password password
./mp multiplane/load-i18n
./mp multiplane/create-dummy-data --site_name mpfull

I just tested it on a test host (Uberspace) and this is the result of the commands above.
(If you read this in the future, the content on this domain might have changed.)


Updated docs (still work in progress…):

New i18n repo (currently only German and French and some strings are missing):

I published new and updated docs right now:

The new docs repo might also be interesting. It contains the full application, that runs on the remote host:

  • with restructured file layout - CpMultiplane and Cockpit in lib folder
  • includes all databases and config files
  • accounts are handled via environment variables, so cockpit runs without registered users and I was able to publish the database files without sensitive data
  • markdown files in _docs folder are synced with the permalink structure of all pages
1 Like

Oh this is amazing. I was actually in the process of building something similar. I might change my plans! Thank you very much for sharing. :pray:

@VirHeroicus The project is currently in an “in-between” state. I added more features, fixed some bugs and started to rewrite some core logic. Than I didn’t have the time to finish it…

In short: It feels a bit bloated and the source code, as well as the folder/file structure, feel counter-intuitive in many places.

If you want to dig deeper, you should also have a look at this discussion

and this issue

And I still didn’t have a deeper look at a similar project from @Raruto, but it might be interesting for you:

Yep, I tested Raruto cockpit-blog too; but I found out that actually both your projects don’t exactly match what I would like to achieve --so I’m making something from scratch for now (+ I guess I like to reinvent the wheel!)
Thank you for your answer.