2026-11-01 · Projects

astro-blog-admin: a real admin panel for a static blog

Content-as-files should not mean editing files by hand forever. astro-blog-admin manages the whole site in the browser through the GitHub API — the blog stays purely static, the admin makes it pleasant.

astro-blog-admin: a real admin panel for a static blog

Everything in astro-blog is a file. That is great for backups and migration, but not entirely great for daily upkeep: changing one navigation label should not mean opening an editor, hunting for the file, and being careful not to break a format. astro-blog-admin exists for exactly that — an admin panel running on Cloudflare Pages / EdgeOne Pages where, once you log in, posts, notes, site settings and the image bed are all manageable in the browser, while the blog itself stays purely static with zero database.

Why a static blog needs an admin

The file advantage stays

The admin does not change the content-as-files foundation. Every character it writes ends up as a commit in the blog repository: posts as Markdown files, settings as JSONC files. Stop using the admin one day, and the files are all still there, building as usual.

Daily maintenance should be easy

Frequent operations should be a few clicks: publish a post, fix a slogan, swap a cover, add a homepage filter. Push those back into editors and command lines, and a blog soon goes quiet simply because updating it is a chore.

Login and security

The admin signs you in with GitHub (OAuth via a GitHub App), and only the repository owner gets in. Signed out, admin entry points redirect to the login page, random public URLs are a 404, and unauthorized API calls are rejected outright. There is no home-grown account system — and therefore no password database to leak.

What it manages

  • Posts: lists, creation, editing and deletion across five language versions, draft and popular flags, with per-language deletion;
  • Notes: date changes, renames and the draft switch, all in one card;
  • Page settings: visual editing of every JSONC settings file — homepage, about, Apple subscriptions, services (the next article goes deeper);
  • Image bed: upload-and-get-a-link, image management, and a public upload page;
  • Publishing: every change is committed back to the blog repository through the GitHub API, and the hosting platform rebuilds and ships it.

How the two projects relate

They are two separately deployed sites: the blog is a static site, the admin is an SSR app with a server side. The admin knows nothing about the blog’s build internals — only the file conventions in the repository; the blog does not depend on the admin existing. That loose coupling lets either side be replaced or moved on its own.

Next: the admin’s core page, the visual settings editor.

2026-11-01 · プロジェクト紹介

astro-blog-admin:静的ブログに本物の管理画面を

コンテンツがファイルであることは、永遠に手作業でファイルを編集するという意味ではありません。astro-blog-admin は GitHub API 経由でサイト全体をブラウザから管理します——ブログは純粋な静的のまま、管理画面が快適さを担います。

astro-blog-admin:静的ブログに本物の管理画面を

astro-blog のコンテンツはすべてファイルです。バックアップや移行には理想的ですが、日々の運用には少し不便です。ナビゲーションの文言 1 つ変えるのに、エディタを開き、ファイルを探し、書式を壊さないよう気を遣う——astro-blog-admin はまさにそのために作られました。Cloudflare Pages / EdgeOne Pages 上で動く管理画面で、ログインすれば記事、ノート、サイト設定、画像ホスティングのすべてをブラウザから管理でき、ブログ本体は純粋な静的・データベースなしのままです。

静的ブログに管理画面が要る理由

ファイルの利点は揺るがない

管理画面は「コンテンツ即ファイル」の基盤を変えません。書き込む文字はすべて、ブログのリポジトリへのコミットになります。記事は Markdown ファイル、設定は JSONC ファイル。いつか管理画面を使わなくなっても、ファイルはそのまま残り、ビルドは通常通り走ります。

日々の運用は楽であるべき

頻繁な操作は数クリックで済むべきです。記事を公開する、キャッチコピーを直す、カバーを差し替える、トップページに絞り込みを足す。それらをエディタとコマンドラインに押し戻せば、ブログは「更新が面倒」という理由で静かになっていきます。

ログインとセキュリティ

ログインは GitHub(GitHub App の OAuth)で、入れるのはリポジトリの所有者だけ。未ログインでは管理入口はログインページへリダイレクトされ、適当な公開 URL は 404、未認可の API 呼び出しは拒否されます。独自のアカウント基盤を持たないので、漏れるパスワードデータベースも存在しません。

管理できるもの

  • 記事:5 言語版の一覧・新規作成・編集・削除、下書きと人気フラグ、言語版ごとの削除;
  • ノート:日付変更、リネーム、下書きスイッチを 1 枚のカードで;
  • ページ設定:トップページ、About、Apple サブスクリプション、サービスなど、すべての JSONC 設定のビジュアル編集(次回詳しく);
  • 画像ホスティング:アップロードしてリンク取得、画像管理、公開アップロードページ;
  • 公開:すべての変更は GitHub API 経由でブログのリポジトリにコミットされ、ホスティングが自動で再ビルドして反映します。

