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 运行时)

  1. import { serve } from "bknd/adapter/node"
  2. serve();

使用管理后台 UI(基于 Vite)

  1. import { Admin } from "bknd/ui"
  2. import "bknd/dist/styles.css";
  3. export default function AdminPage() {
  4. return <Admin />
  5. }

通过 REST API 访问数据

  1. curl -XGET <your-endpoint>/api/data/entity/<entity>

TypeScript SDK 示例

  1. import { Api } from "bknd/client";
  2. const api = new Api({ host: "<endpoint>" });
  3. const { data } = await api.data.readMany("<entity>");

React 组件和 Hooks 示例

  1. import { useEntityQuery } from "bknd/client";
  2. export default function TodoList() {
  3. const { data } = useEntityQuery("todos");
  4. return (
  5. <ul>
  6. {data?.map(todo => (
  7. <li key={todo.id}>{todo.name}</li>
  8. ))}
  9. </ul>
  10. );
  11. }

媒体上传 React 组件示例

  1. import { Media } from "bknd/elements"
  2. import "bknd/dist/main.css"
  3. export function UserAvatar() {
  4. return (
  5. <Media.Dropzone
  6. entity={{ name: "users", id: 1, field: "avatar" }}
  7. maxItems={1}
  8. overwrite
  9. />
  10. );
  11. }

快速开始

  1. npx bknd run

安装:

  1. npm install bknd

注意事项

  • 需要 Node.js 22 或更高版本(因使用 node:sqlite
  • 项目仍在积极开发中,v1.0.0 之前不保证完全向后兼容