coaster-cms

Coaster CMS: Laravel 5.3-based System with Context

Recently I’ve seen a few tweets about Coaster CMS and decided to try it out. Not that I would use Laravel-based CMS (I’ve written a review before), but it’s interesting what’s inside and whether the creators are serious about it. So let’s take a look.

About Coaster: Wait, *ANOTHER* CMS?

Let’s start with philosophical note. With WordPress powering 1/4 of the internet, why would anyone bother to create their own CMS? Or, if we look from Laravel perspective – do we really need CMS for custom projects? Here’s the answer from Coaster CMS homepage:

For Agencies: Both you and your customer’s will love Coaster for its ease of use and speed of deployment.
For Developers: Coaster is a developer’s and designer’s best friend. The days of wandering aimlessly through thousands of lines of code are finally gone (unless you want to). Coaster’s block based templating model, built upon Laravel 5’s blade system, makes it easy to keep track of your pages.

To be honest, not really convincing – nothing unique or out-of-the-box here. Also, they have a comparison table on the website – not afraid of the fight against the monsters:

coaster cms comparison

Basically, they claim that Coaster is better than those two. So let’s try it in practice.


Installation Process

There are a few ways to install the CMS – I’ve chosen more developer-friendly composer create-project way. It worked quite well – they add some operations in the end of the process:

coaster cms install

And then you go to the homepage and fill in a few forms typical for any CMS installation: DB credentials, admin user/password, main information about the project etc.

What I liked in particular is that they offer example page data with installation – it massively helps to understand the structure. Otherwise, without sample data, I would get blank pages everywhere and get lost – similarly, like if you buy a pretty WordPress theme and then realize that you need to fill in a huge amount of data, change settings and install plugins to make it look as pretty. So kudos to Coaster CMS creators.

coaster cms install data

What I didn’t like in the installation process is that last step took quite a while (I guess it’s copying files here and there) and browser didn’t show any indicator or percentage or progress bar, only the default Chrome “waiting for…” – I even thought that I had eternal loop somewhere and installation failed. But after 5 seconds or so I got a success message, welcoming to log in.


Admin Area and Managing Pages

Here’s what you see after logging in:

coaster cms dashboard

Everything is pretty clear and straighforward. As in any CMS, you can manage pages and menus. So let’s try to add a page.

coaster cms add page

Ok, there are a few confusing things here:

  • Wait, so where do I fill in the main text for the page? There’s no textarea field. So will there be a “Next Step” after I click “Add Page”?
  • What is “Direct link or document”?
  • What are “Groups” exactly? Or “Top Level Group Page”?

What I did like though is ability to publish a page between certain dates, not only from date like WordPress does.

coaster cms between dates

Ok, so let’s fill in the page and find out what happens next.
I get redirected to an Edit page with more tabs on the top – see Page Info, Main Content, Footer, SEO Content. Oh, so that’s where I need to fill in the text! But wait, so is the page live now already? Well, yeah, if I click View Life Page, I see this:

coaster cms test page

Quite weird, isn’t it? CMS allows you to publish the page not only without content, but without actually allowing you to put it in! But, of course, we can do it afterwards, or choose to not publish the page immediately (although go “Live” is a default option there).

Also, on the page there are weird blocks like “Test Page: None” (what’s None?) and “No posts found” below (what posts? Related ones? By category/topic?)


Other Managing Functions

Of course, it doesn’t end with pages/menu management, there’s some more functionality in Coaster CMS. Next on the list – so-called Site-wide content. At first I didn’t even understand what it meant, but then figured that it’s like Global Settings/Options:

coaster cms settings

Also there are useful functions like Redirects and File Manager, along with typical CMS things like Users / Roles / Themes.

Speaking of Themes, there are only two by default, one of them is basically empty skeleton.

coaster cms themes

The most interesting and unique thing about Coaster CMS is probably Beacons. Let’s try to understand what it is.

coaster cms beacons

Did you understand any of it? I didn’t. Let’s go and read more about those “beacons”.

