How I Turned GitHub into a Headless CMS
After publishing my PHP micro-framework PointArt, I built a website for it. However, the site needed some dynamic content — especially the changelog and roadmap — to update the moment something cha...

Source: DEV Community
After publishing my PHP micro-framework PointArt, I built a website for it. However, the site needed some dynamic content — especially the changelog and roadmap — to update the moment something changes on GitHub. My first instinct was an admin panel. Then I stopped myself — the content already lives on GitHub, why enter it for the second time? It also opens a door for human error. So I made GitHub the CMS instead of an admin panel and used webhooks to keep a local database in sync automatically. Architecture GitHub (push or release event) → POST /hooks/* (HMAC-verified) → Parse payload → Upsert / delete DB rows → Website reads DB on page load Two content types, two sync strategies: Content Source Strategy Changelog GitHub Releases Incremental — insert/update/delete per event Roadmap CONTRIBUTING.md Full sync — re-fetch + delete-all + re-insert on every push The website never calls the GitHub API at request time. It reads from the local database; GitHub keeps that data fresh. Verifying