In the past I have used the APIs to a very small extent. I stored license keys for an app as a content type so that they were easy to manage by employees, and the app connected to a service that called the API.
Probably any fleshed out CMS will check all but the last one of your boxes (nothing is going to be "extremely" easy to host).
Eh, I disagree. The only difference is that it uses Node instead of PHP. You still hook it up to MySQL/MariaDB/SQLite and you're good to go.
Plus I consider its Members feature (https://ghost.org/members/) to be a game-changer, though it's powered by Stripe, so you'll have to be in one of 39 countries supported by it to make it work without extensively hacking your theme.
As for the members feature, wordpress has tons of "membership" plugins. Still though, Ghost landing page for members[0] does a great job explaining why i need this. Excellent design and copywriting
- Integrated API, RSS
- Tons of plugins
- Accessibility, translations
- Easy and powerful editor(Gutenberg)
- Comments sections and forms w/ complete ownership and moderation
- Easy data imports from multiple platforms.
- Users and roles
- 100% open source w/ GPL. You own your data
- Extremely easy and cheap to host and move around.
I love modern tooling and git based workflows for all my project but my "static" 11ty/Gatsby.js blog doesn't provide all these features out of the box. Instead of writing, you end up reimplementing basic cms features.