Let’s take simple scenario with an online bespoke Content Management Service (CMS). Why — for instance — not to use Amazon Web Services, set up an Ubuntu server and start with Laravel, if we go PHP route? Laravel is much better than WordPress, and WordPress is bad (well, some developers say that). This approach looks good, but it only looks that way. Laravel looks beautiful, but it comes with its, so to speak, not polite children:
- periodic not always backward compatible upgrades and
- unpredictable business dependency injections (like Tailwind CSS, and who knows what is coming in future, look at point 3).
- new stuff: Livewire vs Inertia.js, excellent, both excellent but WHY?
After your job is done, somebody, out there, in your customer’s company, has to take care about it, because CMS may (or may not) need maintenance, or some modifications and extensions from time to time. If the company has no IT department (well, because they hired you, a freelancer), it means that most probably Laravel is NOT an option, unless they can afford to have your services from time to time. Keep also in mind, that for most commercial projects Laravel cannot be used in shared hosting. I found that some companies offer Laravel hosting, but when you start using it, you will find that you need sudo permissions for some Composer stuff and — well — such cheap hosting becomes pretty much useless. In theory, you can use web hosting services like Digital Ocean, AWS or similar, and they are good and reliable, but again — somebody needs to take care about it after you deliver CMS. I found that every reliable Laravel hosting needs some server command line management skills and root/sudo permissions, and all this makes maintenance cumbersome for your customer. How many customers can afford such scenario? Well, some of them can, but not all of them.
In fact, there are at least three things you should tick off before you start development:
- what is your budget (how much working hours you have at your disposal)
- what tools are the best for the job to be done (based on point 1)
- choosing the right tool look at technology, look at what features it delivers out of the box
What I described above is the tip of the iceberg. Anyway, I found that mixed solutions can be very often simpler, more time efficient, easier for maintenance, more cost effective than attempts to develop a project following narrow minded one-is-best-for-all approach. For instance: use WordPress, with cashing, as some kind of advertising (blog/posts) interface - as food for SEO and content eager users, where security is not a big issue - which can be updated by company employees, and create another module based on Laravel or other PHP MVC framework, with higher security level, for managing more important data. And make — if needed — both modules talk to each other via API.
Except that, web services developed in such way that they perform nicely also on mobile devices are welcomed — you cannot get easily this functionality with pure PHP.
In my opinion, if you compare different technologies, like for instance CMSs etc. or different programming languages, the most important thing is to find what they deliver out of the box. Not, what you can develop by using them, because ultimately you can build CMS also based on assembler. Look at a library, language, CMS to find what it delivers out of the box, what it delivers now, because developing missing features can be very painful.
- find what modules and/or technologies you need for your project
- make them working together, connect them seamlessly
Just to give you an example: Cobol, a programming language designed in 1959, has been on a death bed for at least 30 years. It it is still not cold dead, it still delivers in many business companies, delivers reliably.