T3 Turbo x Supabase
关于
这是create-t3-turbo的扩展版本,在Web和移动应用程序上都使用Supabase Auth实现了身份验证。
移动端注意事项
iOS: Apple的审核流程要求之一是,如果你提供任何第三方身份验证方法,你必须实现原生的"使用Apple登录"。详情请参阅第4.8节 - 设计:使用Apple登录。
我们已经为你预先配置好了,你可以在这里找到。你只需要在Supabase仪表板中启用Apple提供商并填写你的信息即可。
我们目前只支持"使用Apple登录" - 正在努力支持移动端的更多提供商!
快速开始
要运行它,请按照以下步骤操作:
设置依赖项
# 安装依赖项
pnpm i
# 配置环境变量。
# 根目录下有一个`.env.example`文件,你可以用作参考
cp .env.example .env
# 将Prisma模式推送到你的数据库
# 无法使用Turbo运行,因为我们需要一个交互式shell(见下文解释)
# 后续运行你可以直接从根目录执行`pnpm db:push`
pnpm -F db db:push
运行最后一个命令
pnpm -F db db:push
时,你会收到一个在schema-migrations
模型上添加唯一约束的警告。这是因为Supabase默认不包含这个,但Prisma要求每个模型至少有一个唯一列。你可以安全地接受这个警告并在表上添加唯一约束。
设置Supabase
- 前往Supabase仪表板并创建一个新项目。
- 在项目设置下,获取环境变量
reference id
、project url
和anon public key
,并将它们粘贴到.env和apps/expo/.env中的必要位置。你还需要在创建项目时设置的数据库密码。 - 在
Auth
下,配置你选择的任何身份验证提供商。此仓库在Web上使用Github,在移动端使用Apple。
默认情况下,Supabase将public
模式暴露给PostgREST API,以允许supabase-js
客户端直接从客户端查询数据库。然而,由于我们通过Next.js应用程序(通过tRPC)路由所有请求,我们不希望我们的客户端具有此访问权限。要禁用此功能,请在Supabase仪表板的SQL编辑器中执行以下SQL查询:
REVOKE USAGE ON SCHEMA public FROM anon, authenticated;
注意:这意味着如果你不想启用,你也不需要在数据库上启用行级安全性(RLS)。
配置Expo dev
脚本
使用iOS模拟器
- 确保你已安装XCode和XCommand Line Tools,如Expo文档所示。
注意: 如果你刚刚安装了XCode,或者如果你更新了它,你需要手动打开模拟器一次。在根目录运行
npx expo start
,然后输入I
来启动Expo Go。手动启动后,你可以在根目录运行pnpm dev
。
+ "dev": "expo start --ios",
- 在项目根文件夹运行
pnpm dev
。
提示: 在单独的终端窗口中运行每个应用可能更容易,这样你可以分别获取每个应用的日志。如果你想让你的终端具有交互性,例如访问Expo二维码,这也是必需的。你可以运行
pnpm --filter expo dev
和pnpm --filter nextjs dev
在单独的终端窗口中运行每个应用。
对于Android
- 安装Android Studio工具,如Expo文档所示。
- 在
apps/expo/package.json
中更改dev
脚本以打开Android模拟器。
+ "dev": "expo start --android",
- 在项目根文件夹运行
pnpm dev
。
参考
- 有关如何部署此堆栈的更多有用信息,请参阅t3-oss/create-t3-turbo。
- Supabase文档
- 此堆栈源自create-t3-app。
- 一篇博客文章,我在其中写了如何将T3应用迁移到这个堆栈。