bknd — 轻量级全栈后端即服务平台
bknd 简化了应用开发,提供功能完善的后台支持,包括数据库管理、认证、媒体处理和工作流管理。它基于 Web 标准,轻量且兼容性极佳,几乎可以部署在任何环境(包括你喜欢的前端框架内部),免去部署多个独立服务的烦恼。
主要特点
多运行时支持 Node.js 22+、Bun 1.0+、Deno、浏览器、Cloudflare Workers/Pages、Vercel、Netlify、AWS Lambda 等。
支持多种数据库
- SQLite 系列:LibSQL、Node SQLite、Bun SQLite、Cloudflare D1、Durable Objects SQLite、SQLocal
- Postgres 系列:原生 Postgres、Supabase、Neon、Xata
支持主流前端框架 React、Next.js、React Router、Astro、Vite、Waku 等
多样的存储后端 AWS S3、兼容 S3 的服务(Tigris、R2、Minio 等)、Cloudflare R2(绑定)、Cloudinary、本地文件系统等
基于 Web 标准,兼容性强
丰富的功能模块 数据管理(REST API)、认证(Auth)、媒体管理(Media)、流程工作流(Flows,UI 功能即将上线)
官方 API 和 React SDK,完全类型安全
React 组件库 提供认证、媒体自动配置的 UI 组件
代码结构概览
模块 | 用途说明 |
---|---|
bknd & bknd/adapter/* |
核心后端 API 及运行时适配器 |
bknd/ui |
React 框架下的管理后台 UI 组件 |
bknd/client |
API 的 TypeScript SDK 与 React Hook |
bknd/elements |
认证和媒体相关的 React 组件 |
简单示例
启动后端 API (Node 运行时)
import { serve } from "bknd/adapter/node"
serve();
使用管理后台 UI(基于 Vite)
import { Admin } from "bknd/ui"
import "bknd/dist/styles.css";
export default function AdminPage() {
return <Admin />
}
通过 REST API 访问数据
curl -XGET <your-endpoint>/api/data/entity/<entity>
TypeScript SDK 示例
import { Api } from "bknd/client";
const api = new Api({ host: "<endpoint>" });
const { data } = await api.data.readMany("<entity>");
React 组件和 Hooks 示例
import { useEntityQuery } from "bknd/client";
export default function TodoList() {
const { data } = useEntityQuery("todos");
return (
<ul>
{data?.map(todo => (
<li key={todo.id}>{todo.name}</li>
))}
</ul>
);
}
媒体上传 React 组件示例
import { Media } from "bknd/elements"
import "bknd/dist/main.css"
export function UserAvatar() {
return (
<Media.Dropzone
entity={{ name: "users", id: 1, field: "avatar" }}
maxItems={1}
overwrite
/>
);
}
快速开始
npx bknd run
安装:
npm install bknd
注意事项
- 需要 Node.js 22 或更高版本(因使用
node:sqlite
) - 项目仍在积极开发中,v1.0.0 之前不保证完全向后兼容