最近想做一个家谱站点。起点很简单:给人物、关系和零散的往事找一个能慢慢补充的地方。先能找到一个人,知道彼此怎么相连,再逐渐留下照片、自述和生平。
我还不想把它定义成一个完备的家族平台。现阶段更关心的是:关系能不能记对,边界能不能说清,资料能不能在多年以后继续拿出来。
这篇先记下做 Family Site 时的一些初始想法与阶段性取舍。它是一份会继续变化的建设笔记,下面提到的方向不代表都已经完成。文中人物和关系均为虚构的 Demo/Test 数据,不对应任何真实家庭。
先分清楚:我想记录哪一种家谱
刚开始觉得,把亲属放到一张树上就够了。讨论下去才发现,“宗谱”和“亲缘图谱”想回答的问题并不一样。
宗谱关心的是一部谱册约定的传承与源流。 世代、字辈、房支和收录规则,都需要清楚的边界。本宗人物和配偶可以记录,但不能因为连上一个配偶,就自动把对方整个家庭也展开进来。特殊的收录安排,需要有明确的理由和核定记录。这是这个项目对宗谱的产品约定,并不是想用一套规则概括所有家庭的修谱习惯。
亲缘图谱关心的是人与人怎样相连。 父系、母系、配偶双方的亲属,都可以沿关系继续补充,不要求同姓,也不强加宗谱里的世代、字辈和房支。
这两种需求都值得保留。与其让一张图承担所有期待,我更愿意给它们各自合适的位置:一本认真梳理传承,一本从身边的亲友关系慢慢展开。
同一个人,在不同谱册里
家谱记录的人,远多于会登录网站的人。先人、还没有账号的人,都应当有自己的档案。登录只是使用网站的一种方式,人物的记录不应该以有没有账号为前提。
但讨论到一个人出现在多部谱册里时,我发现,“账号绑定一个人物”这句话还不够准确。一个账号在不同谱册里,始终应该对应同一个人。 宗谱和亲谱可以从不同角度记载他,却不能让他换一本谱就变成另一个人。
这件事看起来很小,想下去却牵涉不少日常经验:老谱里的名字和家里常叫的小名可能不同,而两个同名的人,也未必就是同一个人。名字是认识一个人的线索,不能独自承担确认身份的责任。比起急着把两份资料连起来,我更希望先把“这是不是本人”弄清楚。
同一个人在宗谱里可能负责修谱,在另一部亲谱里只是普通成员。身份没有变,能做的事可以不同;一本谱里的照片和私密记录,也不会因此自动出现在另一本谱里。这是接下来建设时想守住的边界,具体规则则留给设计和实现慢慢落实。
技术先选自己能长期维护的
最初也纠结过:前端是不是写 HTML 就够了,后端用 Python 还是 Go,数据库要不要直接上 PostgreSQL?
现在的选择是,先用 Vue 3 和 TypeScript 承担登录后的交互,用 Python、FastAPI 处理接口和权限,用 SQLite 保存结构化数据。静态页面适合展示文章;家谱还需要选人、搜索、展开关系和编修,前端会有持续的交互状态。
后端选 Python,主要是我在当前阶段更愿意把精力花在规则、校验和维护流程上。Go 也可以做这件事,但暂时没有足够的项目需求推动我为它更换实现。
SQLite 也先继续使用。目标场景是小范围浏览、少量人员维护,我判断这比提前增加一个独立数据库服务更合适。SQLite 官方的适用场景说明也把许多中低流量网站列在适用范围内,同时指出高强度写入或多服务器场景需要考虑客户端/服务器数据库。
这不是一项永久承诺。以后如果持续出现并发写入等待,或者确实需要多台应用服务器,再评估 PostgreSQL。当前先把关系正确、权限明确、备份可靠这几件事做好。
图谱负责找人,人物主页负责留下内容
树形图很直观,但把所有信息都挤进节点里,最后谁也读不清。我希望把阅读过程拆成自然的几步:
- 在图谱里找到一个人,先看清上下代和配偶关系。
- 点击人物,打开摘要,快速知道这是谁。
- 想继续了解,再进入人物主页,看介绍、自述、生平与照片。
没有账号的人物同样可以拥有主页,由有权限的维护者补充。谱册本身也应该有一个家族首页,放简介、代表照片,以及图谱、人物索引、相册的入口。
宗谱可以更庄重,亲缘图谱可以更像家庭相册。不过,视觉之外还有很多小规则需要认真核对:同辈如何按出生时间排列,夫妻怎样保持相邻,手机上怎样找到自己,日期不详时如何表达。这些细节会直接影响家人是否愿意使用。
照片先做,容量和备份一起想
只有关系与名字,档案还是显得单薄。照片和一小段说明,能让人物更具体。所以接下来想先补照片,视频和个人博客留到后面。
照片不能只考虑“能上传”。还要考虑尺寸、压缩、空间用量、查看权限,以及怎样备份。初步思路是:上传时自动压缩,按人物和谱册设置额度,并把剩余空间显示出来。照片文件独立保存,数据库记录归属、说明和文件信息;访问照片时也检查谱册权限。
长期保存则分成三件事:数据库的一致性备份用于恢复站点;GEDCOM X(.gedx)导出保留人物、文字和关系,方便带走与后续利用;照片文件另做备份。这个项目里的 GEDX 方案不打包照片,导出也不等于已经具备一键导入恢复能力。
我希望在增加内容之前,就知道这些内容将来怎么保存、怎么取回。
公开写建设过程,真实资料留在私有空间
窝舍适合记录这个项目为什么做、如何取舍,以及试验中学到了什么。真实的家谱资料则留在独立的私有空间,由访问权限保护。
公开文章里的关系例子只用 Demo/Test 人物。本文的界面截图也来自独立测试环境:重新构造谱册和账号,不从真实资料里换几个名字来充当样例。
第一阶段想验证的目标其实很朴素:能找到人,能看懂关系,有权限的人能补资料,修改能追溯,资料能备份。等这条路径顺了,再根据使用反馈补充老照片、家族大事记、资料来源,以及尚待核实的口述记录。
家谱大概很难有一个彻底“做完”的时刻。眼下先搭好能持续补充的结构,让每次新增的一条关系、一段生平、一张照片,都有合适的位置。这就是我想先做起来的原因。