一个像 Logseq 的笔记应用,但基于每日标准 Markdown 文件,而非子弹列表,并集成了语音输入、GTD(Things-like)任务管理与日程规划。
- 📝 每日笔记 — 每天自动创建一个独立的 Markdown 文件(
YYYY-MM-DD.md)用于记录内容 - 🎙️ 语音输入 — 使用浏览器 Web Speech API 直接向笔记追加语音转文字内容
- ✅ GTD 任务管理 — 类 Things 的任务管理,支持收集箱、今日任务与项目分组
- 🗓️ 日程管理 — 与每日笔记联动的日程视图
| 层 | 技术 |
|---|---|
| 运行时 | Bun |
| 后端框架 | Hono |
| 前端框架 | React 19 |
| 路由 | TanStack Router |
| 数据请求 | TanStack Query |
| UI 组件 | shadcn/ui + Tailwind CSS v4 |
| 前端打包 | Rspack(RSC 实验性支持) |
| 语言 | TypeScript |
| 测试 | Vitest |
| Lint | oxlint |
| 格式化 | oxfmt |
| 环境管理 | Nix |
# 使用 direnv(推荐)
direnv allow
# 或手动进入
nix developbun install# 启动后端 API 服务(默认端口 3000)
cd packages/server && bun run dev
# 启动前端开发服务器(默认端口 3001,API 请求代理到 3000)
cd packages/web && bun run dev# 构建所有包
bun run buildbun run testbun run lint # oxlint(typeaware 严格模式,按包配置)
bun run format # oxfmt 格式化
bun run format:check # oxfmt 格式检查
bun run typecheck # TypeScript 类型检查项目使用 lint-staged + husky,提交时自动检查:
- oxlint — lint 检查(typeaware,前后端分离配置)
- oxfmt — 格式检查
- tsc — TypeScript 类型检查
stream-note/
├── packages/
│ ├── web/ # 前端应用
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ └── ui/ # shadcn/ui 组件
│ │ │ ├── lib/
│ │ │ │ └── utils.ts # cn() 工具函数
│ │ │ ├── App.tsx # 根组件
│ │ │ ├── index.tsx # React 入口
│ │ │ ├── index.css # Tailwind CSS 入口 + shadcn 主题
│ │ │ └── index.html # HTML 模板
│ │ ├── components.json # shadcn/ui 配置
│ │ ├── rspack.config.ts # Rspack 打包配置(RSC 已启用)
│ │ ├── postcss.config.js # PostCSS 配置(Tailwind v4)
│ │ ├── vitest.config.ts # 测试配置(jsdom)
│ │ ├── tsconfig.json # TypeScript 配置
│ │ ├── .oxlintrc.json # oxlint 规则(含 React 插件)
│ │ └── package.json
│ └── server/ # 后端服务
│ ├── src/
│ │ └── index.ts # Hono 服务入口
│ ├── vitest.config.ts # 测试配置(node)
│ ├── tsconfig.json # TypeScript 配置
│ ├── .oxlintrc.json # oxlint 规则(无 React)
│ └── package.json
├── docs/ # 规格说明文件
├── .husky/
│ └── pre-commit # 提交门禁
├── flake.nix # Nix 开发环境
├── .envrc # direnv 配置
├── AGENTS.md # AI 代理开发规范
├── .oxlintrc.json # 根目录 oxlint 基础规则
├── tsconfig.json # 根 TypeScript 配置(项目引用)
└── package.json # 根 workspace 配置
MIT