使用 Supabase 与 Retool 构建安全的多用户 CRM SaaS(面向英国中小企业)

发布: (2025年12月14日 GMT+8 10:38)
6 min read
原文: Dev.to

Source: Dev.to

传统 CRM 对中小企业的真实问题

许多主流 CRM 存在以下问题:

  • 围绕销售管道而非运营构建
  • 非技术团队使用困难
  • 功能过多,小团队不需要
  • 在多个用户扩展时成本高昂

因此,尽管存在数据一致性、访问控制和可扩展性方面的风险,许多中小企业仍继续使用电子表格。

我的目标是构建一个以工作流为先的 CRM,使其:

  • 集中运营数据
  • 安全地支持多个内部用户
  • 保持简洁且具成本效益

为什么我选择 Supabase 与 Retool

Supabase (PostgreSQL + Auth + RLS)

Supabase 提供托管的 PostgreSQL 数据库,内置身份验证和行级安全(RLS)。这使其非常适合需要在数据库层面强制数据保护的 SaaS 系统,而不仅仅在前端实现。

选择 Supabase 的关键原因

  • 原生 PostgreSQL(强大的关系建模)
  • 行级安全实现细粒度访问控制
  • 简单的身份验证集成
  • 能够良好地扩展到生产系统

Retool (前端与内部工具)

Retool 让我能够快速构建:

  • 基于角色的仪表盘
  • 为业务用户提供的内部工具
  • 为非技术团队设计的友好界面

这种组合使我能够在不牺牲安全性的前提下快速推进。

高层架构

Users

Retool (frontend dashboards & workflows)

Supabase (Auth + RLS)

PostgreSQL database

最重要的设计原则是安全规则位于数据库中,而不仅仅在 UI 中。

每客户一库的隔离

我没有采用共享多租户数据库,而是选择了 每客户一库 模式:

  • 每个客户拥有独立的 Supabase 项目/数据库
  • 大幅降低跨租户风险
  • 简化访问控制和合规性问题

在每个客户的数据库中,用户访问仍通过与已认证用户关联的 RLS 策略严格控制。这种方式特别适合为中小企业提供强数据隔离需求的早期 SaaS 平台。

使用 RLS 实现安全的多用户访问

最关键的技术点之一是通过行级安全实现用户范围的访问控制。我们不再依赖前端逻辑,而是直接在 PostgreSQL 中强制访问规则。

-- Users can read their own orders
CREATE POLICY "Users can read their own orders"
ON public.orders
FOR SELECT
USING (user_id = auth.uid());

这确保了:

  • 用户只能访问自己的记录
  • 即使前端被绕过,数据仍受保护
  • 安全性在所有工具和查询中保持一致

该模式对任何处理敏感业务数据的 SaaS 都至关重要。

设计实用的 CRM 数据模型

数据库模式围绕真实的运营工作流设计,而非通用的 CRM 概念。核心实体包括:

  • 客户
  • 订单
  • 调度/日期
  • 用户与角色

重点在于:

  • 实体之间的清晰关系
  • 避免数据重复
  • 支持未来功能扩展

关系型设计使得维护数据完整性和随时间演进产品更加容易。

为真实业务构建的经验教训

  • 简洁胜于功能,有助于中小企业采纳
  • 安全必须是隐形且可靠的
  • 业务所有者更在乎清晰度而非仪表盘
  • 基于反馈的快速迭代是竞争优势

许多决策都是通过与业务所有者的直接对话得出,而非凭假设。

可扩展性与未来改进

系统的设计支持逐步扩展,通过:

  • 添加新工作流模块
  • 强化报告与分析
  • 引入面向客户的门户
  • 自动化重复的运营任务

由于核心架构是模块化的,这些改进可以在不重新设计系统的前提下实现。

最后感想

为中小企业构建安全的 SaaS 产品并不需要企业级的复杂性——但确实需要深思熟虑的架构和坚实的安全基础。

通过组合:

  • PostgreSQL + RLS(Supabase)
  • 快速前端工具(Retool)
  • 工作流驱动的产品设计

我们可以交付真正提升小企业运营的生产级系统。该方法已帮助我交付了一个正在被英国企业采用的安全 CRM SaaS 平台,同样的模式也可以在众多面向中小企业的数字产品中复用。

Back to Blog

相关文章

阅读更多 »