基于 React + Next.js + shadcn/ui 的匿名留言板,数据存储在 Notion 数据库。
- ✅ 匿名留言,不保存任何身份信息
- ✅ Markdown 支持(代码高亮、列表、链接等)
- ✅ 回复功能(支持一级嵌套)
- ✅ 边缘缓存 10 分钟
- ✅ 反垃圾信息过滤
- ✅ 发送频率限制(每 IP 每 10 分钟 5 条)
- ✅ 管理员删除功能
- 访问 Notion My Integrations
- 点击 "New integration"
- 填写名称,选择 workspace
- 复制 "Internal Integration Secret"
cp .env.local.example .env.local编辑 .env.local:
NOTION_API_KEY=你的集成密钥
NOTION_PARENT_PAGE_ID=父页面ID # 数据库将创建在此页面下
ADMIN_SECRET=你的管理员密钥获取父页面 ID:
- 在 Notion 中打开要放置数据库的页面
- 复制 URL 中的页面 ID(32位字符串)
- URL 格式:
https://notion.so/your-workspace/PAGE_ID?v=...
- URL 格式:
npm run setup:notion这会自动创建数据库并更新 .env.local。
npm run dev访问 http://localhost:3000?admin=你的管理员密钥 启用管理员模式,可以删除留言。
推荐部署到 Vercel:
- Push 到 GitHub
- 在 Vercel 导入项目
- 配置环境变量
- 部署
- 前端: React 19 + Next.js 16
- UI: shadcn/ui + Tailwind CSS
- 数据库: Notion API
- 缓存: Edge Runtime (10 分钟)
- 语言: TypeScript