这是一篇正儿八经的回忆录,不是软件推广的软文。
BabyLog是什么?
BabyLog 不只可以记录孩子的成长过程,也可以用来记录宠物宝贝的日常。程序支持那年今天、关键字搜索、身高体重记录与图表展示。3.1 支持多个宝贝、多位家长亲属共同记录,日志内容支持文字、图片和视频。
仓库地址:
如果只用一句话介绍,它是一个”家庭成长记录本”:把孩子的日常、照片、视频、身高体重,以及那些容易被忘记的”第一次”存进自己的数据库里。它不依赖某个社交平台,也不会因为平台关停而消失,数据始终在自己手里。
这是我在孩子出生前后构思的一个关于记录孩子成长的 Web 应用。前一阵子我一直想用现代 AI 编程的方式把它再重构一遍,昨天晚上突然灵光一闪,花了几个小时完成,截止 3.1 版本,终于实现了我对这个程序所有功能和前端交互的设想。
BabyLog的由来
2012
老婆怀孕的时候,我正在自学编程,那时候正热衷于使用易语言开发各种基于 Windows 的桌面应用。某天和亲戚朋友聊天,他们总会提起孩子多大的时候做过什么,比如会爬了、会走了、会背古诗了。但人的记忆是模糊的,越久远的事情,发生的时间就越容易忘记。比如这个程序具体是哪天开始写的,我已经不记得了——最开始我连 Git 都不会用,仓库里没有留下之前至少三个版本的记录。
那时候我还没想过”开源""产品”这些词,只是隐隐觉得:如果有一个地方,能把孩子每天的变化存下来,哪怕只是几行字、几张拍糊了的照片,等十年后再翻出来,应该会很不一样。
不过有一本书,可以让我回忆起来很多,就是这本:
我记得当时为了写第一版的程序代码,死磕这本书一个月,然后照着书上的代码一个字符一个字符敲出了整个 PHP 程序。那种艰辛和困难,是现在用 AI “许愿式”编程很难想象的。那时候遇到问题只能百度,然后一点点调试;什么单元测试、接口调试,我根本不懂,只知道用 PHP 写 SQL 去取 MySQL 里的数据,再动态渲染 HTML 页面。我的目标很朴素:能正常运行、不出错,能增删改查就行。
下班之后的晚上和周末,我基本都耗在书桌前。书上的代码是死的,搬到自己电脑上总会报错,我就把错误信息复制到百度里,一条一条翻别人的博客。经过一段时间的折腾,第一版终于跑了起来。曾经有一张截图,但现在找不到了。第一版的图表是我用 HTML + CSS 配合 PHP 手工画的,为了几根柱状图算百分比、拼 div、调边距,改一次颜色就要刷新好几次页面,那个展示图表我写了很长时间。现在想想很笨,但当时看着数据真的变成图,心里特别有成就感。
2015
再后来,我接触到了 ThinkPHP,这是 2015 年的事。那时候 ThinkPHP 在国内很流行,中文文档友好,社区也活跃,对英语不好、又习惯照着教程写代码的我来说,几乎是最好的选择。
这个程序,我竟然还在移动硬盘里找到了!

插上硬盘,打开那个尘封已久的文件夹,看到熟悉的目录结构和当年写的注释,一瞬间很多个夜晚都回来了。代码现在看当然很粗糙,但那是实实在在的青春。
然后我就开始折腾程序的重构与升级。借助 PHP 框架,编写起来相对容易了些,我也第一次有了”分层”的概念:控制器、模型、模板各管各的,SQL 不再散落在页面里。虽然离规范还很远,但至少知道了程序可以写得更有秩序,所以对升级后的结果还是很满意的。
2017
2017 年,我接触到了 Java 与 JavaWeb,然后使用 SpringBoot + MySQL + MyBatis + Thymeleaf + Amaze UI + ECharts 等技术栈重构了这个程序,并正式把开源软件发布到 oschina,有链接为证:
BabyLog SpringBoot+MyBatis+Thymeleaf+Amaze UI 整合学习
在此之前,我对 Java 的印象还停留在”企业级""很重”这些标签上。真正学进去之后才发现,SpringBoot 把很多繁琐的配置都收敛了,写一个能跑起来的 Web 项目并没有想象中那么难。那是我第一次认真地把自己的项目整理成开源项目:补 README、写部署步骤、截界面图,生怕别人下载下来跑不起来。
ECharts 替换了我当年手搓的图表,身高体重曲线终于像模像样;Amaze UI 让页面在手机上看也不至于太难看。现在回头看,那一版有很多为了”学习”而堆上去的技术,但也正是那些堆叠,让我对 JavaWeb 的整套链路有了完整的认识。这次重构,也算是对 Java 学习的一次见证吧。
2021
2021 年,我使用 Flask + Bootstrap + SQLite 等技术栈再次重构了这个程序。因为那个时候我沉迷于 Python,Python 如日中天,是程序员的瑞士军刀,用起来方便,Web 框架也日渐成熟。Flask 足够轻,一个文件就能启动;SQLite 更是把部署成本降到了最低——把项目拷到服务器上,装好依赖就能跑。对个人项目来说,这种”简单”非常有吸引力。

