I highly recommend Directus. It's free to deploy to a DigitalOcean droplet, a breeze to setup, and you get to design your own data models. I have a light node script that fetches content from the API and coalesces it down to a flat JSON file to be consumed by Next.js sites. Definitely a smooth workflow!
If you don’t mind running a separate backend, I love Directus (https://directus.io/open-source/#install) - super easy to use with your existing SQL databases, doesn’t pollute whatever data you have but can build powerful relations quickly, and gives you an easy to use admin interface for setting up your data models without needing to do anything more complicated than answering a few questions.
They provide a JS SDK which is pretty full featured (although there are a few things you might need to fall back to vanilla JS methods for, such as uploading files), and is as simple to import into whichever component you need to fetch data for (either using onMount or as part of an exported `load` function for routes).
Also can be uninstalled easily and leaves your data pure if you decide to code your own endpoints to talk directly to the database from SvelteKit, or swap out for a different back end.
Has the additional big benefit that your frontend can be deployed to static hosting like GH pages, Netlify, Vercel, Cloudflare Pages, or any other server you have that can serve static sites.
WP is slow and doesn't have a lot of basic features that other headless CMS offer with no coding needed. I've been using Directus since they moved to JS and love it. They moved their entire CMS from PHP to Node after 15 years and their API speeds increased 10x. Same functionality, same type of database, same servers, just faster.
Maybe give Directus a try? It sounds like it may do what you're looking for. It supports connecting to a SQL server database and you can give fine-grained permissions to individual users for managing the data in the database.
>We're looking to build a brand new cms and think a vue spa would be exciting but we're a little scared to make that leap.
Why would you ceate your own CMS? There is a lot of existing solutions.
My team is using https://directus.io/
Directus uses Vue for it's frontend editor.
If you are worried about a data grid, ag-grid has vue bindings so far it can handle anything I throw at it.
The problem with wordpress is that it kind of loads everything all the time. For instance, if you add a plugin that is essential to your checkout page, in a lot of cases, that include or dependency will be called on every wordpress page. (there are exceptions to this, but in general, there is not a good mechanism to "only load what you need")
Over time as sites grow, a wordpress site tends to include more and more external code. By separating the content and the site, developers can only load the code necessary for each page, thus speeding up the site. Also, since the database isn't called directly but via api and doesn't exist on the same server, the attack surface for your site is greatly reduced (if you are a company that might draw cyber attacks).
If you are at a scale that matters, then you can also gain from utilizing technologies like SVG to further decrease your load times and overhead. There is a system I have been looking at that has an open source called Directus which looks pretty promising. https://directus.io
It can pair with any of the frameworks (vue, node, gatsby, etc... and there seems to be a community. (not affiliated with them... just looking for a solution myself.)
If you want a lot of flexibility, you could try out Directus. Basically you can define what kind of data you want, name, location, images, anything and in the way you'd want really.
Also works for a team since you can manage user access for the different components quite easily.
The problem lies with the PM thinking you can just plug in a tool and it will work automatically.
I know there are some (like Directus), but they would take considerable time to set up, even so from a frontend only guy.
Directus is pretty good at throwing on top of an existing database.
I’d duplicate your database then setup directus and point it at the copy. Also set the permission for your PM to only be able to modify content and not the database structure.
If all that works then you can point it to the production database.
Directus will also give you an api test and graphlql out of the box that could come in handy in the future.
Good luck.
I had some good experiences using Directus: It's not really a CMS, but a UI layer on your DB. I like the simplicity and its sufficient for my use cases.
All my other ecommerce stuff is handled by Vendure. I like the easy of implementing third party tools with the available strategies. Maybe something to take inspiration from :)
You didn't really narrow down what your use case is but I can break it down:
If you want to take on freelance work for small businesses like bake shops and consulting firms, WordPress is absolutely your answer. If you're looking to create a website with a unique user account system handling 300 concurrent visitors, WordPress will be a nightmare. As I mentioned in another comment, a handful of plugins take development from oppressive to surprisingly frictionless.
Contentful is a compelling solution. I like the idea of having the burden of hosting a CMS lifted off of me but I hate vendor lock-in. I've made a site with it and it went okay I guess?
If you're looking for something simple, well made, and unopinionated your best bet might be Directus. It sits somewhere between a DB manager, a CMS, and auto-provisioned API. All the integration (frontend, SaaS, mobile app or otherwise) is left to the developers. I've only toyed with Directus but I can't wait to make a billable project with it.
Check out Directus. I use it to develop like of business apps and all content is on the same system... I'm using is it in a shared hosting environment as well. I find it super easy to build with.
Check out directus.io, it should tick most of the boxes - API first (well, only), completely customizable, lots of field types, free and self hoste, and multilingual capabilities (which I admit are a bit tricky to set-up). If you know Vue you can write custom components/modules too.
If you have any question feel free to shoot me a pm, I've been using it quite a bit, with specs similar to yours. There's a pretty active slack channel too.
in the next few months they're gonna launch a new version, which seems to be shaping up pretty nicely, it's almost a complete rewrite.
Cockpit is a great starting point, but customizing it is a pain. There are quite a few addons for it available, but the official docs are pretty barebones. If you want to add your own set of features you'll have to teach it yourself by looking at other addons or searching the forums.
https://directus.io/ is another good headless CMS, you could think of it like phpMyAdmin on steroids. You're working more directly with the database (setting up relations and such), can be a good and a bad thing.
The UI is pretty clean (darkmode) and is written in Vue, but most importantly the docs cover all the important things (such as writing your own addons).
​
If you're just looking for a simple one where your editors just need a simple WYSIWYG editor and a few fields, then I'd just go with cockpit. Installing it is pretty much just a matter of uploading a few files. If you expect to do some custom work (like widgets and such) then I'd pick Directus.
I'm a fan of https://directus.io/, I just finished a Nuxt site that uses it. It should be able to do what you're describing. There's a JS SDK you can import in your Nuxt templates or store. You can host it yourself (it's open source) if you don't want to use their SaaS hosting.
Thanks for replying! directus.io is giving me a good feeling when I look at it. I'm gonna dive into it!
But what my exams concerns, yes. WP isn't allowed because it is known as an application, where most frameworks are not..
What are the precise constraints on your exam? I can't believe they'd exclude specifically something like Wordpress but not other libraries/frameworks. That would be stupid.
If that is the case I recommend https://directus.io/