The missing CMS for me
As I was planning to migrate from DatoCMS for a client website that requires some configuration and a CMS, (the website is written in Astro, which I really like for content-based websites), I started looking for alternatives that suited my idea of the perfect CMS.
Requirements
- Open source and self hostable.
- It should be Git-based.
- It should be able to change files inside a folder in my repo and trigger a redeploy (With the speed of Cloudflare Pages + a good content collection cache, some of my websites take only about 35 seconds to deploy).
- It should live inside my website and mount itself under a path, such as “/admin” or “/cms”. I like to work under a single “monolithic” code base per-client.
- I should be able to interact with it directly through its package/library instead of using fetch or other methods. But if that’s not possible, at least I should be able to access the files through the file system using astro content collection API.
- It shouldn’t use GraphQL.
- It shouldn’t require my clients (the ones actually using the CMS) to write markdown or log in with a GitHub account. Simple password/secret-based authentication is enough, honestly, it does not even need authentication, I could put the path to a policy on cloudflare zero trust access and the Github API Token should deliver the changes to the repo.
Essentially, what I’m looking for is a tool that:
- Allows me to define the schema for the CMS collections.
- Updates these collections under
src/content
in Astro. - Lets my clients authenticate with a password-based approach, triggering changes on the GitHub repo with an API token set as an environment variable or something similar.
- Redeploys the website when content changes.
What I found that came close
Keystatic
Keystatic was the closest I got to the perfect CMS. It came so close. However, my client needs both a GitHub account and access to the repo to use the CMS, which is a dealbreaker. It has a pretty UI and decent i18n, the configuration is nice and pairs well with astro. If only I could use it with a password based approach and then they could make changes to the repo with git under a api token, it would be perfect. I even started using it for this website, and I love it. However, I’m a technical person, so using a github account feels nice, but not for my clients.
Decap CMS
Decap is similar to keystatic but worse configuration and UI + pretty much gatekeeped to be used with Netlify which I have never used and don’t plan to. Yes, you can use without it, but then you’re on your own and fighting against the system.
Conclusion
While I could certainly build something to meet these requirements, I unfortunately don’t have the time at the moment. What surprises me is that I haven’t found a tool that checks all the boxes, as I assumed this would be a common need for developers. Perhaps there’s an obvious solution I’m overlooking, or maybe there’s a lesser-known CMS that fits these criteria?