介绍我开源的轻量级博客系统:madongdong

在开发博客系统的过程中,我一直在寻找一种极简的解决方案——不需要复杂的配置、臃肿的插件,也不需要高昂的服务器成本。于是,我用 Python + FastAPI + Vue 3 + SQLite 打造了 madongdong,一个专注于写作、没有任何花哨功能的开源博客系统。

项目地址:https://github.com/Lumosylva/madongdong

目前进度

开发中,初步完成了博客首页及管理员后台。

为什么做这个项目?

现有的博客平台和框架要么功能繁杂,要么定制起来非常繁琐。我希望有一个系统:

  • 打开就能写,不需要捣鼓半天环境;
  • 部署简单,甚至可以跑在2核2G的云服务器上;
  • 前端干净,没有弹窗广告、推荐算法等干扰;
  • 代码清晰,方便自己按需修改。

madongdong 正是基于这些想法诞生的。它不追求大而全,只做好一件事:让你安静地写作与发布

技术栈

层级技术
后端框架FastAPI(异步高性能,自动生成 API 文档)
前端框架Vue 3 + Composition API + Vite
数据库SQLite(零配置,单文件数据库)
验证方案JWT + HTTP‑only Cookie(安全且无状态)
部署直接 uvicorn

由于 SQLite 的轻量特性,整个系统几乎不需要任何外部依赖,一个 Python 环境即可运行。FastAPI 的异步能力保证了响应速度,而 Vue 3 提供了流畅的单页应用体验。

主要功能

  • 文章管理:发布、编辑、删除文章,支持 Markdown 编辑器(实时预览)。
  • 分类与标签:简单的分类和标签系统,帮你整理内容。
  • 评论系统:访客可匿名评论(可选审核模式),内置简单的反垃圾机制。
  • 站点配置:修改博客名称、描述、每页文章数等,无需手动改代码。
  • 暗色模式:跟随系统或手动切换,照顾夜间阅读体验。
  • 后台管理:基于 Vue 3 的管理面板,文章列表、评论管理、基础统计一目了然。

没有的功能(也就是刻意舍弃的):

  • 插件市场
  • 页面访问统计(只有简单的计数)
  • 任何形式的广告系统

为什么选择 SQLite?

很多人的第一反应是:“博客系统用 SQLite 靠谱吗?”对于个人博客而言,SQLite 完全足够——它支持并发读取,写入性能对于每天几十篇更新的场景绰绰有余。最重要的是:零运维,不需要安装 MySQL/PostgreSQL,迁移备份只需要复制一个文件。当博客大到需要换数据库时,考虑提供导出到 PostgreSQL 的脚本。

定制与扩展

项目结构非常清晰:

  • app/ – FastAPI 应用,包含路由、模型、数据库操作。
  • web/ – Vue 3 实现的博客前端。
  • admin/ – Vue 3 实现的博客后台管理。

开源协议

采用 Apache-2.0 license 协议,你可以任意使用、修改、再发布,甚至用于商业项目。如果你觉得有用,点个 Star ⭐ 就是对我最大的鼓励。

后续计划

  • 继续完善

结语

madongdong 是一个因个人需求而生的项目,它可能不够强大,但足够安静。如果你也厌倦了复杂厚重的博客系统,欢迎试用、提 issue 或者贡献代码。

GitHub 地址https://github.com/Lumosylva/madongdong

感谢你的阅读。