What do you like best about ApostropheCMS?
A bit of a backstory why we started using ApostropheCMS first. Most of our projects, or more specifically, our clients, require a way to easily change content on the site i.e. text, images, styles, etc. Well, that’s an obvious notion or requirement, you would think. However, if you are used to working with front-end frameworks such as Vue or React, content is either managed directly via a database or, in better cases, there is a middleware/API. Craft, Sanity, Contentful and others from the JAMstack ecosystem are examples of such CMS tools that can be “plugged in” and allow the end-user to manage content within a friendly (-ier) interface. Those are great but take time to implement from a development standpoint. We could potentially opt-in for so-called “closed gardens” such as Wix or Squarespace which are technically full-fledged WYSIWYG editors. Those are great for fast website developments. However, they have almost zero flexibility in terms of customization. Webflow doesn't cut it either since it is limited on how data are handled (e.g. no internationalisation) and more importantly, you cannot tweak the code in a way you like.
And then there is WordPress, the CMS that around one-third of the current Internet’s websites are built on. WordPress is a bit of a monster with its large library of plugins. On the one hand, it can do many things well if you know which plugins to use and how to use them effectively in conglomeration. But both the user and the developer can hit walls (or get lost) when they seek custom functionalities that WordPress itself or its array of plugins does not offer.
We think that ApostropheCMS fills the gap between easy to use interface and still providing freedom to the developer to add custom scripts, libraries, frameworks, etc. as well as modify the underlying source code. We should pause here for a bit and truly appreciate how ApostropheCMS handles the “content management”. It is a textbook example of a WYSIWIG editor with in-context/in-page editing capabilities. There is no separate dashboard application to access the data - most data can be changed via a modal window or directly on the page. It is as intuitive as you would expect - select a text and rewrite it. Or need to upload an image for your blog or build a form? No problem! Of course, it’s not always so simple, but that’s where the developer can shine by making necessary changes in the code and adding almost any feature required by the end-user. There are no limits in place as the whole platform is built with popular software packages (most notably Node.js, Express, Nunjucks and MongoDB).
Moreover, behind the ApostropheCMS project stands a great team of people who are attentively listening to their users as well as to a growing developer community. Any pressing issues can be discussed with the core team on a Discord channel. And any feature additions or fixes can be proposed on a GitHub repository. Exactly what you would expect from a collaborative community that is constantly pushing the (open-source!) platform to higher standards. Review collected by and hosted on G2.com.
What do you dislike about ApostropheCMS?
ApostropheCMS is excellent at what it can do by default. However, once there is a need to add or extend functionality, the real challenge begins. In most cases, we need to dive deep in order to get certain data (that are generally not available via the Nunjucks data variable) from the database. At the moment, we have to extend the `construct()` function to achieve that. It would be nice to have a Vuex style data store and an Axios style data fetching on the client-side (or possibly even on the server-side?). Or, in other words, a more straightforward and more universal CRUD data operations system. Unlike other frameworks, we used to get lost in the lifecycle of the application. Some of our junior colleagues were often unsure what parts of the code are server-side and what parts were client-side. Also, there are so many methods for each module (+ consider inheritance) used across the project. It takes time for the developer to grasp their operation and/or purpose fully. Indeed the learning curve is relatively steep to use ApostropheCMS effectively. In the end, it comes down to code readability and extensibility that we think could be improved. We would like to stress that this is our experience with A2; A3 may be taking a better approach. It is also important to note that Apostrophe’s documentation is well-written, and it greatly helps to navigate through the “inner workings” of the established system. Review collected by and hosted on G2.com.