自托管客户关系管理系统

基于Next.js 15和Supabase构建的自托管客户关系管理系统,支持多租户、AI代理访问和全套集成功能,用于联系人数据摄取、外展和管道管理。

  • by Supintel2012
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 dlipsy-supintel/miniCRM

使用说明

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