Moving to a GitHub CMS
swyx
Here are my requirements for blogging platforms:
- Should be easy and fast to update - no long or flaky build process
- Should store images easily - as simple as a paste from my clipboard - anything else is unnecessary friction
- Should be easily editable from mobile
- (optional) should support comment system and different layout formats
- (optional) wysiwyg markdown based editing - no funky blocks with lots of lockin
After thinking through local markdown, GraphCMS, Notion, Strapi, Directus, and so on, I’ve finally settled on using GitHub as a CMS.
I’ve long admired the OneGraph approach to blogging:
- https://github.com/OneGraph/onegraph-blog
- https://github.com/OneGraph/onegraph-changelog/issues?q=is%3Aissue+sort%3Aupdated-desc+is%3Aclosed+label%3APublish
However their use of Relay is a bit too high overhead for me. So I built my own using just the GitHub REST API.
The primary problem with GH’s API is that it rate limits at 5000 requests an hour, which is dicey for a high traffic blog. So either you prerender at build, or you cache on request (we can also cache on build). Netlify’s On Demand Builders are a partial solution to this - partial because content updates will not be respected. I think this is an acceptable tradeoff for all the other functionality github as a cms offers.
The PR for doing this is available here: sw-yx#9
Edit: users may also want to explore using Utterances for authed comments https://github.com/utterance/utterances
Edit 2: I answered some FAQs here sw-yx#50