使用说明
miniCRM
基于Next.js 15和Supabase构建的自托管CRM。多租户(组织范围的RLS)、用于AI代理访问的MCP服务器,以及用于联系人数据接收、外联和管道管理的全套集成。
堆栈
| 层 | 技术 |
|---|---|
| 框架 | Next.js 15——应用路由器、TypeScript、服务器组件、Turbopack |
| 数据库 | 数据库(PostgreSQL+行级安全+身份验证) |
| UI | 顺风CSS v4+ @base-ui/react (shadcn base-nova) |
| 拖放 | @dnd-kit/core + @dnd-kit/sortable (看板) |
| 图表 | Recharts |
| AI/MCP | @modelcontextprotocol/sdk --将CRM数据暴露给AI代理 |
快速开始
npm install
# create .env.local with your Supabase keys (see SETUP.md)
npm run dev
打开 http://localhost:3000/register 创建您的工作空间。
完整的设置说明: 设置.md
特性
CRM核心
- 联系人 --完整的详细页面、内联编辑、笔记、活动时间表、链接的交易和公司
- 公司 --公司简介,包括联系人、交易、笔记
- 交易 --看板带拖放台移动;用可视化流水线进度条处理细节
- 活动 --带有过期/今天突出显示和一键完成的提要视图
设置和管理
- 管道设置 --添加、重命名、重新着色、重新排序管道阶段;将赛段标记为赢/输
- API密钥 --为具有作用域控制的AI代理访问创建MCP承载令牌
- 集成 --基于UI的凭证管理;不
.env需要改变
集成
所有OAuth凭据(客户端ID/密钥)都可以在UI中设置 设置→ 集成 --按组织加密存储在数据库中 .env 自托管部署的后备方案。
| 集成 | 它做什么 |
|---|---|
| HubSpot | 通过Private App令牌导入联系人、公司和交易 |
| 谷歌工作区 | 从Gmail发送历史中提取联系人;将日历会议同步为活动 |
| Mailchimp——A组 | 将受众订阅者作为联系人导入(A/B测试组A) |
| Mailchimp——B组 | 将受众订阅者作为联系人导入(A/B测试组B) |
| 条纹 | 同步客户→ 联系人、订阅→ 处理月度收入价值 |
| 日历 | 将预订受邀者同步为联系人,将预订同步为已完成的会议活动 |
| 重发 | 从CRM发送电子邮件;自动记录为联系人/交易上的电子邮件活动 |
导入中心
设置→ 导入数据 提供一个页面,用于:
- 连接HubSpot并在导入前运行预览
- 选择Mailchimp受众并同步订阅者
- 从Gmail发送历史记录中提取联系人(过去6个月)
MCP服务器(AI代理访问)
在生成API密钥 设置→ API密钥,然后添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"miniCRM": {
"url": "https://your-domain.com/api/mcp",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}
可用的MCP工具: list_contacts, get_contact, create_contact, list_deals, get_deal, create_deal, move_deal_stage, list_activities, get_pipeline_summary
项目文档
| 文件 | 内容 |
|---|---|
| 设置.md | 逐步设置:Supabase、迁移、环境变量、VPS部署 |
| NEXT_STEPS.md | 集成配置、剩余工作、生产检查表 |
| 结构.md | 完整的文件树、数据模型、API格式、MCP工具 |
| 设计.md | 智能第一CRM设计愿景 |
数据库迁移
在Supabase SQL编辑器中按顺序运行迁移:
supabase/migrations/0001_initial_schema.sql
supabase/migrations/0002_rls_policies.sql
supabase/migrations/0003_functions.sql
supabase/migrations/0004_realtime.sql
supabase/migrations/0005_hubspot_provider.sql
supabase/migrations/0006_integration_credentials.sql
supabase/migrations/0007_add_resend_provider.sql
环境变量
# Required
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
NEXT_PUBLIC_APP_URL=http://localhost:3000
INTEGRATION_STATE_SECRET= # random 32-char string for OAuth state signing
# Optional — can also be set per-org in Settings → Integrations
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
MAILCHIMP_CLIENT_ID=
MAILCHIMP_CLIENT_SECRET=
CALENDLY_CLIENT_ID=
CALENDLY_CLIENT_SECRET=
# Optional
RESEND_FROM_EMAIL=noreply@yourdomain.com
构建注释
这 node_modules/.bin/next 此安装中的二进制文件是一个损坏的副本(不是符号链接)。所有npm脚本都直接调用Next.js:
npm run dev # node node_modules/next/dist/bin/next dev --turbopack
npm run build # node node_modules/next/dist/bin/next build --turbopack
npm run start # node node_modules/next/dist/bin/next start