展示 HN: Typebase – 一个用 TypeScript 编写的单文件夹后端
摘要
Typebase 是一个基于 TypeScript 的后端工具,它通过允许开发者在单个文件夹中定义模式和操作来简化服务器部署,并支持各种前端框架和云平台。
嘿 HN!<p>我构建了 Typebase,一个库,它让你拥有 Convex 的开发体验和 Supabase 的开放性。<p>在尝试 Supabase 之后,我喜欢它快速搭建数据库和认证的方式,但真的不喜欢使用 RLS 和 SQL 进行授权。<p>使用 Convex 时,我喜欢服务器“生活在”你的代码中,但不喜欢数据库模型和实时优先的默认设置。<p>有了 Typebase,你只需在现有仓库中的 typebase/ 文件夹内编写 TS 文件。你可以在 schema.ts 文件中定义数据库表,并导出服务器函数,前端像调用本地函数一样调用这些函数,完全类型化。认证是内置的。<p>然后,一个 CLI 命令将你的服务器上传到任何可用的提供商(服务器用 Vercel、Cloudflare Workers 或 Deno Deploy,数据库用 Neon),或者生成代码,这样你就可以部署到任何你想要的地方。<p>基于 oRPC、Drizzle 和 better-auth 构建。<p>乐意回答任何问题或反馈!
查看缓存全文
缓存时间: 2026/08/29 15:36
# Typebase:你的后端是一个TypeScript文件夹。AI热爱代码。
来源:https://typebase.io/
在你的应用内创建一个`typebase/`文件夹,即可定义数据库架构、服务端操作及身份验证。一条命令即可部署一个完全类型的服务器,让你的前端能像调用本地函数一样调用。
立即开始 (https://typebase.io/docs/getting-started) 100秒了解Typebase (https://youtu.be/pvL5LOt567g)
为以下框架提供一等公民支持
Next.js · SvelteKit · Nuxt · Expo
每个框架都有符合其惯用法的客户端:服务器组件、SvelteKit load函数、Nuxt插件、Expo SecureStore。
工作原理
## 两条命令,从零到部署完成的后端
一切都在你的代码库内进行。CLI处理代码生成、架构推送和部署。
1. ### 01 脚手架 一条命令在你现有的应用中创建一个`typebase/`文件夹,包含数据库示例架构、操作示例,以及可选的身份验证或实时发布功能。无需独立的代码仓库,无需仪表板。 `$ npx typebase-io-cli init`
2. ### 02 编写TypeScript 在`db/schema.ts`中定义数据表,在`actions/`中导出操作,按需添加`auth.ts`、`env.ts`和用于实时的`publisher.ts`。每个导出都经过端到端的类型检查。
3. ### 03 部署 将你的文件夹作为服务器部署到Vercel、Cloudflare Workers或Deno Deploy,并使用Neon上的Postgres。或者生成服务器代码并托管到任何地方。Typebase不拥有任何服务器。 `$ npx typebase-io-cli deploy`
### 步骤02详解
- typebase/
- actions/
- mutations/
- queries/
- db/
## 行级安全策略的问题
行级安全策略是隐式的,存在于你编辑器无法进行类型检查的SQL方言中。一个`UPDATE`策略就能授予对所有列的写入权限,包括你明天可能新增的列。凌晨2点代理悄悄加入的过于宽泛的子句能轻松通过代码审查,因为没有任何编译器会标记它。
相比之下
使用Typebase,授权是显式的。你的`action`声明它接受的列,你的身份验证检查在代码中运行,然后才会将数据传到数据库。添加新列,编译器会告诉你谁可以写入它。代理编写的代码正是编译器检查的代码。
不安全的策略策略 #2
`auth.role() = 'authenticated'`允许每个已认证用户更新每一行的每一列。
## Convex的开发体验。Supabase的开放性。
Typebase的诞生是因为我们想要二者兼得却无法找到:后端函数存在于你的代码中,由你真正拥有的数据库支持。
存储功能尚未完成;它已列入路线图 (https://typebase.io/docs/roadmap)。阅读完整对比 (https://typebase.io/docs/comparison)
## 震撼行业的评价*
*以上人物均不存在。我们确认过。两次。法务部门很淡定。
> “上个季度我删掉了40000行REST样板代码。我的技术主管哭了。我想那是喜悦的泪水。我已经不再追问了。”
MV
Mariel Vonnegut
某知名AI独角兽公司首席工程师
> “在Typebase之前,我的技术栈里有三个缩写:REST、gRPC和WHY。现在我只有一个:fn()。我从未如此快乐,我的Oura智能戒指也表示赞同。”
DD
Dave Dave
资深全栈工程师,大概
> “我向四位不同的心理咨询师介绍过Typebase。其中两位不再接诊我。另外两位现在正用它开发一个应用。”
CR
Clementine Ryu
工程师,正在更换心理咨询师
> “我的联合创始人问身份验证逻辑在哪里。我说‘在一个叫auth.ts的文件里。’从那以后他就没再和我说过话。我想他大概是被震撼到了。”
TL
Tomás Lindberg
独立开发者,可能单身
> “我们用一个文件夹取代了14个微服务。运维团队为我举办了庆祝派对。派对其实是个会议。会议主题是裁员。”
A
匿名者
原因显而易见
> “10/10分,愿意再次让我的后端变成文件夹。”
HP
Hannah Pollard
资深文件夹工程师,自封
你有真实的、非虚构的引言吗?我们很乐意用你替换掉上述某位“人类”。
## 给你的AI一个它能读懂的后端
大约只需九十秒。大部分时间是`npm install`。
`$ npm i typebase-io && npm i -D typebase-io-cli`
阅读文档 (https://typebase.io/docs/getting-started) 在GitHub上标星 (https://github.com/typebase-io/monorepo)
相似文章
Show HN: Nub – 类似 Bun 的用于 Node.js 的一体化工具包
Nub 是一个快速的一体化工具包,用于 Node.js,提供类似 Bun 的开发者体验,包括运行 TypeScript 文件、管理依赖项和 Node 版本,所有这些都集中在一个用 Rust 编写的 CLI 工具中。
microsoft/TypeScript
TypeScript 是一种用于大规模 JavaScript 应用的语言,它增加了可选类型。该仓库托管了 TypeScript 编译器及相关工具。
TypeScript 7
TypeScript 7 是一个重大版本,它将编译器用 Go 语言重写,实现了 8-12 倍的构建速度提升,同时保持完全兼容性,现已在 npm 上可用。
Show HN: WebBase-III – 在浏览器中重建的dBASE III及其自己的解释器
WebBase-III 是在浏览器中运行的dBASE III的完整重现,具有自己的W3Script解释器、BROWSE网格、表单引擎、索引以及通过SQLite实现持久存储。
@dhuynh95:我认为 @NotionHQ 将定义对人类和智能体原生适配的新记录系统:- 对人类友好的文档,…
NotionHQ 推出了一项名为“Notion as code”的测试版功能,允许用户用 TypeScript 定义整个工作空间,包括团队空间、数据库和自定义智能体,并可通过 API 部署。