Skip to main content
  1. Posts/

Headless CMS Without a PC on GitHub Pages

Chris Ayers
Author
Chris Ayers
I am a father, nerd, gamer, and speaker.

Headless CMS Without a PC on GitHub Pages

I’ve been running my site on GitHub Pages - no server, just git and GitHub Actions. But I still want a CMS that works on mobile, without dragging around a laptop or doing a Git clone. Enter Sveltia CMS + Sveltia CMS Auth on Cloudflare Workers. Here’s how to glue it together.

Why This Setup?
#

  • No paid services like Netlify.
  • I edit blog posts from my phone-even waiting in line for coffee.
  • No git install, no desktop.

A solution exists: Sveltia’s Cloudflare Workers-based authenticator makes GitHub-backed CMS possible on GitHub Pages.

🎯 Step 1: Add Sveltia CMS to Your Site
#

In your /admin/index.html, include Sveltia, a lightweight, modern CMS:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="robots" content="noindex" />
    <title>Content Manager</title>
</head>

<body>
    <script src="https://unpkg.com/@sveltia/cms/dist/sveltia-cms.js"></script>
</body>

</html>

No heavy JS, no React-just Svelte. Touch support, dark mode, fast. It handles GitHub directly via your browser or the auth worker.

πŸ” Step 2: Deploy the Sveltia-CMS-Auth Worker
#

  1. Fork or import sveltia-cms-auth into Cloudflare Workers.
  2. Deploy it; grab the Worker URL.
  3. Register a GitHub OAuth App, using the Worker URL plus /callback for the redirect.
  4. Add client credentials and your domain to Workers environment variables. Deploy again.

Now your site has its own auth client-it communicates with GitHub when you click Login.

πŸ›  Step 3: Wire It All Up in Your Config
#

In your Sveltia admin/config.yml, under backend:

backend:
  name: github
  repo: <OWNER>/<REPO> # Path to your GitHub repository
  # optional, defaults to master
  branch: main
  base_url: https://<WORKER>.workers.dev
# This line should *not* be indented
media_folder: "assets/uploads" # Media files will be stored in the repo under images/uploads

That base_url points Sveltia’s OAuth to your Worker. Push the change, and your /admin/ loads Sveltia. Clicking “Login” redirects to GitHub via your Worker, and you’re ready to edit.

πŸ“± Step 4: Edit From Your Phone
#

Visit yourgithubpages.com/admin/ on your mobile device. The UI is responsive and built for touch. I’ve easily edited blog posts without needing VS Code or Terminal. Sveltia handles commit and push transparently.

Quick FAQ
#

Q: Why not Decap CMS or Netlify CMS?
A: They typically rely on external OAuth providers. Sveltia + Cloudflare Workers solves that neatly.

Q: Does it require a PC?
A: Only initial setup needs a desktop. Afterward, your CMS runs entirely in-browser, even mobile.

Q: Self-hosted?
A: GitHub Pages hosts the static site. The CMS runs client-side, and auth is on Cloudflare’s free tier.

TL;DR
#

GoalTool
GitHub-only hostingGitHub Pages (no server)
Modern, touch-ready UISveltia CMS
OAuth via GitHubSveltia-CMS-Auth Worker
Zero laptop editsFully mobile browser-compatible

This combo gives me a mobile-friendly CMS experience without extra hassle. If you’re editing your Jekyll-based GitHub Pages blog without a PC, this setup hits the mark.

Related Resources#

Related

Multiple Domains on GitHub Pages

Something I found out after moving from WordPress to GitHub Pages is that out of the box you can only host a single domain for a repository with GitHub Pages. This is a problem for me because I have a number of domains I was hosting at WordPress that I wanted to point at my GitHub Pages. Official Docs and the limitation # So officially, GitHub pages doesn’t support multiple domains. The docs here https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/troubleshooting-custom-domains-and-github-pages#custom-domain-names-that-are-unsupported state:

Customizing the Jekyll Theme

I haven’t done a lot with jekyll in the past, but I’m a big fan of Markdown everything. For me that usually means I’m taking notes in Markdown Obsidian, doing diagrams in mermaid in Azure DevOps or https://mermaid.live/. I’ve even started turning my talk slides into Markdown with a tool called MARP. Understanding when I use standard Markdown or some sort of templating language (jekyll uses Liquid) has been fun. I’ll do something in HTML or Markdown, then find out that Jekyll or my theme already has helpers to render that (like gists, videos, and figures). Sometimes rendering more advanced things takes a little tweaking of Jekyll and the theme.

Migrating from WordPress to GitHub Pages

I’ve been hosting on WordPress for a while. I wanted something that worked pretty well and was easy to work with. I picked a decent theme, added some plugins, pointed my domains and was up and running. I would work on blogs in Markdown, and then paste the txt into a Markdown. I could upload a few images and move them around in a wysiwyg. Lately, I’ve been doing a lot more in Markdown. All my conference talks were in PowerPoint but I’ve started switching over to Markdown slides using MARP. I should probably do a post on MARP sometime (I did :-) ). I wanted to reduce my overhead of WordPress Hosting and get back into more direct styling and coding of my theme. I decided to switch my hosting to Jekyll on GitHub Pages.

Understanding AI and Prompting Techniques Part 1

Understanding AI and Prompting Techniques Part 1 # Artificial Intelligence (AI) has rapidly evolved from science fiction to an integral part of our daily lives, transforming how we interact with technology and reshaping industries worldwide. Whether you’re using ChatGPT to draft emails, asking Copilot to write code, or generating images with DALL-E, understanding how to effectively communicate with AI systems has become an essential skill. In this first part of our series, we’ll explore foundational concepts of AI, machine learning, deep learning, and generative AI, then dive deep into the art of prompting-the key to unlocking AI’s full potential.

Stir Trek 2025 and Multiple Dev Containers

This month at Stir Trek 2025, I presented on Dev Containers and GitHub Codespaces, demonstrating how these tools streamline both local and cloud-based development workflows. The session covered the essentials of creating portable development environments, customizing containers with features and extensions, and launching Codespaces directly from your repository. A lively Q&A followed, with attendees asking about strategies for running and working with multiple containers. Below, I’ve distilled those discussions and provided a deeper dive into shared container configurations across multiple projects-including folder structures, Docker Compose setups, VS Code workflows, and advanced tips you can apply in your own work.