Blog Enhanced

The arrival of the AI era has indeed enhanced productivity in the software industry, with significant evidence being the surge in traffic on GitHub, which has even led to a decline in usability. This blog program has also undergone iterations with the help of AI.

Here, we will refer to "developers who clone the blog program and deploy it themselves" as "users," and "readers of the blog posts after deployment" as "visitors."

CMS

Previously, the code and article content were mixed in the same repo, and the blog users (currently just me) had to maintain a local deploy branch that contained markdown, images, videos, and some configurations for the site. Maintaining both code and articles in a single codebase was cumbersome and prone to errors; writing an article felt like a full website release, and even a minor change required a complete container build and deployment. This greatly diminished the motivation to write articles. Therefore, the content of the blog must be decoupled from the blog code.

I compared the following solutions:

Blog Content on Cloud Storage

This is consistent with the previous farbox solution, but many cloud storage providers in China have malicious practices, and I do not want my private articles and images to be heavily scrutinized by them. Non-malicious cloud storage providers: 1. Most are blocked, which adds significant deployment costs for Chinese users; 2. Those that are not blocked and are non-malicious are often small providers, and their lack of being blocked is simply because they haven't attracted attention yet. These small providers often lack APIs and could go out of business at any time. The existence of my blog content needs to be more enduring than they are.

Adding a Database

If articles are stored in a database, it would also increase deployment costs for users, as they would need to find a DB provider like Neon or Supabase. Moreover, storing articles in a database makes browsing the source files less intuitive. Although with coding agents, creating another CMS system is not difficult, the principle of not reinventing the wheel still applies even in the AI era. While AI has significantly reduced development costs, they are not zero, and there are also maintenance costs. Isn't it better to leverage the work others have already done?

Git Backed CMS

This blog ultimately integrated Decap CMS, which directly commits articles to a specified git repo that contains only articles and nothing else. When the repo is updated, GitHub triggers the blog update via GitHub Actions. Nuxt Content automatically renders the content of this git repo. 1. GitHub is likely to exist for the foreseeable future, possibly as long-lived as human civilization; 2. Using GitHub is completely free for ordinary users; 3. The git repo can be easily set to private; 4. Git was designed as a distributed version control system from the beginning, so blog articles automatically gain versioning capabilities and distributed backup capabilities.

Additionally, for binary content such as images and videos, this blog also provides the functionality to configure S3.

In terms of security, Decap pages can be configured with access passwords, and I have also set up Cloudflare Zero Trust Access on top of that.

Project address: https://github.com/portwatcher/blog

Todo

  • AI translation feature
  • Enable Login With GitHub button instead of configuring editor access passwords
@2026-05-24 00:23