Coaster CMS is a beacon enabled content management system. Beacons amongst other purposes, allow your website to directly interact with your customers within a physical location such as a shop. Customers will be able to receive special deals, news and other offers when they come into proximity of a beacon. Beacons can also direct your customers to specific web pages on your Coaster CMS powered website such as a product page or contact us page.

Oh, now I get it! Cool thing, never seen it before – so your page can actually change the behavior based on the location of the customer? Uber cool! I guess that’s the biggest Coaster CMS unique functions. Or maybe I’ve just not seen it in WordPress or others?


Laravel Code

As mentioned above, Coaster CMS is based on Laravel 5.3 – pretty new version, well done guys. Let’s see what’s under the hood.

When I opened the folder in PhpStorm, I recognized the default Laravel folder structure, cool! But, not so fast, something was missing – file routes/web.php was completely empty, so how does it all work?..

coaster cms folders

Apparently, it’s all in /vendor folder with their own package, where they stored routes, database migrations and other files:

coaster cms vendor

I’ve found that they upgraded to Laravel 5.3 from 5.2, so maybe part of that routing change (from app/Http/routes.php to routes/web.php) is one of the reasons for this structure.

But still, I didn’t understand the main thing: so I’m a Laravel developer and want to use Laravel-based CMS like Coaster, but I cannot change anything, it’s all in /vendor? Pretty weird. And I haven’t found anything about it in the official documentation for developers – they show how to create new themes/menus/blocks/fields but don’t mention where should I store that code.


Overall Impression: I’m Confused

In general, Coaster CMS is pretty well polished and works ok. As as user, I am able to manage pages and other sections. But the part that I didn’t understand it “what’s next”?

It’s not about the code only, who is the target audience of this system?

  • Is it for non-developer users? Then how is it better/different than WordPress with gazilion plugins/themes?
  • Is it for Laravel developers? Then it’s not easy to extend the CMS to my own needs.

Seems to me that Coaster CMS was born as an internal tool for their own agency, it works perfectly for them and now they are trying to put it out as an open-source solution. But, to be honest, I don’t think many users will be able to adapt it and extend with plugins/themes.

Anyway, big respect for the creators, not only for the Coaster CMS itself, but for being active in Laravel community, especially on Twitter – I recommend to follow them!

Have you tried Coaster CMS? What are your impressions, anything I’ve missed or misunderstood?

Want more tips and articles like this?
20-50 useful links every week on our weekly newsletter - comes out every Thursday!



4 thoughts on “Coaster CMS: Laravel 5.3-based System with Context

  1. Hi Povilas,

    Thanks for taking an in-depth look at Coaster, we’re pleased that the awareness is growing!

    We’ll definitely take your points into consideration and will get fixing the things that seem like more immediate issues!

    One thing I would say that although it isn’t necessarily apparent, extending Coaster is actually pretty easy (from a dev point of view) as it doesn’t really change any default Laravel behaviours. We’ve used it for ecommerce systems and event booking systems and extended it with a number of other small things.

    We’re still working out how to modularise some of these so that they can be added to Coaster by anyone.

    Thanks again for taking a look at Coaster!

    1. Hi Dan,

      Thanks for replying and giving some more lights on some of my points – that was an honest review from first impressions as a user, I definitely might have missed something.

      If it easy to extend then probably it wasn’t clear from the documentation, I didn’t understand which files I need to work with.
      Like, for example, {{ Pagebuilder::block(‘block_name’, $options) }} – where should I stick that code? In controller? Model? View? Provider? Etc.

      But in general, good project, keep up the good work and let me know when there’s a time for the second review with possibly more features!

      1. Hi Povilas,

        The documentation has got some weaknesses and we’re actually working on a video to help make some of Coaster’s features more obvious to developers (a walk through from HTML to website).

        Thanks for getting back, one of the things that might be able to do straight away would be to send you a couple of beacons to which we can assign to you so that you can play about with the beacons a bit to get a feel of how that works.

        Email us if that sounds like something that would interest you!

        1. Great idea about video – the whole world is going visual, no one has time to read.
          Beacons – not really, the idea here was a quick review, not actually using it for my own needs. But thanks for the offer.

Leave a Reply

Your email address will not be published. Required fields are marked *