Supabase 配置获取指南

Supabase 配置获取指南

本文档指导你如何获取看板应用云同步所需的 Supabase 配置信息。


什么是 Supabase

Supabase 是一个开源的 Firebase 替代品,提供:

  • PostgreSQL 数据库
  • 用户认证
  • 实时订阅
  • 自动生成的 REST API

步骤一:注册 Supabase 账号

  1. 访问 https://supabase.com
  2. 点击 Start your project
  3. 使用 GitHub 账号或邮箱注册

步骤二:创建项目

  1. 登录后进入 Dashboard
  2. 点击 New Project
  3. 填写项目信息:
    • Organization: 选择或创建组织
    • Project name: 如 kanban-board
    • Database password: 设置一个强密码(请记住)
    • Region: 选择 Northeast Asia (Tokyo)Southeast Asia (Singapore)
  4. 点击 Create new project
  5. 等待 1-2 分钟初始化完成

步骤三:获取 API 配置

  1. 进入项目 Dashboard
  2. 在左侧菜单点击 SettingsAPI
  3. 你会看到:
配置项说明示例
Project URL项目 API 地址https://xxxxx.supabase.co
anon public公开 API Key(前端用)eyJhbGciOiJIUzI1NiIs...
service_role服务端 API Key(后端用)eyJhbGciOiJIUzI1NiIs...

步骤四:配置环境变量

在你的项目根目录创建 .env 文件:

1
2
3
4
# Supabase 配置
SUPABASE_URL=https://your-project-id.supabase.co
SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key

注意

  • SUPABASE_ANON_KEY 用于前端,安全性较低
  • SUPABASE_SERVICE_ROLE_KEY 用于后端,拥有完整权限,请妥善保管
  • .env 文件不要提交到 Git

步骤五:创建数据库表

进入 SQL Editor,执行以下 SQL:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
-- 看板表
CREATE TABLE boards (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id UUID NOT NULL,
    name VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW(),
    is_deleted BOOLEAN DEFAULT FALSE
);

-- 列表
CREATE TABLE columns (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    board_id UUID NOT NULL REFERENCES boards(id),
    name VARCHAR(255) NOT NULL,
    position INTEGER NOT NULL,
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW(),
    is_deleted BOOLEAN DEFAULT FALSE
);

-- 卡片表
CREATE TABLE cards (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    column_id UUID NOT NULL REFERENCES columns(id),
    title VARCHAR(255) NOT NULL,
    description TEXT,
    position INTEGER NOT NULL,
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW(),
    is_deleted BOOLEAN DEFAULT FALSE
);

-- 标签表
CREATE TABLE tags (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id UUID NOT NULL,
    name VARCHAR(100) NOT NULL,
    color VARCHAR(20),
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW(),
    is_deleted BOOLEAN DEFAULT FALSE
);

-- 卡片-标签关联表
CREATE TABLE card_tags (
    card_id UUID NOT NULL REFERENCES cards(id),
    tag_id UUID NOT NULL REFERENCES tags(id),
    created_at TIMESTAMP DEFAULT NOW(),
    PRIMARY KEY (card_id, tag_id)
);

-- 创建索引
CREATE INDEX idx_boards_user_id ON boards(user_id);
CREATE INDEX idx_columns_board_id ON columns(board_id);
CREATE INDEX idx_cards_column_id ON cards(column_id);
CREATE INDEX idx_tags_user_id ON tags(user_id);

步骤六:配置行级安全(RLS)

为了数据安全,需要启用 RLS:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
-- 启用 RLS
ALTER TABLE boards ENABLE ROW LEVEL SECURITY;
ALTER TABLE columns ENABLE ROW LEVEL SECURITY;
ALTER TABLE cards ENABLE ROW LEVEL SECURITY;
ALTER TABLE tags ENABLE ROW LEVEL SECURITY;
ALTER TABLE card_tags ENABLE ROW LEVEL SECURITY;

-- 创建策略:用户只能访问自己的数据
CREATE POLICY "Users can view own boards" ON boards
    FOR SELECT USING (auth.uid() = user_id);

CREATE POLICY "Users can insert own boards" ON boards
    FOR INSERT WITH CHECK (auth.uid() = user_id);

CREATE POLICY "Users can update own boards" ON boards
    FOR UPDATE USING (auth.uid() = user_id);

-- 类似的策略需要为其他表创建...

常见问题

Q: 如何重置数据库密码?

进入 SettingsDatabaseReset database password

Q: 如何查看 API 使用量?

进入 SettingsUsage 查看

Q: 免费额度是多少?

  • 数据库:500MB
  • 存储:1GB
  • 带宽:2GB
  • API 请求:50,000/月

对于 MVP 阶段完全够用。


下一步

获取到配置后,就可以开始对接云同步功能了。详见云同步 API 接口规范。