Python 算是我接触时间最长、使用最多的编程语言了。我用它写过爬虫、脚本、小工具,也做过一些数据处理,所以再回到 Web 开发时,会有一种”回家”的熟悉感。
但那个时候还有一些功能没有实现,比如图片上传、视频支持,以及更顺手的前端交互,这些都是遗憾。每次用的时候都想着”先这样吧,能用就行”,但心里知道,这些迟早要补上。
2023
2023 年已经是前端的天下,大势所趋,前后端分离的架构一直吸引着我,所以我又一次重构了这个程序,在 miniadmin 框架的基础之上继续开发。技术栈是 FastAPI、Vue3、Ant Design 等,其中 miniadmin 是我单独编写的后台管理系统,算是一个学习项目。这一次,我把前后端彻底分离了。

Vue3 的组合式 API、Ant Design 的组件、前后端分离后的接口调试,都让我觉得新鲜。那段时间我几乎把业余时间都花在 miniadmin 上,一边学一边把 BabyLog 的后台往上搬。
之前有人提出多个宝贝的支持,我也一并解决了。多宝贝并不是加一个字段那么简单:列表要按宝贝切换,统计要分开算,还要考虑不同家长能看到什么。前后端分离之后,这些问题反而更容易拆开处理——前端负责体验,后端负责数据和规则。结合框架的优势,前端的人性化问题也被大大改善了。
2025
2025 年,AI 智能体崛起,我当然不会放弃这么好的机会。在 Trae 的帮助下,BabyLog 成功完成了又一次重构:前端使用 Next.js、TailwindCSS、shadcnUI 等,后端使用 Express、Sequelize 等框架。这次重构让程序的功能更加完善,界面更简洁直观,也为后续升级提供了极大的方便。

Trae 刚出来的时候,我抱着试一试的心态,把 BabyLog 的需求拆成一条条提示词丢给它,没想到它真的能把这一套我并不熟悉的组合搭起来。这次升级的代码基本都是 AI 编写的,我全程没有太多干预,更多是在做”产品经理”和”测试员”的工作:描述页面应该长什么样、数据应该怎么流转、哪里点不动、哪里报错。代码由 AI 生成,但需求、取舍和验收仍然得由人来完成。
那也是我第一次强烈地感觉到,编程这件事的门槛正在被重新定义。
2026
时间来到昨天,我灵光一闪,决定再次升级重构这个程序。其实这个念头在心里盘旋了很久:3.0 已经能用了,但界面和交互总有些地方让我不满意,尤其是在手机上操作时,总觉得别扭。
3.1 版本的升级让程序的功能更完整、更健壮。前端采用了更现代的 HeroUI,交互更丝滑、更人性;此次改动全力支持移动端,并且是以移动端为主来打造前端,这样用手机和平板操作会更方便。另外还添加了智能体操作的 skill,你可以直接和 openclaw 或者 hermes 对话,让它帮你添加宝贝数据。

从”打开电脑、登录后台、填表单”,到”随口说一句、让智能体帮你记下来”,技术栈换了一轮又一轮,最后落到实处的,还是那句最朴素的话:让记录这件事变得更简单。
最后
时间推到现在,满满的都是回忆。
14 年,足够一个婴儿长成少年,也足够一个只会照着书敲代码的人,慢慢变成能独立设计、重构、部署一个完整应用的开发者。这期间,我用过 PHP、Java、Python、Node.js,前端从 Amaze UI 换到 Vue、React、Next.js,数据库从 MySQL 换到 SQLite,又换到 Sequelize 管理的各种库。名字听起来很热闹,但真正留下来的,不是这些技术名词,而是数据:孩子的身高体重、第一次翻身、第一次叫爸爸妈妈、第一次背上书包,还有那些随手拍下的照片和视频。
有时候我会打开”那年今天”,看几年前的今天发生了什么。那些当时觉得平常的瞬间,被时间一过滤,就变得珍贵起来。这大概就是我做 BabyLog 最初、也最根本的动力。
关于 AI,我的感受挺复杂。它确实让”把想法变成能用的东西”变得前所未有地容易,几个小时就能完成过去几个月的工作;但它也让我更清楚地意识到,工具再强,前提仍然是你知道自己想要什么、能判断做出来的东西对不对。14 年自学编程的经历,并没有因为 AI 的出现而白费——它让我在 AI 给出方案时,至少还能看出哪里不对劲。
关于开源,我始终觉得这是一件很浪漫的事。一个小小的、为自己家写的程序,被放到 GitHub 和 Gitee 上,也许某天会被另一个想记录孩子成长的父母看到,拿去改成他自己需要的样子。如果真是这样,那这份折腾就多了一层意义。
项目仍然开源,仓库地址就在文章开头。如果你也有想记录的人、想留住的日常,不妨也动手做一个,或者直接把它拿去用。代码会过时,技术会迭代,但那些被认真保存下来的日子不会。
或许折腾就是程序员的本能,数据就是我们的记忆。
而比代码更长久的,是我们愿意为所爱的人,一次又一次地按下保存键。