usememos/memos

Memos

从时间线记事学习 Go、React、SQLite 的轻量自托管闭环

难度
中等
适合
零基础 / 入门
主要语言
Go
GitHub
62.1k
许可证
MIT
快照日期
2026年8月9日

先判断要不要学

这个项目值得拆什么?

Memos 是一个面向快速记录的 Markdown-native 自托管笔记工具。它以时间线代替文件夹导航,用 Go 单二进制承载 API 与静态 Web UI,默认可用 SQLite,也支持 MySQL/PostgreSQL 和 REST/gRPC。它是本批最适合新手学“小而完整”产品的案例。

  1. 01

    单一 Go 二进制与 SQLite 的部署模型简单可解释。

  2. 02

    时间线、标签、可见性和 Markdown 形成清晰领域对象。

  3. 03

    根目录将 cmd/internal/proto/server/store/web 分层,适合跟踪一条 CRUD 链路。

可以学什么

不只是看代码,而是找到产品的骨架

  • 学产品结构
  • 学数据库
  • 学界面
  • 学用户登录
  • 学部署
  • 学完整项目组织
01

一条 memo CRUD 纵向切片

从 proto 契约、server handler、store 查询到 web 时间线逐层追踪。

proto · server · store · web
02

单二进制交付

理解 Go 服务如何嵌入前端产物,用少量运行组件交付完整产品。

cmd/memos · server · web
03

存储适配与可携带数据

对比 SQLite 与外部数据库的配置,理解自托管的备份边界。

store · internal · README.md

三段学习路径

从理解、修改到做出你的版本

0130 分钟先跑通

跟通 memo 读写链路

  1. 读 README Features
  2. 对照 proto/server/store/web
  3. 列出 memo 主要字段

完成标志:一张四层 CRUD 图。

022 小时动手改

做一个时间线 UI 变体

  1. 用 fixture 渲染 memo 列表
  2. 增加一个可见性筛选
  3. 完成空状态和错误状态
  4. 验证 Markdown 输出安全

完成标志:一个可交互的时间线样片。

031 天做变体

做出最小自托管记事应用

  1. 仅保留 SQLite 与单用户
  2. 实现创建、列表、标签和搜索
  3. 增加数据目录备份提示
  4. 测试 XSS、重复提交和数据库损坏恢复

完成标志:一个可备份、可恢复的小型本地优先记事应用。

评分解释

每一分都要说清楚为什么

可复刻性21 / 25
21 / 25

单二进制与 SQLite 便于复现。

文档与代码清晰度18 / 20
18 / 20

根目录分层与 README 清楚。

新手学习价值18 / 20
18 / 20

小而完整的全栈案例。

产品完整度13 / 15
13 / 15

记录、搜索、API 和部署完整。

vibe coding 代表性8 / 10
8 / 10

适合快速改成个人工具。

活跃度5 / 5
5 / 5

仓库与发布活跃。

新颖性3 / 5
3 / 5

时间线记事不新颖但表达克制。