# 只需一个命令
pnpm run dev- ✅ 简单: 一个命令启动
- ✅ 快速: 无需数据库
- ❌ 限制: 数据只在浏览器本地,无法跨设备
需要启动 2个服务:
# 方式1: 分别启动(两个终端)
cd server && pnpm tsx index.ts # 终端1: API服务器
pnpm run dev # 终端2: 前端应用
# 方式2: 一键启动(推荐)
pnpm run dev:postgres # 自动启动所有服务- ✅ 功能强大: 跨设备同步
- ✅ 多用户: 支持协作
⚠️ 需要: 数据库 + API服务器 + 前端
# 1. 确保数据库运行
docker-compose up -d
# 2. 一键启动所有服务
pnpm run dev:postgres效果:
- 🔵 API 服务器自动启动(端口 3001)
- 🟣 前端应用自动启动(端口 5173)
- 📊 两个服务的日志会以不同颜色显示
停止: 按 Ctrl + C 会同时停止两个服务
适合需要单独查看每个服务日志的情况。
终端 1: API 服务器
cd server
pnpm tsx index.ts保持运行,会看到:
🚀 CogniFlow API Server 已启动
📡 监听端口: 3001
终端 2: 前端应用
pnpm run dev保持运行,会看到:
VITE v5.x.x ready in xxx ms
➜ Local: http://127.0.0.1:5173/
停止: 在每个终端分别按 Ctrl + C
# 1. 启动数据库(只需第一次或停止后)
docker-compose up -d
# 2. 验证数据库
docker-compose ps # 应该看到 postgres 和 pgadmin 在运行
# 3. 启动应用(选择一种方式)
pnpm run dev:postgres # 一键启动
# 或
cd server && pnpm tsx index.ts # 终端1
pnpm run dev # 终端2如果数据库一直在后台运行:
pnpm run dev:postgres # 直接启动即可# 如果使用 dev:postgres
按 Ctrl + C # 会同时停止 API 和前端
# 如果分开启动
在每个终端按 Ctrl + Cdocker-compose down # 停止但保留数据
docker-compose down -v # 停止并删除数据(慎用)┌─────────────────────────────────────┐
│ 数据库层 │
│ docker-compose up -d │
│ ┌─────────────┐ ┌──────────────┐ │
│ │ PostgreSQL │ │ pgAdmin │ │
│ │ port 5432 │ │ port 5050 │ │
│ └─────────────┘ └──────────────┘ │
└─────────────────────────────────────┘
↑
│ SQL 查询
│
┌─────────────────────────────────────┐
│ API 层(必须启动) │
│ cd server && pnpm tsx index.ts │
│ ┌─────────────────────────────┐ │
│ │ Express API Server │ │
│ │ http://localhost:3001 │ │
│ │ - 处理认证 │ │
│ │ - 处理业务逻辑 │ │
│ │ - 数据库操作 │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
↑
│ HTTP REST API
│
┌─────────────────────────────────────┐
│ 前端层(必须启动) │
│ pnpm run dev │
│ ┌─────────────────────────────┐ │
│ │ React App (Vite) │ │
│ │ http://127.0.0.1:5173 │ │
│ │ - 用户界面 │ │
│ │ - 发送 API 请求 │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
↑
│
浏览器访问
A: 这是前后端分离架构:
- 前端: 负责用户界面(React)
- 后端: 负责业务逻辑和数据库交互(Express)
- 好处:
- 前端可以独立开发和部署
- 后端可以被多个客户端使用(Web、App等)
- 更安全(数据库不直接暴露给前端)
A: LocalStorage 模式下,数据直接存在浏览器里:
浏览器 → 前端 → LocalStorage(浏览器)
不需要 API 服务器和数据库。
A: PostgreSQL 模式必须同时启动:
- ❌ 只启动前端 → 无法获取数据(API 调用失败)
- ❌ 只启动后端 → 无法访问界面
两者必须配合工作。
A: Docker 数据库可以选择:
- 保持运行:
docker-compose up -d(推荐)- 优点: 下次启动快
- 缺点: 占用少量资源
- 用时再启动: 每次开发前执行
docker-compose up -d- 优点: 不占用资源
- 缺点: 每次启动慢几秒
A: 检查方法:
# 1. 数据库
docker ps | grep cogniflow
# 2. API 服务器
curl http://localhost:3001/health
# 3. 前端
打开 http://127.0.0.1:5173# 第一次
1. docker-compose up -d # 启动数据库(只需一次)
2. pnpm run dev:postgres # 启动应用
3. 开始开发...
4. Ctrl + C # 结束开发
# 以后每次
pnpm run dev:postgres # 直接启动- 修改 React 组件 → 自动刷新
- 无需重启服务
- 修改 API 代码 → 需要重启
Ctrl + C然后重新运行
| 操作 | 命令 |
|---|---|
| 一键启动 | pnpm run dev:postgres |
| 启动数据库 | docker-compose up -d |
| 检查数据库 | docker-compose ps |
| 停止数据库 | docker-compose down |
| 测试 API | ./scripts/test-api.sh |
| 验证数据库 | ./scripts/verify-database.sh |
| API 健康检查 | curl http://localhost:3001/health |
- ✅ 只是个人使用
- ✅ 不需要跨设备同步
- ✅ 想要快速开始
- ✅ 不想管理数据库
启动: pnpm run dev
- ✅ 需要跨设备访问
- ✅ 多人协作
- ✅ 需要数据备份
- ✅ 企业级应用
启动: pnpm run dev:postgres
提示: 可以随时切换模式,只需修改 .env 中的 VITE_STORAGE_MODE!
最后更新: 2025年11月1日