I think any CMS with proprietary lock-in is not good, not to mention any IaaS (Infrastructure as a Service). Any developer's goal in my mind must be to have transferable skills. That is not suggesting using an IaaS makes your skills non-transferable, I'd argue the opposite in most cases. Yet, I digress. I believe an API is a must.
Our popular CMS's are no longer monolithic or they are moving towards the headless CMS's. which are simply content editors of any type, not forced into one platform (Wordpress, Joomla, Ghost). Instead, the Headless CMS's primary purpose to make your data store flexible. Your datastore is what makes your site unique with its content, and the actual data store is typically some sort of database (In most instances) and that could be MySQL, Firebase, Mongo, or Any SQL service.
Decouple All in One
With new front end tech, vue angular react you name it, you can build a site any way you like. You now have a decoupled front-end and back-end. This reduces time, cost, changes, from upgrading an entire CMS that may come with a new template system and calls to fetch data.
Another benefit is this will keep you updated on front technology if you do the back-end.
Separate Data Structure
Some systems have API's built-in, or the majority or large ones do. This is okay yet I would suggest having your data completely separated from its application. WordPress has an API, but the WordPress database scheme is a laughing stock and cannot be upgraded to properly normalized SQL tables or else it would break many sites.
With a separate data structure; Where your data is stored, you can define a schema (or not) but you have more liberty than leaving a lingering CMS around.
Use Case with Providing Data
Content Hub, whether solo or with a group of creators.
- John makes articles.
- Mark has a canonical article.
- Jean has a canonical article.
- John fixes citations.
Mark and Jean do not have to be notified to update their database. It is API driven from a content hub.
Use Case with Design