2 つのプロジェクトの関係

両者は別々にデプロイされた 2 つのサイトです。ブログは静的サイト、管理画面はサーバー側を持つ SSR アプリ。管理画面はブログのビルド内部を知らず、リポジトリ内のファイル規約だけを知っています。ブログ側も管理画面の存在に依存しません。この疎結合により、どちら側も単独で置き換え・引っ越しができます。

次回は管理画面の中核ページ、ビジュアル設定エディタに入ります。

2026-11-01 · 프로젝트 소개

astro-blog-admin: 정적 블로그를 위한 진짜 관리 화면

콘텐츠가 파일이라는 말이 영원히 파일을 손으로 고치라는 뜻은 아닙니다. astro-blog-admin은 GitHub API를 통해 브라우저에서 사이트 전체를 관리합니다——블로그는 순수 정적으로 남고, 관리 화면이 편리함을 맡습니다.

astro-blog-admin: 정적 블로그를 위한 진짜 관리 화면

astro-blog의 콘텐츠는 전부 파일입니다. 백업과 이사에는 좋지만 일상적인 유지보수에는 전부가 좋지만은 않습니다. 내비게이션 문구 하나 바꾸자고 편집기를 열고, 파일을 찾고, 형식을 깨지 않으려 신경 써야 한다면 곤란합니다. astro-blog-admin은 바로 그 지점에서 만들어졌습니다——Cloudflare Pages / EdgeOne Pages 위에서 도는 관리 화면으로, 로그인하면 글, 노트, 사이트 설정, 이미지 호스팅까지 전부 브라우저에서 관리할 수 있고, 블로그 본체는 순수 정적·데이터베이스 없음으로 남습니다.

정적 블로그에 관리 화면이 필요한 이유

파일의 장점은 흔들리지 않는다

관리 화면은 “콘텐츠 즉 파일”이라는 토대를 바꾸지 않습니다. 써넣는 모든 글자는 결국 블로그 저장소의 커밋이 됩니다. 글은 Markdown 파일, 설정은 JSONC 파일. 언젠가 관리 화면을 쓰지 않게 되어도 파일은 그대로 남아 정상적으로 빌드됩니다.

일상 유지보수는 편해야 한다

자주 하는 일은 몇 번의 클릭으로 끝나야 합니다. 글 발행, 문구 수정, 커버 교체, 홈페이지 필터 추가. 이런 일을 편집기와 명령줄로 되돌려 보내면 블로그는 “업데이트가 귀찮아서” 조용해지기 쉽습니다.

로그인과 보안

로그인은 GitHub(GitHub App의 OAuth)로 이뤄지며, 저장소 소유자만 들어올 수 있습니다. 로그아웃 상태에서는 관리 입구가 로그인 페이지로 이동하고, 임의의 공개 주소는 404이며, 인증 없는 API 호출은 거부됩니다. 자체 계정 시스템을 만들지 않으니 유출될 비밀번호 데이터베이스도 없습니다.

관리할 수 있는 것

  • 글: 다섯 언어 버전의 목록·작성·편집·삭제, 초안과 인기 표시, 언어 버전별 삭제;
  • 노트: 날짜 변경, 이름 바꾸기, 초안 스위치를 한 장의 카드에서;
  • 페이지 설정: 홈페이지, 소개, Apple 구독, 서비스 등 모든 JSONC 설정의 시각적 편집(다음 글에서 자세히);
  • 이미지 호스팅: 업로드하고 링크 받기, 이미지 관리, 공개 업로드 페이지;
  • 발행: 모든 변경은 GitHub API를 통해 블로그 저장소에 커밋되고, 호스팅 플랫폼이 자동으로 다시 빌드해 반영합니다.

두 프로젝트의 관계

둘은 따로 배포된 두 개의 사이트입니다. 블로그는 정적 사이트, 관리 화면은 서버 측을 가진 SSR 앱입니다. 관리 화면은 블로그의 빌드 내부 구조를 모르고 저장소 안의 파일 규약만 압니다. 블로그 역시 관리 화면의 존재에 의존하지 않습니다. 이 느슨한 결합 덕분에 어느 쪽이든 따로 교체하거나 이사할 수 있습니다.

다음 글에서는 관리 화면의 핵심 페이지인 시각적 설정 편집기를 살펴봅니다.

2026-11-01 · 项目介绍

astro-blog-admin:给静态博客配一个真正的后台

内容即文件不等于只能用编辑器改文件。astro-blog-admin 通过 GitHub API 在浏览器里管理整站内容,博客保持纯静态,后台负责好用。

