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:
Basically, they claim that Coaster is better than those two. So let’s try it in practice.
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:
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.
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:
Everything is pretty clear and straighforward. As in any CMS, you can manage pages and menus. So let’s try to add a 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.
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:
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:
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.
The most interesting and unique thing about Coaster CMS is probably Beacons. Let’s try to understand what it is.
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?
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?..
Apparently, it’s all in /vendor folder with their own package, where they stored routes, database migrations and other files:
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?