Pages CMS

The No-Hassle CMS for GitHub

Tired of juggling Git and YAML to update your Next.js, Astro, Hugo or Nuxt website? Make it easy on you and your team, get a user-friendly CMS running straight on top of GitHub.

Screenshot (light mode)
Watch the intro Intro

Works with all popular static site generators

  • Jekyll
  • Nuxt.js
  • Next.js
  • Astro
  • Eleventy
  • Hugo
  • Vue.js
  • Gatsby
  • Docusaurus
  • Pelican
  • Jekyll
  • Nuxt.js
  • Next.js
  • Astro
  • Eleventy
  • Hugo
  • Vue.js
  • Gatsby
  • Docusaurus
  • Pelican

Packed with features...

Zero cost, zero geek-speak: give your team a user-friendly CMS.

Sign in with GitHub

Frequently asked questions

Is Pages CMS free?

Yes, Pages CMS is 100% free, whether you want to use the online version or self-host it. It is a simple front-end app with very limited backend capabilities, which can run on Cloudflare Pages for free. The open-source version is MIT licensed; you can host it on your own Cloudflare account for free as well.

Do you only support GitHub?

For now, yes. But I've already started looking into adding GitLab and Bitbucket. Pull requests and issues are welcome: github.com/pages-cms/pages-cms.

Do I have to host Pages CMS on Cloudflare Pages?

Not necessarily: Pages CMS is a single-page app with a handful of serverless functions to facilitate the OAuth dance with GitHub. You could easily run it on Netlify, Vercel, AWS, Render... You would just need to make these 3 functions work on your platform of choice: github.com/pages-cms/pages-cms/tree/main/functions/auth. With that being said, Cloudflare has a generous free tier which works great in this case.

Why do you need full access to all of my GitHub repositories?

Well, the GitHub API kinda sucks when it comes to OAuth scoping. Pages CMS relies on the OAuth App flow, which doesn't allow for granular permissions. The alternative would be to use the GitHub App flow instead, but:

  • It's a lot more complicated and would require us to store and orchestrate a lot more in the backend.
  • Since we need to impersonate users (for things like commits), we anyway need to request user tokens, which technically would give us the same access as with the OAuth App flow.

However, we do not store your GitHub OAuth tokens in the backend. The serverless functions used to facilitate the OAuth login pass the OAuth token to the front-end, allowing it to directly communicate with the GitHub API.

And if you still don't trust the online version, you can deploy your own version for free in less than 10 minutes our Cloudflare Pages.

Do let me know if I got some of this wrong (@hunvreus), and feel free to suggest improvemens in the issue queue.

Why yet another CMS?

I hear you, but I needed Pages CMS to exist. I love static site generators, and while YAML front matter and Markdown aren't terribly complicated, editing content and uploading images using GitHub.com or Git isn't really user-friendly, especially if you're updating the site with a whole team. For that reason, a lot of teams use a headless CMS like Contentful, Sanity, or Strapi. That works, but it's one more dependency and is overkill in most cases. You could also use something like Decap CMS (formerly Netlify CMS). Really cool project, but I've never been a fan of the user experience. And most importantly, I wanted something as simple as possible. Back in 2018, I had built a lightweight CMS (Jekyll+) with the idea of getting the CMS set up with a single configuration file. Pages CMS is the next iteration of that idea.

What's the "Pro" plan?

I haven't completely figured it out, but there are a few features I'm working on that I believe would only be relevant to larger teams or professional use. Things like real-time collaboration, advanced media management (e.g., image manipulation), or S3 integration. This not only requires a lot more work but also hosting costs. If you're interested, drop me a line: [email protected] (@hunvreus).

Who made this? It sucks!

I did: Ronan Berder (@hunvreus). I'm a half-decent developer, but I sure could use some help to make this suck less: github.com/pages-cms/pages-cms.