https://github.com/haveniceda/my-notion-go
go版本的My-Notion
https://github.com/haveniceda/my-notion-go
Last synced: 1 day ago
JSON representation
go版本的My-Notion
- Host: GitHub
- URL: https://github.com/haveniceda/my-notion-go
- Owner: HaveNiceDa
- Created: 2026-05-10T07:29:27.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-06-10T00:47:44.000Z (27 days ago)
- Last Synced: 2026-07-05T20:26:53.674Z (1 day ago)
- Language: TypeScript
- Size: 1.2 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# My-Notion Go Edition
一个独立的 React + Go 全栈学习项目,用于从零实现 My-Notion Web 端核心能力。
原版 My-Notion 项目:
- GitHub: [HaveNiceDa/My-Notion](https://github.com/HaveNiceDa/My-Notion)
## 项目定位
`My-Notion Go Edition` 是对原版 My-Notion 的一次全栈重实现实验。
原版 My-Notion 使用 Next.js、Expo、Convex、Qdrant 和 Vercel Edge Function 构建,重点在于快速实现跨端 Notion 类产品和 AI 原生能力。
本项目则从工程学习和后端能力建设出发,使用 React + Go 重新实现同类功能,目标是沉淀一套更传统、更完整、也更容易展示后端能力的全栈架构。
## 技术栈
- Web: React + Vite + TypeScript
- API: Go + Gin + GORM
- Database: PostgreSQL
- Monorepo: pnpm workspace + go work
## 版本优势
相比原版 My-Notion,Go Edition 的重点不是快速堆功能,而是完整掌握和展示一个自研后端系统的工程能力。
主要优势:
- **后端自主可控**:使用 Go + Gin 构建独立 API 层,不依赖 BaaS 承接核心业务逻辑。
- **数据库建模完整**:使用 PostgreSQL + GORM 设计用户、文档、内容、AI 会话、RAG 状态等业务表。
- **工程边界清晰**:前端、后端、共享 SDK、部署配置和文档统一放在独立 monorepo 中。
- **更适合学习 Go**:覆盖路由、中间件、鉴权、ORM、事务、迁移、异步任务、实时通信和部署。
- **可扩展空间更大**:后续可自然接入 RabbitMQ、Qdrant、WebSocket、OpenAPI、Worker 和监控体系。
- **方便和原项目对比**:可以横向比较 Convex/BaaS 架构与 Go 自研服务层架构的差异。
## 未来规划
Go Edition 会逐步对齐原版 My-Notion 的核心能力,并在此基础上扩展 Go 后端工程实践。
规划方向:
- **Web 端完整复刻**:实现文档树、富文本编辑器、回收站、收藏、搜索、设置等核心能力。
- **AI 原生能力**:支持 AI Chat、流式输出、模型切换、Thinking Steps、Tool Call 和知识库问答。
- **RAG 知识库**:基于 PostgreSQL + Qdrant 实现文档向量化、语义检索和增量索引。
- **移动端对齐**:未来加入 Mobile 端,实现 Web / Mobile 共用 Go API 和统一业务模型。
- **实时能力**:先使用 SSE 支持 AI 流和任务状态,后续加入 WebSocket 支持多端状态同步。
- **异步任务系统**:引入 RabbitMQ 和 Worker,用于文档索引、AI 摘要、批量重建和失败重试。
- **工程化完善**:补充 OpenAPI、TypeScript client 生成、CI/CD、Docker 部署、测试和可观测性。
## 快速开始
```bash
cp .env.example .env
docker compose up -d postgres qdrant rabbitmq
pnpm install
pnpm migrate:api
pnpm dev
```
Go API 单独启动:
```bash
pnpm dev:api
```
Web 单独启动:
```bash
pnpm dev:web
```
## 可复现演示
使用 Docker Compose 的 `app` profile 可以构建并启动 Web、API、Worker 和数据库迁移任务:
```bash
cp .env.example .env
docker compose up -d postgres qdrant rabbitmq
docker compose --profile app run --rm migrate
docker compose --profile app up --build web api worker
```
访问地址:
- Web: `http://localhost:8081`
- API health: `http://localhost:8080/health`
- Web health: `http://localhost:8081/health`
## 验证命令
```bash
pnpm test:go
pnpm typecheck
pnpm build:api
pnpm build:web
pnpm smoke:api:documents
pnpm smoke:api:realtime
```
更多部署、环境变量和健康检查说明见 [Deployment Readiness](./docs/deployment-readiness.md)。