astro-blog-admin:给静态博客配一个真正的后台

astro-blog 的内容全是文件,这对备份和迁移是好事,但对日常维护不完全是:改个导航文字要开编辑器、找文件、注意别写错格式。astro-blog-admin 就是为此而建的——一个跑在 Cloudflare Pages / EdgeOne Pages 上的管理后台,登录之后,文章、随记、站点设置、图床,全都能在浏览器里管,而博客本体依然保持纯静态、零数据库。

静态博客为什么需要后台

文件的优势不动摇

后台不改变“内容即文件”的根基。它写入的每一个字,最终都会变成博客仓库里的一次提交:文章是 Markdown 文件,设置是 JSONC 文件。哪天不用后台了,文件原样都在,博客照常构建。

日常维护要顺手

高频操作应该是点几下就完成的事:发一篇文章、改一句标语、换一张封面、给首页加一个筛选。让这些事回到编辑器和命令行里去做,博客很快就会因为“懒得更新”而长草。

登录与安全

后台用 GitHub 账号登录(GitHub App 的 OAuth 流程),只有仓库所有者本人能进。未登录时后台入口跳登录页,公开地址乱输是 404,接口未授权一律拒绝。它不自建账号体系,也就没有密码库可泄。

它能管什么

  • 文章:五种语言版本的列表、新建、编辑、删除,草稿与热门标记,语言版本可以单独删改;
  • 随记:改日期、改名、草稿开关,都在同一个卡片里;
  • 页面设置:主页、关于、Apple 订阅、服务等全部 JSONC 设置的可视化编辑(下一篇细聊);
  • 图床:上传拿链接、图片管理、公开上传页;
  • 发布:所有修改经 GitHub API 提交回博客仓库,托管平台自动重新构建上线。

和博客的关系

两个项目是分开部署的两个站点:博客是静态站,后台是带服务端能力的 SSR 应用。后台不知道博客的构建细节,只认仓库里的文件约定;博客也不依赖后台存在。这种松耦合让任何一边都可以单独替换、单独搬家。

下一篇走进后台最核心的页面:可视化设置编辑器。

2026-11-01 · 項目介紹

astro-blog-admin:給靜態部落格配一個真正的後台

內容即檔案不等於只能用編輯器改檔案。astro-blog-admin 透過 GitHub API 在瀏覽器裡管理整站內容,部落格保持純靜態,後台負責好用。

astro-blog-admin:給靜態部落格配一個真正的後台

astro-blog 的內容全是檔案,這對備份和遷移是好事,但對日常維護不完全是:改個導航文字要開編輯器、找檔案、注意別寫錯格式。astro-blog-admin 就是為此而建的——一個跑在 Cloudflare Pages / EdgeOne Pages 上的管理後台,登入之後,文章、隨記、站點設定、圖床,全都能在瀏覽器裡管,而部落格本體依然保持純靜態、零資料庫。

靜態部落格為什麼需要後台

檔案的優勢不動搖

後台不改變「內容即檔案」的根基。它寫入的每一個字,最終都會變成部落格倉庫裡的一次提交:文章是 Markdown 檔案,設定是 JSONC 檔案。哪天不用後台了,檔案原樣都在,部落格照常建構。

日常維護要順手

高頻操作應該是點幾下就完成的事:發一篇文章、改一句標語、換一張封面、給首頁加一個篩選。讓這些事回到編輯器和命令列裡去做,部落格很快就會因為「懶得更新」而長草。

登入與安全

後台用 GitHub 帳號登入(GitHub App 的 OAuth 流程),只有倉庫所有者本人能進。未登入時後台入口跳登入頁,公開地址亂輸是 404,介面未授權一律拒絕。它不自建帳號體系,也就沒有密碼庫可洩。

它能管什麼

  • 文章:五種語言版本的列表、新建、編輯、刪除,草稿與熱門標記,語言版本可以單獨刪改;
  • 隨記:改日期、改名、草稿開關,都在同一個卡片裡;
  • 頁面設定:主頁、關於、Apple 訂閱、服務等全部 JSONC 設定的可視化編輯(下一篇細聊);
  • 圖床:上傳拿連結、圖片管理、公開上傳頁;
  • 發布:所有修改經 GitHub API 提交回部落格倉庫,託管平台自動重新建構上線。

和部落格的關係

兩個項目是分開部署的兩個站點:部落格是靜態站,後台是帶伺服器端能力的 SSR 應用。後台不知道部落格的建構細節,只認倉庫裡的檔案約定;部落格也不依賴後台存在。這種鬆耦合讓任何一邊都可以單獨替換、單獨搬家。

下一篇走進後台最核心的頁面:可視化設定編輯器。