个人网站没有必要变成另一个应用后端。我想发布的大部分内容本来就是静态的:文章、截图、短录屏和源代码链接。交互式项目则可以保留各自独立的发布周期。
这形成了一套很小的发布模型:
- 这个仓库负责首页、软件索引和 Markdown 文章。
- 浏览器中的交互式项目从各自的仓库独立部署。
- 终端项目使用真实终端模拟器中的录屏来展示。
- GitHub Actions 构建并发布静态产物。
为什么项目彼此分离
如果把每个项目的构建产物都复制进个人网站仓库,不相关的发布就会被绑在一起。修改一篇文章不应该重新构建浏览器实验,Freeform 发布新版本也不应该要求修改 Working Set。
因此,首页是一份经过选择的索引。它负责描述与视觉呈现,而每个项目自己的仓库仍然是代码、文档、版本和验证证据的事实来源。
Local-first 演示
Freeform 很适合说明静态托管仍然可以做到什么。公开发布的画布是一份模板。首次打开时,浏览器会基于模板创建本地工作区。后续编辑存储在 IndexedDB 中,并且只属于当前浏览器配置。
这里没有账户系统,也没有共享数据库。访客可以自由实验,而不会修改公开模板或其他人的画布。导出与导入则构成明确的数据迁移边界。
网站应该承载什么
并不是每个仓库都需要一个网页界面。终端产品更适合用真实的终端 UI、简洁的说明和直接的安装方式来呈现。目标是提供软件实际存在并能够工作的证据,而不是把它伪装成网页。