前言:历经 159 天,701 次提交,共 26 万的代码行数(vue 和 ts),踩出四十多条坑,今天我将整个项目开源。在 Agent 流行的时代,我在今年上半年没有工作的烦扰,居家学习 AI 的同时更低门槛地 DIY 我自己想要的产品。历经两个月的功能开发和三个月的不断打磨,今天我终于将我理想中的 CMS 变为现实。
开源此项目前,我做了很久的思想斗争。如果我用心制作的作品可以被人无门槛地获取,用于搭建一个内容贫瘠、毫无内涵、为了好看而好看的网站,那我会觉得我开源得没有意义。我看有人收费获取权限,我觉得如果软件开发的交流分享要靠收费维持门槛,那本质就是交易,背离了交流分享的初衷——共同进步。所以我自己决定当我把这个项目打磨得足够好、功能足够丰富,门槛也就相应地高了,这样其他开发者或博主使用我的作品建站就很有意义,至少他们花时间折腾了。
本站 CMS 已经在 Github 上开源,欢迎体验。GitHub 为公开仓库,包含本站完整源码,README 有详细的开发和部署文档。本项目采用 GPL v3 协议,即你使用本站的源码可以用于任何目的,但更改后的代码也必须开源。
如果本项目被滥用,即使只出现一次,我也会直接取消开源,并会对整个开发者生态感到非常失望。
由于我周一到周五白天上班,所以只有晚上会有空写文档。目前各位博主可先按照 README 中的文档自行体验。
项目大致介绍
完整功能可通过探索本站体验。
技术架构上,本站的技术栈采用 Nuxt4 + Prisma + Tailwindcss + Postgresql 组成。选择 Nuxt4 的原因是因为 Nuxt 基于 Vue,而我对 Vue 开发很熟悉,Nuxt4 的生态也很成熟。选用 Postgresql 是因为它的 pg_trgm 扩展 + GIN 索引撑起了博客最核心的功能:搜索。pg_trgm(三元组扩展)把字符串拆成 3 字符片段建 GIN 索引,使 LIKE '%关键词%' / ILIKE 走索引——真正的全文模糊搜索(中英文、拼写错误都召回)。
本项目还有一个子模块,使用 uniapp 构建,复用了主站的 API,支持在小程序上显示文章(支持显示所有富文本类型)。不需要小程序时,可不克隆子模块,并在 site.config.ts 中将 features.miniApi 设为 false ,这样主站就不会打包小程序 API。
本项目可使用 Claude Code 开发。代码仓库中存有 .claude 目录和 CLAUDE.md 作为文档,Claude Code 在编写代码时会自动读取这些文件从而避免踩以前踩过的坑,并加强 AI 对整个项目的理解。本项目代码量级较大,不建议使用各大厂商 Coding Plan 的 Lite 套餐开发,建议升级套餐。
接下来我会慢慢完善文档的。目前的计划是先完善开发和部署文档,然后整理一下 Github 仓库,发布一版 Release,接着我会在 qi1.website 新开一个子域名,用来放我这个项目的详细文档。最后等一段时间,如果我注意到了有用我的代码写出更好的界面或功能时,我会在 README 新增一个类似“使用本站主题构建非凡网站的开发者们”的列表,打磨好这个生态。
有点困了,你们先体验着,我先睡了。
加载评论中...