From 9f0997c28a0b14cb41fd925b8db876c50ac77b52 Mon Sep 17 00:00:00 2001 From: Cameron Pak Date: Sat, 7 Feb 2026 16:50:51 -0600 Subject: [PATCH 01/19] Refactor and update documentation links for introduction --- bun.lock | 8 ++- .../docs/(documentation)/extending/admin.mdx | 2 +- .../docs/(documentation)/extending/config.mdx | 2 +- docs/content/docs/(documentation)/meta.json | 2 +- docs/content/docs/(documentation)/start.mdx | 50 +++++++++++-------- .../docs/(documentation)/usage/cli.mdx | 2 +- .../docs/(documentation)/usage/database.mdx | 6 +-- .../usage/{introduction.mdx => setup.mdx} | 39 +++++---------- 8 files changed, 50 insertions(+), 61 deletions(-) rename docs/content/docs/(documentation)/usage/{introduction.mdx => setup.mdx} (80%) diff --git a/bun.lock b/bun.lock index 36d18ff..af2a52d 100644 --- a/bun.lock +++ b/bun.lock @@ -16,7 +16,7 @@ }, "app": { "name": "bknd", - "version": "0.20.0-rc.1", + "version": "0.20.0", "bin": "./dist/cli/index.js", "dependencies": { "@cfworker/json-schema": "^4.1.1", @@ -3846,7 +3846,7 @@ "@babel/traverse/debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="], - "@bknd/plasmic/@types/bun": ["@types/bun@1.3.3", "", { "dependencies": { "bun-types": "1.3.3" } }, "sha512-ogrKbJ2X5N0kWLLFKeytG0eHDleBYtngtlbu9cyBKFtNL3cnpDZkNdQj8flVf6WTZUX5ulI9AY1oa7ljhSrp+g=="], + "@bknd/plasmic/@types/bun": ["@types/bun@1.3.8", "", { "dependencies": { "bun-types": "1.3.8" } }, "sha512-3LvWJ2q5GerAXYxO2mffLTqOzEu5qnhEAlh48Vnu8WQfnmSwbgagjGZV6BoHKJztENYEDn6QmVd949W4uESRJA=="], "@bundled-es-modules/tough-cookie/tough-cookie": ["tough-cookie@4.1.4", "", { "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", "universalify": "^0.2.0", "url-parse": "^1.5.3" } }, "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag=="], @@ -4750,7 +4750,7 @@ "@babel/preset-env/babel-plugin-polyfill-regenerator/@babel/helper-define-polyfill-provider": ["@babel/helper-define-polyfill-provider@0.6.3", "", { "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg=="], - "@bknd/plasmic/@types/bun/bun-types": ["bun-types@1.3.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ=="], + "@bknd/plasmic/@types/bun/bun-types": ["bun-types@1.3.8", "", { "dependencies": { "@types/node": "*" } }, "sha512-fL99nxdOWvV4LqjmC+8Q9kW3M4QTtTR1eePs94v5ctGqU8OeceWrSUaRw3JYb7tU3FkMIAjkueehrHPPPGKi5Q=="], "@bundled-es-modules/tough-cookie/tough-cookie/universalify": ["universalify@0.2.0", "", {}, "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg=="], @@ -5236,8 +5236,6 @@ "@babel/preset-env/babel-plugin-polyfill-regenerator/@babel/helper-define-polyfill-provider/debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="], - "@bknd/plasmic/@types/bun/bun-types/@types/node": ["@types/node@24.10.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A=="], - "@cloudflare/vitest-pool-workers/miniflare/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20251011.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-0DirVP+Z82RtZLlK2B+VhLOkk+ShBqDYO/jhcRw4oVlp0TOvk3cOVZChrt3+y3NV8Y/PYgTEywzLKFSziK4wCg=="], "@cloudflare/vitest-pool-workers/miniflare/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20251011.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-1WuFBGwZd15p4xssGN/48OE2oqokIuc51YvHvyNivyV8IYnAs3G9bJNGWth1X7iMDPe4g44pZrKhRnISS2+5dA=="], diff --git a/docs/content/docs/(documentation)/extending/admin.mdx b/docs/content/docs/(documentation)/extending/admin.mdx index a2adede..8b35029 100644 --- a/docs/content/docs/(documentation)/extending/admin.mdx +++ b/docs/content/docs/(documentation)/extending/admin.mdx @@ -7,7 +7,7 @@ import { TypeTable } from "fumadocs-ui/components/type-table"; bknd features an integrated Admin UI that can be used to: -- fully manage your backend visually when run in [`db` mode](/usage/introduction/#ui-only-mode) +- fully manage your backend visually when run in [`db` mode](/usage/setup/#ui-only-mode) - manage your database contents - manage your media contents diff --git a/docs/content/docs/(documentation)/extending/config.mdx b/docs/content/docs/(documentation)/extending/config.mdx index e6b0a4e..369f66a 100644 --- a/docs/content/docs/(documentation)/extending/config.mdx +++ b/docs/content/docs/(documentation)/extending/config.mdx @@ -121,7 +121,7 @@ If the connection object is omitted, the app will try to use an in-memory databa As configuration, you can either pass a partial configuration object or a complete one with a version number. The version number is used to automatically migrate the configuration up -to the latest version upon boot ([`db` mode](/usage/introduction#ui-only-mode) only). The default configuration looks like this: +to the latest version upon boot ([`db` mode](/usage/setup#ui-only-mode) only). The default configuration looks like this: ```json { diff --git a/docs/content/docs/(documentation)/meta.json b/docs/content/docs/(documentation)/meta.json index 442c37d..a2b624f 100644 --- a/docs/content/docs/(documentation)/meta.json +++ b/docs/content/docs/(documentation)/meta.json @@ -9,7 +9,7 @@ "start", "motivation", "---Usage---", - "./usage/introduction", + "./usage/setup", "./usage/database", "./usage/cli", "./usage/sdk", diff --git a/docs/content/docs/(documentation)/start.mdx b/docs/content/docs/(documentation)/start.mdx index 2b8e855..5a7a937 100644 --- a/docs/content/docs/(documentation)/start.mdx +++ b/docs/content/docs/(documentation)/start.mdx @@ -6,26 +6,36 @@ tags: ["documentation"] import { Icon } from "@iconify/react"; import { examples } from "@/app/_components/StackBlitz"; -import { SquareMousePointer, Code, Blend } from 'lucide-react'; +import { SquareMousePointer, Code, Blend, Rocket } from 'lucide-react'; - +## bknd is a lightweight batteries-included backend that embeds into your frontend app + + We're making great progress towards v1, but don't recommend production use yet. Follow along for updates on [GitHub Releases](https://github.com/bknd-io/bknd/releases) and in our [Discord community](https://discord.gg/952SFk8Tb8) -Welcome! bknd is the instant backend for your frontend with full REST API's, admin dashboard, auth and user management, file upload management, [type-safe SDK](/usage/sdk), [React hooks](/usage/react), and plugins to extend the bknd _(like our resend plugin for sending emails)_. bknd can be hosted with your server-side rendered (SSR) web app or hosted as a standalone app. - -bknd is incredibly lightweight and built upon Web Standards, so that you can bring bknd anywhere JavaScript runs. +bknd includes full REST APIs, an admin dashboard, auth, media uploads, a [type-safe SDK](/usage/sdk), [React hooks](/usage/react), and plugins to extend it. Host it with your SSR app or as a standalone service. Built on Web Standards, it runs anywhere JavaScript runs. Bring your [favorite frontend](./#start-with-a-frameworkruntime) and [favorite SQL database](./#use-your-favorite-sql-database), and we'll bring the ~~backend~~ bknd. -## Quickstart: bknd server and admin dashboard demo + + } + > + Why another backend system? + + + +## Quickstart Don't worry about messing anything up in this stage since you're learning the ropes of bknd. If you want to start over, please delete the generated `data.db` database file and follow this tutorial again. -Enter the following command to spin up a bknd instance via the [bknd CLI](/usage/cli): +Spin up a bknd instance via the [bknd CLI](/usage/cli): @@ -39,11 +49,9 @@ bunx bknd run -This will create a local `data.db` SQLite database file in the folder you ran the command and start the bknd web server at http://localhost:1337. +This creates a local `data.db` SQLite database and starts the bknd web server at http://localhost:1337. -By default, access to the admin dashboard is open and not guarded. This is intentional because bknd uses an opt-in philosophy model to allow for quick prototyping and intentional configuration. To restrict access and prevent unauthorized use, let's enable authentication and guard the dashboard. - -We will create a user and an admin role. We will then apply the admin role to the user. Then, we can lock down the admin dashboard by enabling the guard, securing access to your bknd app. Let's begin. +By default, the admin dashboard is open and not guarded. This is intentional — bknd uses an opt-in philosophy to allow quick prototyping. Let's enable authentication and guard the dashboard to secure it. 1. Visit http://localhost:1337/auth/settings. Toggle "Authentication Enabled" to enable auth. Select "Update" to save. 2. Visit http://localhost:1337/data/entity/users. Create a user by selecting "New User" and entering an email and password. @@ -52,29 +60,27 @@ We will create a user and an admin role. We will then apply the admin role to th 5. It's time to guard your admin dashboard. Visit http://localhost:1337/settings/auth. Select "Edit". Scroll to "Guard" and enable it. Then, select "Save". _(This should log you out!)_ 6. Now, log in to your secured admin dashboard at http://localhost:1337/auth/login. -You did it! 🥳 You've successfully started the bknd server and admin dashboard, created an admin user, and protected your bknd app by enabling the guard. +You did it! You've started the bknd server, created an admin user, and protected your app by enabling the guard. -What you've just experienced is called UI-only mode, where the bknd data and configuration is managed via the admin dashboard UI. Some may prefer the UI-only mode, while others may prefer the code-only mode. +## Modes -### bknd modes - -bknd supports multiple modes to suit your needs. +What you just experienced is **UI-only mode** — bknd's data and configuration is managed entirely via the admin dashboard. But that's not the only way to use bknd: - }> + }> Configure your backend and manage your data visually with the built-in Admin UI. - }> + }> Configure your backend programmatically with a Drizzle-like API, manage your data with the Admin UI. - }> + }> Configure your backend visually while in development, use a read-only configuration in production. -### Demo bknd in the browser +Learn more about each mode and the underlying configuration in [Setup & Modes](/usage/setup). -Here is a preview of bknd in StackBlitz: +## Try bknd in the browser @@ -90,7 +96,7 @@ Here is a preview of bknd in StackBlitz: ## Start with a Framework/Runtime -Start by using the integration guide for these popular frameworks/runtimes. There will be more in the future, so stay tuned! +Pick your framework or runtime to get started. } title="NextJS" href="/integration/nextjs" /> diff --git a/docs/content/docs/(documentation)/usage/cli.mdx b/docs/content/docs/(documentation)/usage/cli.mdx index 72b46f5..e97d481 100644 --- a/docs/content/docs/(documentation)/usage/cli.mdx +++ b/docs/content/docs/(documentation)/usage/cli.mdx @@ -263,7 +263,7 @@ To automatically sync your secrets to a file, you may also use the [`syncSecrets ## Syncing the database (`sync`) -Sync your database can be useful when running in [`code`](/usage/introduction/#code-only-mode) mode. When you're ready to deploy, you can point to the production configuration and sync the database. Schema mutations are only applied when running with the `--force` option. +Sync your database can be useful when running in [`code`](/usage/setup/#code-only-mode) mode. When you're ready to deploy, you can point to the production configuration and sync the database. Schema mutations are only applied when running with the `--force` option. ```bash $ npx bknd sync --help diff --git a/docs/content/docs/(documentation)/usage/database.mdx b/docs/content/docs/(documentation)/usage/database.mdx index 0b0db2f..103e6e9 100644 --- a/docs/content/docs/(documentation)/usage/database.mdx +++ b/docs/content/docs/(documentation)/usage/database.mdx @@ -310,7 +310,7 @@ const app = createApp({ connection }); ## Data Structure -To provide a database structure, you can pass `config` to the creation of an app. In [`db` mode](/usage/introduction#ui-only-mode), the data structure is only respected if the database is empty. If you made updates, ensure to delete the database first, or perform updates through the Admin UI. +To provide a database structure, you can pass `config` to the creation of an app. In [`db` mode](/usage/setup#ui-only-mode), the data structure is only respected if the database is empty. If you made updates, ensure to delete the database first, or perform updates through the Admin UI. Here is a quick example: @@ -506,9 +506,9 @@ const app = createApp({ }); ``` -Note that in [`db` mode](/usage/introduction#ui-only-mode), the seed function will only be executed on app's first boot. If a configuration already exists in the database, it will not be executed. +Note that in [`db` mode](/usage/setup#ui-only-mode), the seed function will only be executed on app's first boot. If a configuration already exists in the database, it will not be executed. -In [`code` mode](/usage/introduction#code-only-mode), the seed function will not be automatically executed. You can manually execute it by running the following command: +In [`code` mode](/usage/setup#code-only-mode), the seed function will not be automatically executed. You can manually execute it by running the following command: ```bash npx bknd sync --seed --force diff --git a/docs/content/docs/(documentation)/usage/introduction.mdx b/docs/content/docs/(documentation)/usage/setup.mdx similarity index 80% rename from docs/content/docs/(documentation)/usage/introduction.mdx rename to docs/content/docs/(documentation)/usage/setup.mdx index c290a12..1f58be5 100644 --- a/docs/content/docs/(documentation)/usage/introduction.mdx +++ b/docs/content/docs/(documentation)/usage/setup.mdx @@ -1,6 +1,6 @@ --- -title: "Introduction" -description: "Setting up bknd" +title: "Setup & Modes" +description: "Configuring bknd and choosing a mode" icon: Pin tags: ["documentation"] --- @@ -8,22 +8,9 @@ tags: ["documentation"] import { TypeTable } from "fumadocs-ui/components/type-table"; import { SquareMousePointer, Code, Blend } from 'lucide-react'; -There are several methods to get **bknd** up and running. You can choose between these options: - -1. [Run it using the CLI](/usage/cli): That's the easiest and fastest way to get started. -2. Use a runtime like [Node](/integration/node), [Bun](/integration/bun) or - [Cloudflare](/integration/cloudflare) (workerd). This will run the API and UI in the runtime's - native server and serves the UI assets statically from `node_modules`. -3. Run it inside your React framework of choice like [Next.js](/integration/nextjs), - [Astro](/integration/astro) or [Remix](/integration/remix). - -There is also a fourth option, which is running it inside a -[Docker container](/integration/docker). This is essentially a wrapper around the CLI. - ## Basic setup -Regardless of the method you choose, at the end all adapters come down to the actual -instantiation of the `App`, which in raw looks like this: +Regardless of how you run bknd, all adapters come down to instantiating the `App`: ```typescript import { createApp, type BkndConfig } from "bknd"; @@ -54,21 +41,19 @@ Check the integration details for your specific runtime or framework in the [int ## Modes -Main project goal is to provide a backend that can be configured visually with the built-in Admin UI. However, you may instead want to configure your backend programmatically, and define your data structure with a Drizzle-like API: - - }> + }> This is the default mode, it allows visual configuration and saves the configuration to the database. Expects you to deploy your backend separately from your frontend. - }> - This mode allows you to configure your backend programmatically, and define your data structure with a Drizzle-like API. Visual configuration controls are disabled. + }> + This mode allows you to configure your backend programmatically, and define your data structure with a Drizzle-like API. Visual configuration controls are disabled. - }> - This mode allows you to configure your backend visually while in development, and uses the produced configuration in a code-only mode for maximum performance. + }> + This mode allows you to configure your backend visually while in development, and uses the produced configuration in a code-only mode for maximum performance. -In the following sections, we'll cover the different modes in more detail. The configuration properties involved are the following: +The configuration properties involved are the following: ```typescript title="bknd.config.ts" import type { BkndConfig } from "bknd"; @@ -132,7 +117,7 @@ export default { ### Code-only mode -This mode allows you to configure your backend programmatically, and define your data structure with a Drizzle-like API. Visual configuration controls are disabled. +This mode allows you to configure your backend programmatically, and define your data structure with a Drizzle-like API. Visual configuration controls are disabled. ```typescript title="bknd.config.ts" import { type BkndConfig, em, entity, text, boolean } from "bknd"; @@ -200,7 +185,7 @@ To keep your config, secrets and types in sync, you can either use the CLI or th ## Mode helpers -To make the setup using your preferred mode easier, there are mode helpers for [`code`](/usage/introduction#code-only-mode) and [`hybrid`](/usage/introduction#hybrid-mode) modes. +To make the setup using your preferred mode easier, there are mode helpers for [`code`](/usage/setup#code-only-mode) and [`hybrid`](/usage/setup#hybrid-mode) modes. * built-in syncing of config, types and secrets * let bknd automatically sync the data schema in development @@ -261,4 +246,4 @@ export default hybrid({ drop: true, }, }); -``` \ No newline at end of file +``` From aca162f9c89667ed3fff7f11678feed6901fcbca Mon Sep 17 00:00:00 2001 From: Cameron Pak Date: Sat, 7 Feb 2026 16:58:49 -0600 Subject: [PATCH 02/19] Refactor setup documentation for clarity --- .../docs/(documentation)/usage/setup.mdx | 239 +++++++----------- 1 file changed, 85 insertions(+), 154 deletions(-) diff --git a/docs/content/docs/(documentation)/usage/setup.mdx b/docs/content/docs/(documentation)/usage/setup.mdx index 1f58be5..51458f3 100644 --- a/docs/content/docs/(documentation)/usage/setup.mdx +++ b/docs/content/docs/(documentation)/usage/setup.mdx @@ -1,123 +1,74 @@ --- title: "Setup & Modes" -description: "Configuring bknd and choosing a mode" +description: "Choose a mode and get bknd running with your app" icon: Pin tags: ["documentation"] --- -import { TypeTable } from "fumadocs-ui/components/type-table"; import { SquareMousePointer, Code, Blend } from 'lucide-react'; -## Basic setup +bknd supports three modes. Each mode determines how your backend is configured and where that configuration lives. -Regardless of how you run bknd, all adapters come down to instantiating the `App`: - -```typescript -import { createApp, type BkndConfig } from "bknd"; - -// create the app -const config = { - /* ... */ -} satisfies BkndConfig; -const app = createApp(config); - -// build the app -await app.build(); - -// export for Web API compliant envs -export default app; -``` - -In Web API compliant environments, all you have to do is to default exporting the app, as it implements the `Fetch` API. In case an explicit `fetch` export is needed, you can use the `app.fetch` property. - -```typescript -const app = /* ... */; -export default { - fetch: app.fetch, -} -``` - -Check the integration details for your specific runtime or framework in the [integration](/integration/introduction) section. - -## Modes +## Choose your mode - }> - This is the default mode, it allows visual configuration and saves the configuration to the database. Expects you to deploy your backend separately from your frontend. + }> + Configure visually via the Admin UI. Config is stored in the database. - }> - This mode allows you to configure your backend programmatically, and define your data structure with a Drizzle-like API. Visual configuration controls are disabled. + }> + Define your schema in code with a Drizzle-like API. Config lives in your codebase. - }> - This mode allows you to configure your backend visually while in development, and uses the produced configuration in a code-only mode for maximum performance. + }> + Use the Admin UI in development, export to code for production. -The configuration properties involved are the following: +**Not sure which to pick?** + +- **UI-only** is best for prototyping and small projects. No code needed — configure everything through the dashboard. +- **Code-only** is best for teams, CI/CD, and version-controlled schemas. You define your data structure programmatically. +- **Hybrid** gives you the best of both — visual configuration while developing, locked-down code config in production. + +You can always change modes later. Start with UI-only if you're exploring. + +--- + +## UI-only mode + +This is the default. Run bknd and configure everything through the Admin UI. No setup code required beyond a database connection. ```typescript title="bknd.config.ts" import type { BkndConfig } from "bknd"; export default { - config: { /* ... */ } - options: { - mode: "db", // or "code" - manager: { - secrets: { /* ... */ }, - storeSecrets: true, - }, - } + connection: { url: "file:data.db" }, } satisfies BkndConfig; ``` - +If you want to provide an initial data structure (entities, auth settings, etc.), pass it via `config`. It will only be applied when the database is empty. -### UI-only mode - -This mode is the default mode. It allows you to configure your backend visually with the built-in Admin UI. It expects that you deploy your backend separately from your frontend, and make changes there. No configuration is needed, however, if you want to provide an initial configuration, you can do so by passing a `config` object. - -```typescript +```typescript title="bknd.config.ts" import type { BkndConfig } from "bknd"; export default { - // this will only be applied if the database is empty - config: { /* ... */ }, + connection: { url: "file:data.db" }, + config: { + auth: { enabled: true }, + }, } satisfies BkndConfig; ``` - Note that when using the default UI-mode, the initial configuration using the `config` property will only be applied if the database is empty. + In UI-only mode, the `config` property is only applied on first boot. After that, all changes are made through the Admin UI. +**Next step:** Pick your [framework or runtime integration](/integration/introduction) to wire bknd into your app. -### Code-only mode +--- -This mode allows you to configure your backend programmatically, and define your data structure with a Drizzle-like API. Visual configuration controls are disabled. +## Code-only mode + +Define your data structure programmatically with a Drizzle-like API. The Admin UI becomes read-only for configuration — you still use it to manage data. ```typescript title="bknd.config.ts" import { type BkndConfig, em, entity, text, boolean } from "bknd"; @@ -131,119 +82,99 @@ const schema = em({ }); export default { - // example configuration + connection: { url: "file:data.db" }, config: { data: schema.toJSON(), auth: { enabled: true, - jwt: { - secret: secureRandomString(64), - }, - } + jwt: { secret: secureRandomString(64) }, + }, }, options: { - // this ensures that the provided configuration is always used mode: "code", }, } satisfies BkndConfig; ``` -Unlike the UI-only mode, the configuration passed to `config` is always applied. In case you make data structure changes, you may need to sync the schema to the database manually, e.g. using the [sync command](/usage/cli#syncing-the-database-sync). +Unlike UI-only mode, the `config` is applied on every boot. If you change the schema, you may need to [sync the database](/usage/cli#syncing-the-database-sync). -### Hybrid mode +**Next step:** Pick your [framework or runtime integration](/integration/introduction) to wire bknd into your app. -This mode allows you to configure your backend visually while in development, and uses the produced configuration in a code-only mode for maximum performance. It gives you the best of both worlds. +--- -While in development, we set the mode to `"db"` where the configuration is stored in the database. When it's time to deploy, we export the configuration, and set the mode to `"code"`. While in `"db"` mode, the `config` property interprets the value as an initial configuration to use when the database is empty. +## Hybrid mode + +Use the Admin UI to configure your backend while developing. When you're ready to deploy, export the config and run in code mode for production. ```typescript title="bknd.config.ts" import type { BkndConfig } from "bknd"; - -// import your produced configuration import appConfig from "./appconfig.json" with { type: "json" }; export default { + connection: { url: "file:data.db" }, config: appConfig, options: { mode: process.env.NODE_ENV === "development" ? "db" : "code", manager: { - secrets: process.env - } + secrets: process.env, + }, }, } satisfies BkndConfig; ``` -To keep your config, secrets and types in sync, you can either use the CLI or the plugins. +To export your config, secrets, and types, use the CLI or plugins: +| What | CLI Command | Plugin | +|------|-------------|--------| +| Configuration | [`bknd config`](/usage/cli/#getting-the-configuration-config) | [`syncConfig`](/extending/plugins/#syncconfig) | +| Secrets | [`bknd secrets`](/usage/cli/#getting-the-secrets-secrets) | [`syncSecrets`](/extending/plugins/#syncsecrets) | +| Types | [`bknd types`](/usage/cli/#generating-types-types) | [`syncTypes`](/extending/plugins/#synctypes) | -| Type | Plugin | CLI Command | -|----------------|-----------------------------------------------------------------------|----------------------------| -| Configuration | [`syncConfig`](/extending/plugins/#syncconfig) | [`config`](/usage/cli/#getting-the-configuration-config) | -| Secrets | [`syncSecrets`](/extending/plugins/#syncsecrets) | [`secrets`](/usage/cli/#getting-the-secrets-secrets) | -| Types | [`syncTypes`](/extending/plugins/#synctypes) | [`types`](/usage/cli/#generating-types-types) | +**Next step:** Pick your [framework or runtime integration](/integration/introduction) to wire bknd into your app. +--- ## Mode helpers -To make the setup using your preferred mode easier, there are mode helpers for [`code`](/usage/setup#code-only-mode) and [`hybrid`](/usage/setup#hybrid-mode) modes. +For code and hybrid modes, bknd provides helper functions that handle syncing, mode switching, and schema validation automatically. -* built-in syncing of config, types and secrets -* let bknd automatically sync the data schema in development -* automatically switch modes in hybrid (from db to code) in production -* automatically skip config validation in production to boost performance - -To use it, you have to wrap your configuration in a mode helper, e.g. for `code` mode using the Bun adapter: - -```typescript title="bknd.config.ts" -import { code, type CodeMode } from "bknd/modes"; +```typescript title="bknd.config.ts (code mode with Bun)" +import { code } from "bknd/modes"; import { type BunBkndConfig, writer } from "bknd/adapter/bun"; export default code({ - // some normal bun bknd config - connection: { url: "file:data.db" }, - // ... - // a writer is required, to sync the types - writer, - // (optional) mode specific config - isProduction: Bun.env.NODE_ENV === "production", - typesFilePath: "bknd-types.d.ts", - // (optional) e.g. have the schema synced if !isProduction - syncSchema: { - force: true, - drop: true, - } + connection: { url: "file:data.db" }, + writer, + isProduction: Bun.env.NODE_ENV === "production", + typesFilePath: "bknd-types.d.ts", }); ``` -Similarily, for `hybrid` mode: - -```typescript title="bknd.config.ts" -import { hybrid, type HybridMode } from "bknd/modes"; +```typescript title="bknd.config.ts (hybrid mode with Bun)" +import { hybrid } from "bknd/modes"; import { type BunBkndConfig, writer, reader } from "bknd/adapter/bun"; export default hybrid({ - // some normal bun bknd config - connection: { url: "file:data.db" }, - // ... - // reader/writer are required, to sync the types and config - writer, - reader, - // supply secrets - secrets: await Bun.file(".env.local").json(), - // (optional) mode specific config - isProduction: Bun.env.NODE_ENV === "production", - typesFilePath: "bknd-types.d.ts", - configFilePath: "bknd-config.json", - // (optional) and have them automatically written if !isProduction - syncSecrets: { - outFile: ".env.local", - format: "env", - includeSecrets: true, - }, - // (optional) also have the schema synced if !isProduction - syncSchema: { - force: true, - drop: true, - }, + connection: { url: "file:data.db" }, + writer, + reader, + secrets: await Bun.file(".env.local").json(), + isProduction: Bun.env.NODE_ENV === "production", + typesFilePath: "bknd-types.d.ts", + configFilePath: "bknd-config.json", }); ``` + +Mode helpers give you: +- Built-in syncing of config, types, and secrets +- Automatic schema syncing in development +- Automatic mode switching (db → code) in production for hybrid +- Skipped config validation in production for faster boot + +--- + +## Further reading + +- [Framework & runtime integrations](/integration/introduction) — wire bknd into Next.js, Astro, Bun, Cloudflare, etc. +- [Database configuration](/usage/database) — choose and configure your SQL database +- [Configuration reference](/extending/config) — full `BkndConfig` API, plugins, events, and lifecycle hooks From 5873baad3ceb86652f939e374ba09c7d6353c95c Mon Sep 17 00:00:00 2001 From: Cameron Pak Date: Sat, 7 Feb 2026 17:09:36 -0600 Subject: [PATCH 03/19] Docs: add redirect from /usage/introduction to /usage/setup Co-Authored-By: Craft Agent --- docs/app/usage/introduction/page.tsx | 12 ++++++++++++ docs/redirects.config.mjs | 5 +++++ 2 files changed, 17 insertions(+) create mode 100644 docs/app/usage/introduction/page.tsx diff --git a/docs/app/usage/introduction/page.tsx b/docs/app/usage/introduction/page.tsx new file mode 100644 index 0000000..f05303b --- /dev/null +++ b/docs/app/usage/introduction/page.tsx @@ -0,0 +1,12 @@ +"use client"; + +import { useEffect } from "react"; +import { useRouter } from "next/navigation"; + +export default function Page() { + const router = useRouter(); + useEffect(() => { + router.replace("/usage/setup/"); + }, [router]); + return null; +} diff --git a/docs/redirects.config.mjs b/docs/redirects.config.mjs index 8eb900a..00ec94e 100644 --- a/docs/redirects.config.mjs +++ b/docs/redirects.config.mjs @@ -9,4 +9,9 @@ export const redirectsConfig = [ destination: "/start", permanent: true, }, + { + source: "/usage/introduction", + destination: "/usage/setup", + permanent: true, + }, ]; From e20c2ef92c82e027063580aa8d472132567591cf Mon Sep 17 00:00:00 2001 From: Cameron Pak Date: Sat, 7 Feb 2026 17:14:11 -0600 Subject: [PATCH 04/19] Docs: move redirects to global config, remove client-side redirect page Co-Authored-By: Craft Agent --- docs/app/usage/introduction/page.tsx | 12 ------------ docs/next.config.mjs | 5 ++++- 2 files changed, 4 insertions(+), 13 deletions(-) delete mode 100644 docs/app/usage/introduction/page.tsx diff --git a/docs/app/usage/introduction/page.tsx b/docs/app/usage/introduction/page.tsx deleted file mode 100644 index f05303b..0000000 --- a/docs/app/usage/introduction/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -"use client"; - -import { useEffect } from "react"; -import { useRouter } from "next/navigation"; - -export default function Page() { - const router = useRouter(); - useEffect(() => { - router.replace("/usage/setup/"); - }, [router]); - return null; -} diff --git a/docs/next.config.mjs b/docs/next.config.mjs index c0ec95b..fb487a2 100644 --- a/docs/next.config.mjs +++ b/docs/next.config.mjs @@ -16,6 +16,10 @@ const config = { reactStrictMode: true, serverExternalPackages: ["typescript", "twoslash"], + async redirects() { + return redirectsConfig; + }, + webpack(config) { config.resolve.alias["@/bknd"] = path.resolve(__dirname, "../app/src"); config.resolve.alias["@"] = path.resolve(__dirname); @@ -28,7 +32,6 @@ const config = { if (process.env.NODE_ENV === "development") { config.output = "standalone"; - config.redirects = async () => redirectsConfig; config.rewrites = async () => rewritesConfig; } From b85c3a8a9b4c923b6b5cfcb460feefa4ba45be5d Mon Sep 17 00:00:00 2001 From: Cameron Pak Date: Sat, 7 Feb 2026 17:17:36 -0600 Subject: [PATCH 05/19] Remove redundant redirects config --- docs/next.config.mjs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/next.config.mjs b/docs/next.config.mjs index fb487a2..c0ec95b 100644 --- a/docs/next.config.mjs +++ b/docs/next.config.mjs @@ -16,10 +16,6 @@ const config = { reactStrictMode: true, serverExternalPackages: ["typescript", "twoslash"], - async redirects() { - return redirectsConfig; - }, - webpack(config) { config.resolve.alias["@/bknd"] = path.resolve(__dirname, "../app/src"); config.resolve.alias["@"] = path.resolve(__dirname); @@ -32,6 +28,7 @@ const config = { if (process.env.NODE_ENV === "development") { config.output = "standalone"; + config.redirects = async () => redirectsConfig; config.rewrites = async () => rewritesConfig; } From fc60dfd04279745508bf6f5cf5890acb2590a05b Mon Sep 17 00:00:00 2001 From: roma <84147465+xretic@users.noreply.github.com> Date: Mon, 9 Feb 2026 03:07:58 +0100 Subject: [PATCH 06/19] refactor adapter tests for improved structure reduced test duplication by extracting a small helper to strip connection from configs --- app/__test__/adapter/adapter.test.ts | 104 +++++++++++++++------------ 1 file changed, 57 insertions(+), 47 deletions(-) diff --git a/app/__test__/adapter/adapter.test.ts b/app/__test__/adapter/adapter.test.ts index 8527b5d..8e8eb99 100644 --- a/app/__test__/adapter/adapter.test.ts +++ b/app/__test__/adapter/adapter.test.ts @@ -1,66 +1,76 @@ import { expect, describe, it, beforeAll, afterAll, mock } from "bun:test"; import * as adapter from "adapter"; -import { disableConsoleLog, enableConsoleLog } from "core/utils"; +import { disableConsoleLog, enableConsoleLog, omitKeys } from "core/utils"; import { adapterTestSuite } from "adapter/adapter-test-suite"; import { bunTestRunner } from "adapter/bun/test"; -import { omitKeys } from "core/utils"; + +const stripConnection = >(cfg: T) => + omitKeys(cfg, ["connection"]); beforeAll(disableConsoleLog); afterAll(enableConsoleLog); describe("adapter", () => { - it("makes config", async () => { - expect(omitKeys(await adapter.makeConfig({}), ["connection"])).toEqual({}); - expect( - omitKeys(await adapter.makeConfig({}, { env: { TEST: "test" } }), ["connection"]), - ).toEqual({}); + describe("makeConfig", () => { + it("returns empty config for empty inputs", async () => { + const cases: Array> = [ + [{}], + [{}, { env: { TEST: "test" } }], + ]; - // merges everything returned from `app` with the config - expect( - omitKeys( - await adapter.makeConfig( - { app: (a) => ({ config: { server: { cors: { origin: a.env.TEST } } } }) }, - { env: { TEST: "test" } }, - ), - ["connection"], - ), - ).toEqual({ - config: { server: { cors: { origin: "test" } } }, - }); - }); + for (const args of cases) { + const cfg = await adapter.makeConfig(...(args as any)); + expect(stripConnection(cfg)).toEqual({}); + } + }); - it("allows all properties in app function", async () => { - const called = mock(() => null); - const config = await adapter.makeConfig( - { - app: (env) => ({ - connection: { url: "test" }, - config: { server: { cors: { origin: "test" } } }, - options: { - mode: "db", - }, - onBuilt: () => { - called(); - expect(env).toEqual({ foo: "bar" }); - }, - }), - }, - { foo: "bar" }, + it("merges app output into config", async () => { + const cfg = await adapter.makeConfig( + { app: (a) => ({ config: { server: { cors: { origin: a.env.TEST } } } }) }, + { env: { TEST: "test" } }, ); - expect(config.connection).toEqual({ url: "test" }); - expect(config.config).toEqual({ server: { cors: { origin: "test" } } }); - expect(config.options).toEqual({ mode: "db" }); - await config.onBuilt?.(null as any); - expect(called).toHaveBeenCalled(); - }); - adapterTestSuite(bunTestRunner, { + expect(stripConnection(cfg)).toEqual({ + config: { server: { cors: { origin: "test" } } }, + }); + }); + + it("allows all properties in app() result", async () => { + const called = mock(() => null); + + const cfg = await adapter.makeConfig( + { + app: (env) => ({ + connection: { url: "test" }, + config: { server: { cors: { origin: "test" } } }, + options: { mode: "db" as const }, + onBuilt: () => { + called(); + expect(env).toEqual({ foo: "bar" }); + }, + }), + }, + { foo: "bar" }, + ); + + expect(cfg.connection).toEqual({ url: "test" }); + expect(cfg.config).toEqual({ server: { cors: { origin: "test" } } }); + expect(cfg.options).toEqual({ mode: "db" }); + + await cfg.onBuilt?.({} as any); + expect(called).toHaveBeenCalledTimes(1); + }); + }); + + describe("adapter test suites", () => { + adapterTestSuite(bunTestRunner, { makeApp: adapter.createFrameworkApp, label: "framework app", - }); + }); - adapterTestSuite(bunTestRunner, { + adapterTestSuite(bunTestRunner, { makeApp: adapter.createRuntimeApp, label: "runtime app", - }); + }); + }); }); From 0ef06375c0013a30f8e989147eec7bd41c627f05 Mon Sep 17 00:00:00 2001 From: Jonas Perusquia Morales Date: Wed, 18 Feb 2026 11:03:58 -0600 Subject: [PATCH 07/19] docs: Document changePassword method in auth module --- .../content/docs/(documentation)/modules/auth.mdx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/content/docs/(documentation)/modules/auth.mdx b/docs/content/docs/(documentation)/modules/auth.mdx index 069c7bb..b7cf097 100644 --- a/docs/content/docs/(documentation)/modules/auth.mdx +++ b/docs/content/docs/(documentation)/modules/auth.mdx @@ -30,6 +30,21 @@ With a focus on flexibility and ease of integration, bknd's authentication syste --- +## SDK Method: `app.module.auth.changePassword(user.id, password)` + +### `auth.changePassword([userId], [password])` + +To change a user's password, use the `changePassword` method: + +```ts +await app.module.auth.changePassword(user.id, password); +``` + +This method updates the password for the specified user. +- `userId`: The ID of the user whose password should be changed. +- `password`: The new password value. + + ## Securing Your Admin Portal From 8805f017a1f52f92a445bd0dfcabc71b6f0e0761 Mon Sep 17 00:00:00 2001 From: Jonas Perusquia Morales Date: Wed, 18 Feb 2026 11:12:14 -0600 Subject: [PATCH 08/19] Update auth docs to clarify server module usage --- docs/content/docs/(documentation)/modules/auth.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/docs/(documentation)/modules/auth.mdx b/docs/content/docs/(documentation)/modules/auth.mdx index b7cf097..2bdd3e3 100644 --- a/docs/content/docs/(documentation)/modules/auth.mdx +++ b/docs/content/docs/(documentation)/modules/auth.mdx @@ -30,7 +30,7 @@ With a focus on flexibility and ease of integration, bknd's authentication syste --- -## SDK Method: `app.module.auth.changePassword(user.id, password)` +## Server Module: `module.auth` ### `auth.changePassword([userId], [password])` From d1522c97ea134a866c11ee317398fefa2beef11f Mon Sep 17 00:00:00 2001 From: Jonas Perusquia Morales Date: Wed, 28 Jan 2026 13:54:02 -0600 Subject: [PATCH 09/19] Make dist clean cross-platform without shell commands --- app/build.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/build.ts b/app/build.ts index 3fd35ef..c20526a 100644 --- a/app/build.ts +++ b/app/build.ts @@ -2,7 +2,7 @@ import { $ } from "bun"; import * as tsup from "tsup"; import pkg from "./package.json" with { type: "json" }; import c from "picocolors"; -import { watch as fsWatch } from "node:fs"; +import { watch as fsWatch, readdirSync, rmSync } from "node:fs"; import { join } from "node:path"; const args = process.argv.slice(2); @@ -27,7 +27,18 @@ const define = { if (clean) { console.info("Cleaning dist (w/o static)"); - await $`find dist -mindepth 1 ! -path "dist/static/*" ! -path "dist/static" -exec rm -rf {} +`; + // Cross-platform clean: remove all files/folders in dist except static + const distPath = join(import.meta.dir, "dist"); + try { + const entries = readdirSync(distPath); + for (const entry of entries) { + if (entry === "static") continue; + const entryPath = join(distPath, entry); + rmSync(entryPath, { recursive: true, force: true }); + } + } catch (e) { + // dist may not exist yet, ignore + } } let types_running = false; From cc1e1976f764ea6cbedecba86a067b57978943d4 Mon Sep 17 00:00:00 2001 From: Jonas Perusquia Morales Date: Mon, 23 Feb 2026 13:03:37 -0600 Subject: [PATCH 10/19] chore: Document error cases for password update method --- docs/content/docs/(documentation)/modules/auth.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/content/docs/(documentation)/modules/auth.mdx b/docs/content/docs/(documentation)/modules/auth.mdx index 2bdd3e3..72e082a 100644 --- a/docs/content/docs/(documentation)/modules/auth.mdx +++ b/docs/content/docs/(documentation)/modules/auth.mdx @@ -44,6 +44,10 @@ This method updates the password for the specified user. - `userId`: The ID of the user whose password should be changed. - `password`: The new password value. +This method throws an error if: +- The user with the given `userId` is not found. +- The user's authentication strategy is not `"password"` (e.g. the user registered via an OAuth provider). + ## Securing Your Admin Portal From 384e337bbdef32270dcba3d2827897453529cb12 Mon Sep 17 00:00:00 2001 From: Shishant Biswas Date: Wed, 11 Feb 2026 20:29:03 +0530 Subject: [PATCH 11/19] add: Tanstack Start adapter --- app/build.ts | 599 +++++++++--------- app/e2e/inc/adapters.ts | 69 +- app/package.json | 6 + app/src/adapter/tanstack-start/index.ts | 1 + .../tanstack-start.adapter.spec.ts | 16 + .../tanstack-start/tanstack-start.adapter.ts | 23 + bun.lock | 4 +- 7 files changed, 398 insertions(+), 320 deletions(-) create mode 100644 app/src/adapter/tanstack-start/index.ts create mode 100644 app/src/adapter/tanstack-start/tanstack-start.adapter.spec.ts create mode 100644 app/src/adapter/tanstack-start/tanstack-start.adapter.ts diff --git a/app/build.ts b/app/build.ts index c20526a..7da7832 100644 --- a/app/build.ts +++ b/app/build.ts @@ -14,15 +14,15 @@ const clean = args.includes("--clean"); // silence tsup const oldConsole = { - log: console.log, - warn: console.warn, + log: console.log, + warn: console.warn, }; console.log = () => {}; console.warn = () => {}; const define = { - __isDev: "0", - __version: JSON.stringify(pkg.version), + __isDev: "0", + __version: JSON.stringify(pkg.version), }; if (clean) { @@ -43,146 +43,149 @@ if (clean) { let types_running = false; function buildTypes() { - if (types_running || !types) return; - types_running = true; + if (types_running || !types) return; + types_running = true; - Bun.spawn(["bun", "build:types"], { - stdout: "inherit", - onExit: () => { - oldConsole.log(c.cyan("[Types]"), c.green("built")); - Bun.spawn(["bun", "tsc-alias"], { - stdout: "inherit", - onExit: () => { - oldConsole.log(c.cyan("[Types]"), c.green("aliased")); - types_running = false; - }, - }); - }, - }); + Bun.spawn(["bun", "build:types"], { + stdout: "inherit", + onExit: () => { + oldConsole.log(c.cyan("[Types]"), c.green("built")); + Bun.spawn(["bun", "tsc-alias"], { + stdout: "inherit", + onExit: () => { + oldConsole.log(c.cyan("[Types]"), c.green("aliased")); + types_running = false; + }, + }); + }, + }); } if (types && !watch) { - buildTypes(); + buildTypes(); } let watcher_timeout: any; function delayTypes() { - if (!watch || !types) return; - if (watcher_timeout) { - clearTimeout(watcher_timeout); - } - watcher_timeout = setTimeout(buildTypes, 1000); + if (!watch || !types) return; + if (watcher_timeout) { + clearTimeout(watcher_timeout); + } + watcher_timeout = setTimeout(buildTypes, 1000); } const dependencies = Object.keys(pkg.dependencies); // collection of always-external packages const external = [ - ...dependencies, - "bun:test", - "node:test", - "node:assert/strict", - "@libsql/client", - "bknd", - /^bknd\/.*/, - "jsonv-ts", - /^jsonv-ts\/.*/, + ...dependencies, + "bun:test", + "node:test", + "node:assert/strict", + "@libsql/client", + "bknd", + /^bknd\/.*/, + "jsonv-ts", + /^jsonv-ts\/.*/, ] as const; /** * Building backend and general API */ async function buildApi() { - await tsup.build({ - minify, - sourcemap, - // don't use tsup's broken watch, we'll handle it ourselves - watch: false, - define, - entry: [ - "src/index.ts", - "src/core/utils/index.ts", - "src/plugins/index.ts", - "src/modes/index.ts", - ], - outDir: "dist", - external: [...external], - metafile: true, - target: "esnext", - platform: "browser", - removeNodeProtocol: false, - format: ["esm"], - splitting: false, - loader: { - ".svg": "dataurl", - }, - onSuccess: async () => { - delayTypes(); - oldConsole.log(c.cyan("[API]"), c.green("built")); - }, - }); + await tsup.build({ + minify, + sourcemap, + // don't use tsup's broken watch, we'll handle it ourselves + watch: false, + define, + entry: [ + "src/index.ts", + "src/core/utils/index.ts", + "src/plugins/index.ts", + "src/modes/index.ts", + ], + outDir: "dist", + external: [...external], + metafile: true, + target: "esnext", + platform: "browser", + removeNodeProtocol: false, + format: ["esm"], + splitting: false, + loader: { + ".svg": "dataurl", + }, + onSuccess: async () => { + delayTypes(); + oldConsole.log(c.cyan("[API]"), c.green("built")); + }, + }); } async function rewriteClient(path: string) { - const bundle = await Bun.file(path).text(); - await Bun.write(path, '"use client";\n' + bundle.replaceAll("ui/client", "bknd/client")); + const bundle = await Bun.file(path).text(); + await Bun.write( + path, + '"use client";\n' + bundle.replaceAll("ui/client", "bknd/client"), + ); } /** * Building UI for direct imports */ async function buildUi() { - const base = { - minify, - sourcemap, - watch: false, - define, - external: [ - ...external, - "react", - "react-dom", - "react/jsx-runtime", - "react/jsx-dev-runtime", - "use-sync-external-store", - /codemirror/, - "@xyflow/react", - "@mantine/core", - ], - metafile: true, - platform: "browser", - format: ["esm"], - splitting: false, - bundle: true, - treeshake: true, - loader: { - ".svg": "dataurl", - }, - esbuildOptions: (options) => { - options.logLevel = "silent"; - }, - } satisfies tsup.Options; + const base = { + minify, + sourcemap, + watch: false, + define, + external: [ + ...external, + "react", + "react-dom", + "react/jsx-runtime", + "react/jsx-dev-runtime", + "use-sync-external-store", + /codemirror/, + "@xyflow/react", + "@mantine/core", + ], + metafile: true, + platform: "browser", + format: ["esm"], + splitting: false, + bundle: true, + treeshake: true, + loader: { + ".svg": "dataurl", + }, + esbuildOptions: (options) => { + options.logLevel = "silent"; + }, + } satisfies tsup.Options; - await tsup.build({ - ...base, - entry: ["src/ui/index.ts", "src/ui/main.css", "src/ui/styles.css"], - outDir: "dist/ui", - onSuccess: async () => { - await rewriteClient("./dist/ui/index.js"); - delayTypes(); - oldConsole.log(c.cyan("[UI]"), c.green("built")); - }, - }); + await tsup.build({ + ...base, + entry: ["src/ui/index.ts", "src/ui/main.css", "src/ui/styles.css"], + outDir: "dist/ui", + onSuccess: async () => { + await rewriteClient("./dist/ui/index.js"); + delayTypes(); + oldConsole.log(c.cyan("[UI]"), c.green("built")); + }, + }); - await tsup.build({ - ...base, - entry: ["src/ui/client/index.ts"], - outDir: "dist/ui/client", - onSuccess: async () => { - await rewriteClient("./dist/ui/client/index.js"); - delayTypes(); - oldConsole.log(c.cyan("[UI]"), "Client", c.green("built")); - }, - }); + await tsup.build({ + ...base, + entry: ["src/ui/client/index.ts"], + outDir: "dist/ui/client", + onSuccess: async () => { + await rewriteClient("./dist/ui/client/index.js"); + delayTypes(); + oldConsole.log(c.cyan("[UI]"), "Client", c.green("built")); + }, + }); } /** @@ -191,171 +194,189 @@ async function buildUi() { * - ui/client is external, and after built replaced with "bknd/client" */ async function buildUiElements() { - await tsup.build({ - minify, - sourcemap, - watch: false, - define, - entry: ["src/ui/elements/index.ts"], - outDir: "dist/ui/elements", - external: [ - "ui/client", - "bknd", - /^bknd\/.*/, - "wouter", - "react", - "react-dom", - "react/jsx-runtime", - "react/jsx-dev-runtime", - "use-sync-external-store", - ], - metafile: true, - platform: "browser", - format: ["esm"], - splitting: false, - bundle: true, - treeshake: true, - loader: { - ".svg": "dataurl", - }, - esbuildOptions: (options) => { - options.alias = { - // not important for elements, mock to reduce bundle - "tailwind-merge": "./src/ui/elements/mocks/tailwind-merge.ts", - }; - }, - onSuccess: async () => { - await rewriteClient("./dist/ui/elements/index.js"); - delayTypes(); - oldConsole.log(c.cyan("[UI]"), "Elements", c.green("built")); - }, - }); + await tsup.build({ + minify, + sourcemap, + watch: false, + define, + entry: ["src/ui/elements/index.ts"], + outDir: "dist/ui/elements", + external: [ + "ui/client", + "bknd", + /^bknd\/.*/, + "wouter", + "react", + "react-dom", + "react/jsx-runtime", + "react/jsx-dev-runtime", + "use-sync-external-store", + ], + metafile: true, + platform: "browser", + format: ["esm"], + splitting: false, + bundle: true, + treeshake: true, + loader: { + ".svg": "dataurl", + }, + esbuildOptions: (options) => { + options.alias = { + // not important for elements, mock to reduce bundle + "tailwind-merge": "./src/ui/elements/mocks/tailwind-merge.ts", + }; + }, + onSuccess: async () => { + await rewriteClient("./dist/ui/elements/index.js"); + delayTypes(); + oldConsole.log(c.cyan("[UI]"), "Elements", c.green("built")); + }, + }); } /** * Building adapters */ -function baseConfig(adapter: string, overrides: Partial = {}): tsup.Options { - return { - minify, - sourcemap, - watch: false, - entry: [`src/adapter/${adapter}/index.ts`], - format: ["esm"], - platform: "neutral", - outDir: `dist/adapter/${adapter}`, - metafile: true, - splitting: false, - removeNodeProtocol: false, - onSuccess: async () => { - delayTypes(); - oldConsole.log(c.cyan("[Adapter]"), adapter || "base", c.green("built")); - }, - ...overrides, - define: { - ...define, - ...overrides.define, - }, - external: [ - /^cloudflare*/, - /^@?hono.*?/, - /^(bknd|react|next|node).*?/, - /.*\.(html)$/, - ...external, - ...(Array.isArray(overrides.external) ? overrides.external : []), - ], - }; +function baseConfig( + adapter: string, + overrides: Partial = {}, +): tsup.Options { + return { + minify, + sourcemap, + watch: false, + entry: [`src/adapter/${adapter}/index.ts`], + format: ["esm"], + platform: "neutral", + outDir: `dist/adapter/${adapter}`, + metafile: true, + splitting: false, + removeNodeProtocol: false, + onSuccess: async () => { + delayTypes(); + oldConsole.log(c.cyan("[Adapter]"), adapter || "base", c.green("built")); + }, + ...overrides, + define: { + ...define, + ...overrides.define, + }, + external: [ + /^cloudflare*/, + /^@?hono.*?/, + /^(bknd|react|next|node).*?/, + /.*\.(html)$/, + ...external, + ...(Array.isArray(overrides.external) ? overrides.external : []), + ], + }; } async function buildAdapters() { - await Promise.all([ - // base adapter handles - tsup.build({ - ...baseConfig(""), - target: "esnext", - platform: "neutral", - entry: ["src/adapter/index.ts"], - outDir: "dist/adapter", - // only way to keep @vite-ignore comments - minify: false, - }), + await Promise.all([ + // base adapter handles + tsup.build({ + ...baseConfig(""), + target: "esnext", + platform: "neutral", + entry: ["src/adapter/index.ts"], + outDir: "dist/adapter", + // only way to keep @vite-ignore comments + minify: false, + }), - // specific adatpers - tsup.build(baseConfig("react-router")), - tsup.build( - baseConfig("browser", { - external: [/^sqlocal\/?.*?/, "wouter"], - }), - ), - tsup.build( - baseConfig("bun", { - external: [/^bun\:.*/], - }), - ), - tsup.build(baseConfig("astro")), - tsup.build(baseConfig("aws")), - tsup.build( - baseConfig("cloudflare", { - external: ["wrangler", "node:process"], - }), - ), - tsup.build( - baseConfig("cloudflare/proxy", { - target: "esnext", - entry: ["src/adapter/cloudflare/proxy.ts"], - outDir: "dist/adapter/cloudflare", - metafile: false, - external: [/bknd/, "wrangler", "node:process"], - }), - ), - - tsup.build({ - ...baseConfig("vite"), - platform: "node", + // specific adatpers + tsup.build(baseConfig("react-router")), + tsup.build( + baseConfig("browser", { + external: [/^sqlocal\/?.*?/, "wouter"], }), - - tsup.build({ - ...baseConfig("nextjs"), - platform: "node", + ), + tsup.build( + baseConfig("bun", { + external: [/^bun\:.*/], }), - - tsup.build({ - ...baseConfig("sveltekit"), - platform: "node", + ), + tsup.build(baseConfig("astro")), + tsup.build(baseConfig("aws")), + tsup.build( + baseConfig("cloudflare", { + external: ["wrangler", "node:process"], }), - - tsup.build({ - ...baseConfig("node"), - platform: "node", + ), + tsup.build( + baseConfig("cloudflare/proxy", { + target: "esnext", + entry: ["src/adapter/cloudflare/proxy.ts"], + outDir: "dist/adapter/cloudflare", + metafile: false, + external: [/bknd/, "wrangler", "node:process"], }), + ), - tsup.build({ - ...baseConfig("sqlite/edge"), - entry: ["src/adapter/sqlite/edge.ts"], - outDir: "dist/adapter/sqlite", - metafile: false, - }), + tsup.build({ + ...baseConfig("vite"), + platform: "node", + }), - tsup.build({ - ...baseConfig("sqlite/node"), - entry: ["src/adapter/sqlite/node.ts"], - outDir: "dist/adapter/sqlite", - platform: "node", - metafile: false, - }), + tsup.build({ + ...baseConfig("nextjs"), + platform: "node", + }), - tsup.build({ - ...baseConfig("sqlite/bun"), - entry: ["src/adapter/sqlite/bun.ts"], - outDir: "dist/adapter/sqlite", - metafile: false, - external: [/^bun\:.*/], - }), - ]); + tsup.build({ + ...baseConfig("tanstack-start"), + platform: "node", + }), + + tsup.build({ + ...baseConfig("sveltekit"), + platform: "node", + }), + + tsup.build({ + ...baseConfig("node"), + platform: "node", + }), + + tsup.build({ + ...baseConfig("sqlite/edge"), + entry: ["src/adapter/sqlite/edge.ts"], + outDir: "dist/adapter/sqlite", + metafile: false, + }), + + tsup.build({ + ...baseConfig("sqlite/node"), + entry: ["src/adapter/sqlite/node.ts"], + outDir: "dist/adapter/sqlite", + platform: "node", + metafile: false, + }), + + tsup.build({ + ...baseConfig("sqlite/bun"), + entry: ["src/adapter/sqlite/bun.ts"], + outDir: "dist/adapter/sqlite", + metafile: false, + external: [/^bun\:.*/], + }), + + tsup.build({ + ...baseConfig("tanstack-start"), + platform: "node", + }), + ]); } async function buildAll() { - await Promise.all([buildApi(), buildUi(), buildUiElements(), buildAdapters()]); + await Promise.all([ + buildApi(), + buildUi(), + buildUiElements(), + buildAdapters(), + ]); } // initial build @@ -363,39 +384,47 @@ await buildAll(); // custom watcher since tsup's watch is broken in 8.3.5+ if (watch) { - oldConsole.log(c.cyan("[Watch]"), "watching for changes in src/..."); + oldConsole.log(c.cyan("[Watch]"), "watching for changes in src/..."); - let debounceTimer: ReturnType | null = null; - let isBuilding = false; + let debounceTimer: ReturnType | null = null; + let isBuilding = false; - const rebuild = async () => { - if (isBuilding) return; - isBuilding = true; - oldConsole.log(c.cyan("[Watch]"), "rebuilding..."); - try { - await buildAll(); - oldConsole.log(c.cyan("[Watch]"), c.green("done")); - } catch (e) { - oldConsole.warn(c.cyan("[Watch]"), c.red("build failed"), e); - } - isBuilding = false; - }; + const rebuild = async () => { + if (isBuilding) return; + isBuilding = true; + oldConsole.log(c.cyan("[Watch]"), "rebuilding..."); + try { + await buildAll(); + oldConsole.log(c.cyan("[Watch]"), c.green("done")); + } catch (e) { + oldConsole.warn(c.cyan("[Watch]"), c.red("build failed"), e); + } + isBuilding = false; + }; - const debouncedRebuild = () => { - if (debounceTimer) clearTimeout(debounceTimer); - debounceTimer = setTimeout(rebuild, 100); - }; + const debouncedRebuild = () => { + if (debounceTimer) clearTimeout(debounceTimer); + debounceTimer = setTimeout(rebuild, 100); + }; - // watch src directory recursively - fsWatch(join(import.meta.dir, "src"), { recursive: true }, (event, filename) => { + // watch src directory recursively + fsWatch( + join(import.meta.dir, "src"), + { recursive: true }, + (event, filename) => { if (!filename) return; // ignore non-source files - if (!filename.endsWith(".ts") && !filename.endsWith(".tsx") && !filename.endsWith(".css")) - return; + if ( + !filename.endsWith(".ts") && + !filename.endsWith(".tsx") && + !filename.endsWith(".css") + ) + return; oldConsole.log(c.cyan("[Watch]"), c.dim(`${event}: ${filename}`)); debouncedRebuild(); - }); + }, + ); - // keep process alive - await new Promise(() => {}); + // keep process alive + await new Promise(() => {}); } diff --git a/app/e2e/inc/adapters.ts b/app/e2e/inc/adapters.ts index 347d23b..30b647b 100644 --- a/app/e2e/inc/adapters.ts +++ b/app/e2e/inc/adapters.ts @@ -1,44 +1,47 @@ const adapter = process.env.TEST_ADAPTER; const default_config = { - media_adapter: "local", - base_path: "", + media_adapter: "local", + base_path: "", } as const; const configs = { - cloudflare: { - media_adapter: "r2", - }, - "react-router": { - base_path: "/admin", - }, - nextjs: { - base_path: "/admin", - }, - astro: { - base_path: "/admin", - }, - node: { - base_path: "", - }, - bun: { - base_path: "", - }, + cloudflare: { + media_adapter: "r2", + }, + "react-router": { + base_path: "/admin", + }, + nextjs: { + base_path: "/admin", + }, + astro: { + base_path: "/admin", + }, + node: { + base_path: "", + }, + bun: { + base_path: "", + }, + "tanstack-start": { + base_path: "/admin", + }, }; export function getAdapterConfig(): typeof default_config { - if (adapter) { - if (!configs[adapter]) { - console.warn( - `Adapter "${adapter}" not found. Available adapters: ${Object.keys(configs).join(", ")}`, - ); - } else { - return { - ...default_config, - ...configs[adapter], - }; - } - } + if (adapter) { + if (!configs[adapter]) { + console.warn( + `Adapter "${adapter}" not found. Available adapters: ${Object.keys(configs).join(", ")}`, + ); + } else { + return { + ...default_config, + ...configs[adapter], + }; + } + } - return default_config; + return default_config; } diff --git a/app/package.json b/app/package.json index 3027760..ceb3771 100644 --- a/app/package.json +++ b/app/package.json @@ -268,6 +268,11 @@ "import": "./dist/adapter/browser/index.js", "require": "./dist/adapter/browser/index.js" }, + "./adapter/tanstack-start": { + "types": "./dist/types/adapter/tanstack-start/index.d.ts", + "import": "./dist/adapter/tanstack-start/index.js", + "require": "./dist/adapter/tanstack-start/index.js" + }, "./dist/main.css": "./dist/ui/main.css", "./dist/styles.css": "./dist/ui/styles.css", "./dist/manifest.json": "./dist/static/.vite/manifest.json", @@ -286,6 +291,7 @@ "adapter/bun": ["./dist/types/adapter/bun/index.d.ts"], "adapter/node": ["./dist/types/adapter/node/index.d.ts"], "adapter/sveltekit": ["./dist/types/adapter/sveltekit/index.d.ts"], + "adapter/tanstack-start": ["./dist/types/adapter/tanstack-start/index.d.ts"], "adapter/sqlite": ["./dist/types/adapter/sqlite/edge.d.ts"] } }, diff --git a/app/src/adapter/tanstack-start/index.ts b/app/src/adapter/tanstack-start/index.ts new file mode 100644 index 0000000..b6a4846 --- /dev/null +++ b/app/src/adapter/tanstack-start/index.ts @@ -0,0 +1 @@ +export * from "./tanstack-start.adapter"; diff --git a/app/src/adapter/tanstack-start/tanstack-start.adapter.spec.ts b/app/src/adapter/tanstack-start/tanstack-start.adapter.spec.ts new file mode 100644 index 0000000..1101f61 --- /dev/null +++ b/app/src/adapter/tanstack-start/tanstack-start.adapter.spec.ts @@ -0,0 +1,16 @@ +import { afterAll, beforeAll, describe } from "bun:test"; +import * as tanstackStart from "./tanstack-start.adapter"; +import { disableConsoleLog, enableConsoleLog } from "core/utils"; +import { adapterTestSuite } from "adapter/adapter-test-suite"; +import { bunTestRunner } from "adapter/bun/test"; +import type { TanstackStartConfig } from "./tanstack-start.adapter"; + +beforeAll(disableConsoleLog); +afterAll(enableConsoleLog); + +describe("tanstack start adapter", () => { + adapterTestSuite(bunTestRunner, { + makeApp: tanstackStart.getApp, + makeHandler: tanstackStart.serve, + }); +}); diff --git a/app/src/adapter/tanstack-start/tanstack-start.adapter.ts b/app/src/adapter/tanstack-start/tanstack-start.adapter.ts new file mode 100644 index 0000000..f9a419c --- /dev/null +++ b/app/src/adapter/tanstack-start/tanstack-start.adapter.ts @@ -0,0 +1,23 @@ +import { createFrameworkApp, type FrameworkBkndConfig } from "bknd/adapter"; + +export type TanstackStartEnv = NodeJS.ProcessEnv; + +export type TanstackStartConfig = + FrameworkBkndConfig; + +export async function getApp( + config: TanstackStartConfig, + args: Env = process.env as Env, +) { + return await createFrameworkApp(config, args); +} + +export function serve( + { ...config }: TanstackStartConfig = {}, + args: Env = process.env as Env, +) { + return async (request: Request) => { + const app = await getApp(config, args); + return app.fetch(request); + }; +} diff --git a/bun.lock b/bun.lock index af2a52d..25eaa15 100644 --- a/bun.lock +++ b/bun.lock @@ -3846,7 +3846,7 @@ "@babel/traverse/debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="], - "@bknd/plasmic/@types/bun": ["@types/bun@1.3.8", "", { "dependencies": { "bun-types": "1.3.8" } }, "sha512-3LvWJ2q5GerAXYxO2mffLTqOzEu5qnhEAlh48Vnu8WQfnmSwbgagjGZV6BoHKJztENYEDn6QmVd949W4uESRJA=="], + "@bknd/plasmic/@types/bun": ["@types/bun@1.3.9", "", { "dependencies": { "bun-types": "1.3.9" } }, "sha512-KQ571yULOdWJiMH+RIWIOZ7B2RXQGpL1YQrBtLIV3FqDcCu6FsbFUBwhdKUlCKUpS3PJDsHlJ1QKlpxoVR+xtw=="], "@bundled-es-modules/tough-cookie/tough-cookie": ["tough-cookie@4.1.4", "", { "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", "universalify": "^0.2.0", "url-parse": "^1.5.3" } }, "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag=="], @@ -4750,7 +4750,7 @@ "@babel/preset-env/babel-plugin-polyfill-regenerator/@babel/helper-define-polyfill-provider": ["@babel/helper-define-polyfill-provider@0.6.3", "", { "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg=="], - "@bknd/plasmic/@types/bun/bun-types": ["bun-types@1.3.8", "", { "dependencies": { "@types/node": "*" } }, "sha512-fL99nxdOWvV4LqjmC+8Q9kW3M4QTtTR1eePs94v5ctGqU8OeceWrSUaRw3JYb7tU3FkMIAjkueehrHPPPGKi5Q=="], + "@bknd/plasmic/@types/bun/bun-types": ["bun-types@1.3.9", "", { "dependencies": { "@types/node": "*" } }, "sha512-+UBWWOakIP4Tswh0Bt0QD0alpTY8cb5hvgiYeWCMet9YukHbzuruIEeXC2D7nMJPB12kbh8C7XJykSexEqGKJg=="], "@bundled-es-modules/tough-cookie/tough-cookie/universalify": ["universalify@0.2.0", "", {}, "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg=="], From 6288faef33972c2afde0ffee2bba9c7add50af16 Mon Sep 17 00:00:00 2001 From: Shishant Biswas Date: Wed, 11 Feb 2026 21:00:46 +0530 Subject: [PATCH 12/19] Triggering CI From 01483b912f0ff3f914d116d85d43324bad9a558a Mon Sep 17 00:00:00 2001 From: Shishant Biswas Date: Wed, 11 Feb 2026 21:41:26 +0530 Subject: [PATCH 13/19] add: example for tanstack start --- examples/tanstack-start/.gitignore | 15 ++ examples/tanstack-start/.vscode/settings.json | 11 ++ examples/tanstack-start/README.md | 28 +++ examples/tanstack-start/bknd.config.ts | 55 ++++++ examples/tanstack-start/package.json | 42 +++++ examples/tanstack-start/public/bknd.ico | Bin 0 -> 15086 bytes examples/tanstack-start/public/bknd.svg | 14 ++ examples/tanstack-start/public/favicon.ico | Bin 0 -> 3870 bytes examples/tanstack-start/public/file.svg | 1 + examples/tanstack-start/public/globe.svg | 1 + examples/tanstack-start/public/manifest.json | 25 +++ examples/tanstack-start/public/robots.txt | 3 + .../public/tanstack-circle-logo.png | Bin 0 -> 265387 bytes .../public/tanstack-word-logo-white.svg | 1 + examples/tanstack-start/public/window.svg | 1 + examples/tanstack-start/src/bknd.ts | 20 ++ .../tanstack-start/src/components/Footer.tsx | 52 ++++++ .../tanstack-start/src/components/List.tsx | 9 + examples/tanstack-start/src/logo.svg | 12 ++ examples/tanstack-start/src/routeTree.gen.ts | 122 +++++++++++++ examples/tanstack-start/src/router.tsx | 17 ++ examples/tanstack-start/src/routes/__root.tsx | 58 ++++++ .../tanstack-start/src/routes/admin.$.tsx | 23 +++ examples/tanstack-start/src/routes/api.$.ts | 13 ++ examples/tanstack-start/src/routes/index.tsx | 171 ++++++++++++++++++ examples/tanstack-start/src/routes/ssr.tsx | 124 +++++++++++++ examples/tanstack-start/src/styles.css | 25 +++ examples/tanstack-start/tsconfig.json | 28 +++ examples/tanstack-start/vite.config.ts | 34 ++++ 29 files changed, 905 insertions(+) create mode 100644 examples/tanstack-start/.gitignore create mode 100644 examples/tanstack-start/.vscode/settings.json create mode 100644 examples/tanstack-start/README.md create mode 100644 examples/tanstack-start/bknd.config.ts create mode 100644 examples/tanstack-start/package.json create mode 100644 examples/tanstack-start/public/bknd.ico create mode 100644 examples/tanstack-start/public/bknd.svg create mode 100644 examples/tanstack-start/public/favicon.ico create mode 100644 examples/tanstack-start/public/file.svg create mode 100644 examples/tanstack-start/public/globe.svg create mode 100644 examples/tanstack-start/public/manifest.json create mode 100644 examples/tanstack-start/public/robots.txt create mode 100644 examples/tanstack-start/public/tanstack-circle-logo.png create mode 100644 examples/tanstack-start/public/tanstack-word-logo-white.svg create mode 100644 examples/tanstack-start/public/window.svg create mode 100644 examples/tanstack-start/src/bknd.ts create mode 100644 examples/tanstack-start/src/components/Footer.tsx create mode 100644 examples/tanstack-start/src/components/List.tsx create mode 100644 examples/tanstack-start/src/logo.svg create mode 100644 examples/tanstack-start/src/routeTree.gen.ts create mode 100644 examples/tanstack-start/src/router.tsx create mode 100644 examples/tanstack-start/src/routes/__root.tsx create mode 100644 examples/tanstack-start/src/routes/admin.$.tsx create mode 100644 examples/tanstack-start/src/routes/api.$.ts create mode 100644 examples/tanstack-start/src/routes/index.tsx create mode 100644 examples/tanstack-start/src/routes/ssr.tsx create mode 100644 examples/tanstack-start/src/styles.css create mode 100644 examples/tanstack-start/tsconfig.json create mode 100644 examples/tanstack-start/vite.config.ts diff --git a/examples/tanstack-start/.gitignore b/examples/tanstack-start/.gitignore new file mode 100644 index 0000000..1ed63c5 --- /dev/null +++ b/examples/tanstack-start/.gitignore @@ -0,0 +1,15 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local +count.txt +.env +.nitro +.tanstack +.wrangler +.output +.vinxi +todos.json +public/uploads +data.db \ No newline at end of file diff --git a/examples/tanstack-start/.vscode/settings.json b/examples/tanstack-start/.vscode/settings.json new file mode 100644 index 0000000..00b5278 --- /dev/null +++ b/examples/tanstack-start/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "files.watcherExclude": { + "**/routeTree.gen.ts": true + }, + "search.exclude": { + "**/routeTree.gen.ts": true + }, + "files.readonlyInclude": { + "**/routeTree.gen.ts": true + } +} diff --git a/examples/tanstack-start/README.md b/examples/tanstack-start/README.md new file mode 100644 index 0000000..af94249 --- /dev/null +++ b/examples/tanstack-start/README.md @@ -0,0 +1,28 @@ +# bknd + Tanstack Start Example + +This is a minimal example to shows how to integrate bknd with Tanstack Start. + +## Setup + +```bash +bun install +bun run dev +``` + +## How it works + +1. **`bknd.config.ts`** - bknd configuration with database connection, schema, and seed data +2. **`src/routes/api.$.ts`** - Handles `/api/*` requests for bknd +3. **`src/routes/index.tsx`** - Using `getApp()` to fetch data in loader +3. **`src/routes/ssr.tsx`** - Server Side example with `getApp()` to fetch data on server + +## API Endpoints + +- `GET /admin` - for Admin Dashboard +- `GET /api/data/entity/todos` - List todos (requires auth) +- `POST /api/auth/password/login` - Login + +## Test Credentials + +- Email: `test@bknd.io` +- Password: `12345678` diff --git a/examples/tanstack-start/bknd.config.ts b/examples/tanstack-start/bknd.config.ts new file mode 100644 index 0000000..febdcff --- /dev/null +++ b/examples/tanstack-start/bknd.config.ts @@ -0,0 +1,55 @@ +import { em, entity, text, boolean } from "bknd"; +import { registerLocalMediaAdapter } from "bknd/adapter/node"; +import { TanstackStartConfig } from "bknd/adapter/tanstack-start"; + +const local = registerLocalMediaAdapter(); + +const schema = em({ + todos: entity("todos", { + title: text(), + done: boolean(), + }), +}); + +// register your schema to get automatic type completion +type Database = (typeof schema)["DB"]; +declare module "bknd" { + interface DB extends Database {} +} + +export default { + connection: { + url: "file:data.db", + }, + options: { + // the seed option is only executed if the database was empty + seed: async (ctx) => { + // create some entries + await ctx.em.mutator("todos").insertMany([ + { title: "Learn bknd", done: true }, + { title: "Build something cool", done: false }, + ]); + + // and create a user + await ctx.app.module.auth.createUser({ + email: "test@bknd.io", + password: "12345678", + }); + }, + }, + config: { + data: schema.toJSON(), + auth: { + enabled: true, + jwt: { + secret: "random_gibberish_please_change_this", + }, + }, + media: { + enabled: true, + adapter: local({ + path: "./public/uploads", + }), + }, + }, +} satisfies TanstackStartConfig; diff --git a/examples/tanstack-start/package.json b/examples/tanstack-start/package.json new file mode 100644 index 0000000..d26625f --- /dev/null +++ b/examples/tanstack-start/package.json @@ -0,0 +1,42 @@ +{ + "name": "my-bknd-app", + "private": true, + "type": "module", + "scripts": { + "dev": "vite dev --port 3000", + "build": "vite build", + "start": "vite preview", + "test": "vitest run" + }, + "dependencies": { + "@tailwindcss/vite": "^4.1.18", + "@tanstack/react-devtools": "^0.7.0", + "@tanstack/react-router": "^1.132.0", + "@tanstack/react-router-devtools": "^1.132.0", + "@tanstack/react-router-ssr-query": "^1.131.7", + "@tanstack/react-start": "^1.132.0", + "@tanstack/router-plugin": "^1.132.0", + "bknd": "file:../../app", + "lucide-react": "^0.561.0", + "nitro": "^3.0.1-alpha.2", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tailwindcss": "^4.1.18", + "vite-tsconfig-paths": "^6.0.2" + }, + "devDependencies": { + "@tanstack/devtools-vite": "^0.3.11", + "babel-plugin-react-compiler": "^1.0.0", + "@testing-library/dom": "^10.4.0", + "@testing-library/react": "^16.2.0", + "@types/node": "^22.10.2", + "@types/react": "^19.2.0", + "@types/react-dom": "^19.2.0", + "@vitejs/plugin-react": "^5.0.4", + "jsdom": "^27.0.0", + "typescript": "^5.7.2", + "vite": "^7.1.7", + "vitest": "^3.0.5", + "web-vitals": "^5.1.0" + } +} diff --git a/examples/tanstack-start/public/bknd.ico b/examples/tanstack-start/public/bknd.ico new file mode 100644 index 0000000000000000000000000000000000000000..c1a946d533a71c15e51fc4cade87289ca467b57d GIT binary patch literal 15086 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 + + + \ No newline at end of file diff --git a/examples/tanstack-start/public/favicon.ico b/examples/tanstack-start/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/examples/tanstack-start/public/file.svg b/examples/tanstack-start/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/examples/tanstack-start/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/tanstack-start/public/globe.svg b/examples/tanstack-start/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/examples/tanstack-start/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/tanstack-start/public/manifest.json b/examples/tanstack-start/public/manifest.json new file mode 100644 index 0000000..078ef50 --- /dev/null +++ b/examples/tanstack-start/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "TanStack App", + "name": "Create TanStack App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/examples/tanstack-start/public/robots.txt b/examples/tanstack-start/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/examples/tanstack-start/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/examples/tanstack-start/public/tanstack-circle-logo.png b/examples/tanstack-start/public/tanstack-circle-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9db3e67bade15d9ced50bdfc2393359c5f6f5712 GIT binary patch literal 265387 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ϟKoY=Snqfy1)i`l$#Yvv>#w{lM68ok2%j-k9O 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%0A(FZ&@S*K}LKE%X8U=5NC^*)q#N-fWN^U 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

PA1kxM>X}C)4Cw|l0ri~kthJMgZmD5j;BYmD! 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

{Pegpj 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

oR9O3D4_(l&vOI_L+1e*rKJ`%!KeXK-?Z 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 literal 0 HcmV?d00001 diff --git a/examples/tanstack-start/public/tanstack-word-logo-white.svg b/examples/tanstack-start/public/tanstack-word-logo-white.svg new file mode 100644 index 0000000..b6ec508 --- /dev/null +++ b/examples/tanstack-start/public/tanstack-word-logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/tanstack-start/public/window.svg b/examples/tanstack-start/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/examples/tanstack-start/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/tanstack-start/src/bknd.ts b/examples/tanstack-start/src/bknd.ts new file mode 100644 index 0000000..3e0b9fb --- /dev/null +++ b/examples/tanstack-start/src/bknd.ts @@ -0,0 +1,20 @@ +import config from "../bknd.config"; +import { getApp } from "bknd/adapter/tanstack-start"; + +export async function getApi({ + headers, + verify, +}: { + verify?: boolean; + headers?: Headers; +}) { + const app = await getApp(config, process.env); + + if (verify) { + const api = app.getApi({ headers }); + await api.verifyAuth(); + return api; + } + + return app.getApi(); +} diff --git a/examples/tanstack-start/src/components/Footer.tsx b/examples/tanstack-start/src/components/Footer.tsx new file mode 100644 index 0000000..e0d4da9 --- /dev/null +++ b/examples/tanstack-start/src/components/Footer.tsx @@ -0,0 +1,52 @@ +import { useRouterState, Link } from "@tanstack/react-router"; + +export function Footer() { + const routerState = useRouterState(); + const pathname = routerState.location.pathname; + + return ( +

+ + File icon + {pathname === "/" ? "SSR" : "Home"} + + + Window icon + Admin + + + Globe icon + Go to bknd.io → + +
+ ); +} diff --git a/examples/tanstack-start/src/components/List.tsx b/examples/tanstack-start/src/components/List.tsx new file mode 100644 index 0000000..e2a98c0 --- /dev/null +++ b/examples/tanstack-start/src/components/List.tsx @@ -0,0 +1,9 @@ +export const List = ({ items = [] }: { items: React.ReactNode[] }) => ( +
    + {items.map((item, i) => ( +
  1. + {item} +
  2. + ))} +
+); diff --git a/examples/tanstack-start/src/logo.svg b/examples/tanstack-start/src/logo.svg new file mode 100644 index 0000000..fe53fe8 --- /dev/null +++ b/examples/tanstack-start/src/logo.svg @@ -0,0 +1,12 @@ + + + logo + + \ No newline at end of file diff --git a/examples/tanstack-start/src/routeTree.gen.ts b/examples/tanstack-start/src/routeTree.gen.ts new file mode 100644 index 0000000..13011d3 --- /dev/null +++ b/examples/tanstack-start/src/routeTree.gen.ts @@ -0,0 +1,122 @@ +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file was automatically generated by TanStack Router. +// You should NOT make any changes in this file as it will be overwritten. +// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. + +import { Route as rootRouteImport } from './routes/__root' +import { Route as SsrRouteImport } from './routes/ssr' +import { Route as IndexRouteImport } from './routes/index' +import { Route as ApiSplatRouteImport } from './routes/api.$' +import { Route as AdminSplatRouteImport } from './routes/admin.$' + +const SsrRoute = SsrRouteImport.update({ + id: '/ssr', + path: '/ssr', + getParentRoute: () => rootRouteImport, +} as any) +const IndexRoute = IndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => rootRouteImport, +} as any) +const ApiSplatRoute = ApiSplatRouteImport.update({ + id: '/api/$', + path: '/api/$', + getParentRoute: () => rootRouteImport, +} as any) +const AdminSplatRoute = AdminSplatRouteImport.update({ + id: '/admin/$', + path: '/admin/$', + getParentRoute: () => rootRouteImport, +} as any) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/ssr': typeof SsrRoute + '/admin/$': typeof AdminSplatRoute + '/api/$': typeof ApiSplatRoute +} +export interface FileRoutesByTo { + '/': typeof IndexRoute + '/ssr': typeof SsrRoute + '/admin/$': typeof AdminSplatRoute + '/api/$': typeof ApiSplatRoute +} +export interface FileRoutesById { + __root__: typeof rootRouteImport + '/': typeof IndexRoute + '/ssr': typeof SsrRoute + '/admin/$': typeof AdminSplatRoute + '/api/$': typeof ApiSplatRoute +} +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' | '/ssr' | '/admin/$' | '/api/$' + fileRoutesByTo: FileRoutesByTo + to: '/' | '/ssr' | '/admin/$' | '/api/$' + id: '__root__' | '/' | '/ssr' | '/admin/$' | '/api/$' + fileRoutesById: FileRoutesById +} +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + SsrRoute: typeof SsrRoute + AdminSplatRoute: typeof AdminSplatRoute + ApiSplatRoute: typeof ApiSplatRoute +} + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/ssr': { + id: '/ssr' + path: '/ssr' + fullPath: '/ssr' + preLoaderRoute: typeof SsrRouteImport + parentRoute: typeof rootRouteImport + } + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexRouteImport + parentRoute: typeof rootRouteImport + } + '/api/$': { + id: '/api/$' + path: '/api/$' + fullPath: '/api/$' + preLoaderRoute: typeof ApiSplatRouteImport + parentRoute: typeof rootRouteImport + } + '/admin/$': { + id: '/admin/$' + path: '/admin/$' + fullPath: '/admin/$' + preLoaderRoute: typeof AdminSplatRouteImport + parentRoute: typeof rootRouteImport + } + } +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + SsrRoute: SsrRoute, + AdminSplatRoute: AdminSplatRoute, + ApiSplatRoute: ApiSplatRoute, +} +export const routeTree = rootRouteImport + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +import type { getRouter } from './router.tsx' +import type { createStart } from '@tanstack/react-start' +declare module '@tanstack/react-start' { + interface Register { + ssr: true + router: Awaited> + } +} diff --git a/examples/tanstack-start/src/router.tsx b/examples/tanstack-start/src/router.tsx new file mode 100644 index 0000000..5c70836 --- /dev/null +++ b/examples/tanstack-start/src/router.tsx @@ -0,0 +1,17 @@ +import { createRouter } from '@tanstack/react-router' + +// Import the generated route tree +import { routeTree } from './routeTree.gen' + +// Create a new router instance +export const getRouter = () => { + const router = createRouter({ + routeTree, + context: {}, + + scrollRestoration: true, + defaultPreloadStaleTime: 0, + }) + + return router +} diff --git a/examples/tanstack-start/src/routes/__root.tsx b/examples/tanstack-start/src/routes/__root.tsx new file mode 100644 index 0000000..9593904 --- /dev/null +++ b/examples/tanstack-start/src/routes/__root.tsx @@ -0,0 +1,58 @@ +import { HeadContent, Scripts, createRootRoute } from "@tanstack/react-router"; +import { TanStackRouterDevtoolsPanel } from "@tanstack/react-router-devtools"; +import { TanStackDevtools } from "@tanstack/react-devtools"; +import { ClientProvider } from "bknd/client"; + +import appCss from "../styles.css?url"; + +export const Route = createRootRoute({ + head: () => ({ + meta: [ + { + charSet: "utf-8", + }, + { + name: "viewport", + content: "width=device-width, initial-scale=1", + }, + { + title: "TanStack 🤝 Bknd.io", + }, + ], + links: [ + { + rel: "stylesheet", + href: appCss, + }, + ], + }), + + shellComponent: RootDocument, +}); + +function RootDocument({ children }: { children: React.ReactNode }) { + return ( + + + + + + + {children} + + , + }, + ]} + /> + + + + ); +} diff --git a/examples/tanstack-start/src/routes/admin.$.tsx b/examples/tanstack-start/src/routes/admin.$.tsx new file mode 100644 index 0000000..facf57b --- /dev/null +++ b/examples/tanstack-start/src/routes/admin.$.tsx @@ -0,0 +1,23 @@ +import { createFileRoute } from "@tanstack/react-router"; +import { useAuth } from "bknd/client"; +import "bknd/dist/styles.css"; +import { Admin } from "bknd/ui"; + +export const Route = createFileRoute("/admin/$")({ + ssr: false, + component: RouteComponent, +}); + +function RouteComponent() { + const { user } = useAuth(); + return ( + + ); +} diff --git a/examples/tanstack-start/src/routes/api.$.ts b/examples/tanstack-start/src/routes/api.$.ts new file mode 100644 index 0000000..f65526c --- /dev/null +++ b/examples/tanstack-start/src/routes/api.$.ts @@ -0,0 +1,13 @@ +import { createFileRoute } from "@tanstack/react-router"; +import config from "../../bknd.config"; +import { serve } from "bknd/adapter/tanstack-start"; + +const handler = serve(config); + +export const Route = createFileRoute("/api/$")({ + server: { + handlers: { + ANY: async ({ request }) => await handler(request), + }, + }, +}); diff --git a/examples/tanstack-start/src/routes/index.tsx b/examples/tanstack-start/src/routes/index.tsx new file mode 100644 index 0000000..9e37928 --- /dev/null +++ b/examples/tanstack-start/src/routes/index.tsx @@ -0,0 +1,171 @@ +import { + createFileRoute, + useRouter, +} from "@tanstack/react-router"; +import { getApi } from "@/bknd"; +import { createServerFn, useServerFn } from "@tanstack/react-start"; +import { Footer } from "@/components/Footer"; +import { List } from "@/components/List"; + +export const completeTodo = createServerFn({ method: "POST" }) + .inputValidator( + (data) => data as { done: boolean; id: number; title: string }, + ) + .handler(async ({ data: todo }) => { + try { + const api = await getApi({}); + await api.data.updateOne("todos", todo.id, { + done: !todo.done, + }); + console.log("state updated in db"); + } catch (error) { + console.log(error); + } + }); + +export const deleteTodo = createServerFn({ method: "POST" }) + .inputValidator((data) => data as { id: number }) + .handler(async ({ data }) => { + try { + const api = await getApi({}); + await api.data.deleteOne("todos", data.id); + console.log("todo deleted from db"); + } catch (error) { + console.log(error); + } + }); + +export const createTodo = createServerFn({ method: "POST" }) + .inputValidator((data) => data as { title: string }) + .handler(async ({ data }) => { + try { + const api = await getApi({}); + await api.data.createOne("todos", { title: data.title }); + console.log("todo created in db"); + } catch (error) { + console.log(error); + } + }); + +export const getTodo = createServerFn({ method: "POST" }).handler(async () => { + const api = await getApi({}); + const limit = 5; + const todos = await api.data.readMany("todos", { limit, sort: "-id" }); + const total = todos.body.meta.total as number; + return { total, todos, limit }; +}); + +export const Route = createFileRoute("/")({ + ssr:false, + component: App, + loader: async () => { + return await getTodo(); + }, +}); + +function App() { + const { todos, total, limit } = Route.useLoaderData(); + const router = useRouter(); + + const updateTodo = useServerFn(completeTodo); + const removeTodo = useServerFn(deleteTodo); + const addTodo = useServerFn(createTodo); + + return ( +
+
+
+ Next.js logo +
&
+ bknd logo +
+ +
+

+ What's next? +

+
+ {total > limit && ( +
+ {total - limit} more todo(s) hidden +
+ )} +
+ {todos.reverse().map((todo) => ( +
+
+ { + await updateTodo({ data: todo }); + router.invalidate(); + }} + /> +
+ {todo.title} +
+
+ +
+ ))} +
+
t.id).join()} + onSubmit={async (e) => { + e.preventDefault(); + const formData = new FormData(e.currentTarget); + const title = formData.get("title") as string; + await addTodo({ data: { title } }); + router.invalidate(); + e.currentTarget.reset(); + }} + > + + +
+
+
+
+
+
+ ); +} + +const Description = () => ( + +); + diff --git a/examples/tanstack-start/src/routes/ssr.tsx b/examples/tanstack-start/src/routes/ssr.tsx new file mode 100644 index 0000000..eb14b1b --- /dev/null +++ b/examples/tanstack-start/src/routes/ssr.tsx @@ -0,0 +1,124 @@ +import { getApi } from "@/bknd"; +import { createServerFn } from "@tanstack/react-start"; +import { Link } from "@tanstack/react-router"; +import { createFileRoute } from "@tanstack/react-router"; +import { getRequest } from "@tanstack/react-start/server"; +import { Footer } from "@/components/Footer"; +import { List } from "@/components/List"; + +export const getTodo = createServerFn({ method: "POST" }).handler(async () => { + const api = await getApi({}); + const limit = 5; + const todos = await api.data.readMany("todos"); + const total = todos.body.meta.total as number; + return { total, todos, limit }; +}); + +export const getUser = createServerFn({ method: "POST" }).handler(async () => { + const request = getRequest(); + const api = await getApi({ verify: true, headers: request.headers }); + const user = api.getUser(); + return { user }; +}); + +export const Route = createFileRoute("/ssr")({ + component: RouteComponent, + loader: async () => { + return { ...(await getTodo()), ...(await getUser()) }; + }, +}); + +function RouteComponent() { + const { todos, user } = Route.useLoaderData(); + + return ( +
+
+
+ Next.js logo +
&
+ bknd logo +
+ todo.title)} /> + + +
+ {user ? ( + <> + Logged in as {user.email}.{" "} + + Logout + + + ) : ( +
+

+ Not logged in.{" "} + + Login + +

+

+ Sign in with:{" "} + + test@bknd.io + {" "} + /{" "} + + 12345678 + +

+
+ )} +
+
+
+
+ ); +} + +function Buttons() { + return ( +
+ ); +} diff --git a/examples/tanstack-start/src/styles.css b/examples/tanstack-start/src/styles.css new file mode 100644 index 0000000..bafe49a --- /dev/null +++ b/examples/tanstack-start/src/styles.css @@ -0,0 +1,25 @@ +@import "tailwindcss"; + +:root { + --background: #ffffff; + --foreground: #171717; +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +@theme { + --font-sans: var(--font-geist-sans); + --font-mono: var(--font-geist-mono); + --color-background: var(--background); + --color-foreground: var(--foreground); +} + +body { + @apply bg-background text-foreground; + font-family: Arial, Helvetica, sans-serif; +} diff --git a/examples/tanstack-start/tsconfig.json b/examples/tanstack-start/tsconfig.json new file mode 100644 index 0000000..477479f --- /dev/null +++ b/examples/tanstack-start/tsconfig.json @@ -0,0 +1,28 @@ +{ + "include": ["**/*.ts", "**/*.tsx"], + "compilerOptions": { + "target": "ES2022", + "jsx": "react-jsx", + "module": "ESNext", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "types": ["vite/client"], + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": false, + "noEmit": true, + + /* Linting */ + "skipLibCheck": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/examples/tanstack-start/vite.config.ts b/examples/tanstack-start/vite.config.ts new file mode 100644 index 0000000..a0b568e --- /dev/null +++ b/examples/tanstack-start/vite.config.ts @@ -0,0 +1,34 @@ +import { defineConfig } from "vite"; +import { devtools } from "@tanstack/devtools-vite"; +import { tanstackStart } from "@tanstack/react-start/plugin/vite"; +import viteReact from "@vitejs/plugin-react"; +import viteTsConfigPaths from "vite-tsconfig-paths"; +import { fileURLToPath, URL } from "url"; +import tailwindcss from "@tailwindcss/vite"; +import { nitro } from "nitro/vite"; + +const config = defineConfig({ + resolve: { + alias: { + "@": fileURLToPath(new URL("./src", import.meta.url)), + }, + }, + plugins: [ + nitro({ preset: "node-server" }), + tailwindcss(), + devtools(), + // this is the plugin that enables path aliases + viteTsConfigPaths({ + projects: ["./tsconfig.json"], + }), + + tanstackStart(), + viteReact({ + babel: { + plugins: ["babel-plugin-react-compiler"], + }, + }), + ], +}); + +export default config; From 51237f5e1ae8bad76614c0b71efe0777cc99b75d Mon Sep 17 00:00:00 2001 From: Shishant Biswas Date: Thu, 12 Feb 2026 16:44:25 +0530 Subject: [PATCH 14/19] docs(tanstack-start): add JSDoc comments to adapter functions --- .../tanstack-start/tanstack-start.adapter.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/adapter/tanstack-start/tanstack-start.adapter.ts b/app/src/adapter/tanstack-start/tanstack-start.adapter.ts index f9a419c..55151fe 100644 --- a/app/src/adapter/tanstack-start/tanstack-start.adapter.ts +++ b/app/src/adapter/tanstack-start/tanstack-start.adapter.ts @@ -5,15 +5,25 @@ export type TanstackStartEnv = NodeJS.ProcessEnv; export type TanstackStartConfig = FrameworkBkndConfig; +/** + * Get bknd app instance + * @param config - bknd configuration + * @param args - environment variables + */ export async function getApp( - config: TanstackStartConfig, + config: TanstackStartConfig = {}, args: Env = process.env as Env, ) { return await createFrameworkApp(config, args); } +/** + * Create request handler for src/routes/api.$.ts + * @param config - bknd configuration + * @param args - environment variables + */ export function serve( - { ...config }: TanstackStartConfig = {}, + config: TanstackStartConfig = {}, args: Env = process.env as Env, ) { return async (request: Request) => { From c3198394de10c2cb4167175648eec3cbd543d2d3 Mon Sep 17 00:00:00 2001 From: Shishant Biswas Date: Thu, 12 Feb 2026 21:03:50 +0530 Subject: [PATCH 15/19] docs: add tanstack start integration guide --- .../integration/(frameworks)/meta.json | 9 +- .../integration/(frameworks)/nextjs.mdx | 2 +- .../(frameworks)/tanstack-start.mdx | 291 ++++++++++++++++++ .../integration/introduction.mdx | 6 + docs/content/docs/(documentation)/start.mdx | 6 + .../tanstack-start/src/routes/admin.$.tsx | 2 +- 6 files changed, 313 insertions(+), 3 deletions(-) create mode 100644 docs/content/docs/(documentation)/integration/(frameworks)/tanstack-start.mdx diff --git a/docs/content/docs/(documentation)/integration/(frameworks)/meta.json b/docs/content/docs/(documentation)/integration/(frameworks)/meta.json index 6fb7bfc..5cc7900 100644 --- a/docs/content/docs/(documentation)/integration/(frameworks)/meta.json +++ b/docs/content/docs/(documentation)/integration/(frameworks)/meta.json @@ -1,3 +1,10 @@ { - "pages": ["nextjs", "react-router", "astro", "sveltekit", "vite"] + "pages": [ + "nextjs", + "react-router", + "astro", + "sveltekit", + "tanstack-start", + "vite" + ] } diff --git a/docs/content/docs/(documentation)/integration/(frameworks)/nextjs.mdx b/docs/content/docs/(documentation)/integration/(frameworks)/nextjs.mdx index b31deb9..c6b8c0b 100644 --- a/docs/content/docs/(documentation)/integration/(frameworks)/nextjs.mdx +++ b/docs/content/docs/(documentation)/integration/(frameworks)/nextjs.mdx @@ -71,7 +71,7 @@ export type NextjsBkndConfig = FrameworkBkndConfig & { ## Serve the API -Create a helper file to instantiate the bknd instance and retrieve the API, importing the configurationfrom the `bknd.config.ts` file: +Create a helper file to instantiate the bknd instance and retrieve the API, importing the configuration from the `bknd.config.ts` file: ```ts title="src/bknd.ts" import { diff --git a/docs/content/docs/(documentation)/integration/(frameworks)/tanstack-start.mdx b/docs/content/docs/(documentation)/integration/(frameworks)/tanstack-start.mdx new file mode 100644 index 0000000..f34b599 --- /dev/null +++ b/docs/content/docs/(documentation)/integration/(frameworks)/tanstack-start.mdx @@ -0,0 +1,291 @@ +--- +title: "Tanstack Start" +description: "Run bknd inside Tanstack Start" +tags: ["documentation"] +--- + +## Installation + +To get started with Tanstack Start and bknd, create a new Tanstack Start project by following the [official guide](https://tanstack.com/start/latest/docs/framework/react/getting-started#start-a-new-project-from-scratch), and then install bknd as a dependency: + + + +```bash tab="npm" +npm install bknd +``` + +```bash tab="pnpm" +pnpm install bknd +``` + +```bash tab="yarn" +yarn add bknd +``` + +```bash tab="bun" +bun add bknd +``` + + + +## Configuration + + + When run with Node.js, a version of 22 (LTS) or higher is required. Please + verify your version by running `node -v`, and + [upgrade](https://nodejs.org/en/download/) if necessary. + + +Now create a `bknd.config.ts` file in the root of your project: + +```typescript title="bknd.config.ts" +import { type TanstackStartConfig } from "bknd/adapter/tanstack-start"; +import { em, entity, text, boolean } from "bknd"; + +const schema = em({ + todos: entity("todos", { + title: text(), + done: boolean(), + }), +}); + +export default { + connection: { + url: "file:data.db", + }, + config: { + data: schema.toJSON(), + auth: { + enabled: true, + jwt: { + secret: "random_gibberish_please_change_this", + // use something like `openssl rand -hex 32` for production + }, + }, + }, + options: { + // the seed option is only executed if the database was empty + seed: async (ctx) => { + // create some entries + await ctx.em.mutator("todos").insertMany([ + { title: "Learn bknd", done: true }, + { title: "Build something cool", done: false }, + ]); + + // and create a user + await ctx.app.module.auth.createUser({ + email: "test@bknd.io", + password: "12345678", + }); + }, + }, +} satisfies TanstackStartConfig; +``` + +For more information about the connection object, refer to the [Database](/usage/database) guide. + + +See [bknd.config.ts](/extending/config) for more information on how to configure bknd. The `TanstackStartConfig` type extends the base config type with the following properties: + +```typescript +export type TanstackStartConfig = FrameworkBkndConfig; +``` + +## Serve the API + +The Tanstack Start adapter uses Tanstack Start's hooks mechanism to handle API requests. Create a `/src/routes/api.$.ts` file: + +```typescript title="/src/routes/api.$.ts" +import { createFileRoute } from "@tanstack/react-router"; +import config from "../../bknd.config"; +import { serve } from "bknd/adapter/tanstack-start"; + +const handler = serve(config); + +export const Route = createFileRoute("/api/$")({ + server: { + handlers: { + ANY: async ({ request }) => await handler(request), + }, + }, +}); +``` + +Create a helper file to instantiate the bknd instance and retrieve the API, importing the configuration from the `bknd.config.ts` file: + +```ts title="src/bknd.ts" +import config from "../bknd.config"; +import { getApp } from "bknd/adapter/tanstack-start"; + +export async function getApi({ + headers, + verify, +}: { + verify?: boolean; + headers?: Headers; +}) { + const app = await getApp(config, process.env); + + if (verify) { + const api = app.getApi({ headers }); + await api.verifyAuth(); + return api; + } + + return app.getApi(); +}; +``` + + + The adapter uses `process.env` to access environment variables, this works because Tanstack Start uses Nitro underneath and it will use polyfills for `process.env` making it platform/runtime agnostic. + + +## Enabling the Admin UI + +Create a page at /src/routes/admin.$.tsx: + +```typescript title="/src/routes/admin.$.tsx" +import { createFileRoute } from "@tanstack/react-router"; +import { useAuth } from "bknd/client"; +import "bknd/dist/styles.css"; +import { Admin } from "bknd/ui"; + +export const Route = createFileRoute("/admin/$")({ + ssr: false, // [!code highlight] "data-only" works too + component: RouteComponent, +}); + +function RouteComponent() { + const { user } = useAuth(); + return ( + + ); +}; +``` + + + Admin routes are expected to run on the client not using `ssr: false` will cause errors like `✘ [ERROR] No matching export in "node_modules/json-schema-library/dist/index.mjs" for import "Draft2019"` and production build might fail because of this + + + +## Example usage of the API + +You can use the `getApp` function to access the bknd API in your app: +These are a few examples how you can validate user and handle server-side requests using `createServerFn`. + +```typescript title="src/routes/index.tsx" +import { createFileRoute } from "@tanstack/react-router"; +import { getApi } from "@/bknd"; +import { createServerFn } from "@tanstack/react-start"; + +export const getTodo = createServerFn() + .handler(async () => { + const api = await getApi({}); + const limit = 5; + const todos = await api.data.readMany("todos", { limit, sort: "-id" }); + return { todos }; + }); + +export const Route = createFileRoute("/")({ + ssr: false, + component: App, + loader: async () => { + return await getTodo(); + }, +}); + +function App() { + const { todos } = Route.useLoaderData(); + + return ( +
+

Todos

+
    + {todos.map((todo) => ( +
  • {todo.title}
  • + ))} +
+
+ ); +} +``` + + + +### Using authentication + +To use authentication in your app, pass the request headers to the API: + +```typescript title="src/routes/user.tsx" +import { getApi } from "@/bknd"; +import { createServerFn } from "@tanstack/react-start"; +import { Link } from "@tanstack/react-router"; +import { createFileRoute } from "@tanstack/react-router"; +import { getRequest } from "@tanstack/react-start/server"; + +export const getUser = createServerFn() + .handler(async () => { + const request = getRequest(); + const api = await getApi({ verify: true, headers: request.headers }); + const user = api.getUser(); + return { user }; + }); + +export const Route = createFileRoute("/user")({ + component: RouteComponent, + loader: async () => { + return { user: await getUser() }; + }, +}); + +function RouteComponent() { + const { user } = Route.useLoaderData(); + return ( +
+ {user ? ( + <> + Logged in as {user.email}.{" "} + + Logout + + + ) : ( +
+

+ Not logged in. + + Login + +

+

+ Sign in with: + + test@bknd.io + + / + + 12345678 + +

+
+ )} +
+ ) +} +``` + +Check the [Tanstack Start repository example](https://github.com/bknd-io/bknd/tree/main/examples/tanstack-start) for more implementation details. diff --git a/docs/content/docs/(documentation)/integration/introduction.mdx b/docs/content/docs/(documentation)/integration/introduction.mdx index 7119efd..6b94374 100644 --- a/docs/content/docs/(documentation)/integration/introduction.mdx +++ b/docs/content/docs/(documentation)/integration/introduction.mdx @@ -33,6 +33,12 @@ bknd seamlessly integrates with popular frameworks, allowing you to use what you href="/integration/sveltekit" /> +} + title="Tanstack Start" + href="/integration/tanstack-start" +/> + Create a new issue to request a guide for your framework. diff --git a/docs/content/docs/(documentation)/start.mdx b/docs/content/docs/(documentation)/start.mdx index 5a7a937..744588d 100644 --- a/docs/content/docs/(documentation)/start.mdx +++ b/docs/content/docs/(documentation)/start.mdx @@ -150,6 +150,12 @@ Pick your framework or runtime to get started. href="/integration/sveltekit" /> +} + title="Tanstack Start" + href="/integration/tanstack-start" +/> + } title="AWS Lambda" diff --git a/examples/tanstack-start/src/routes/admin.$.tsx b/examples/tanstack-start/src/routes/admin.$.tsx index facf57b..6e2971f 100644 --- a/examples/tanstack-start/src/routes/admin.$.tsx +++ b/examples/tanstack-start/src/routes/admin.$.tsx @@ -4,7 +4,7 @@ import "bknd/dist/styles.css"; import { Admin } from "bknd/ui"; export const Route = createFileRoute("/admin/$")({ - ssr: false, + ssr: false, // "data-only" works too component: RouteComponent, }); From 8bf8b22e57d926f829bb11740f421f8a05408291 Mon Sep 17 00:00:00 2001 From: Shishant Biswas Date: Sat, 28 Feb 2026 23:05:38 +0530 Subject: [PATCH 16/19] refactor: remove duplicate tsup build config and clean up --- app/build.ts | 4 ---- examples/tanstack-start/.gitignore | 3 ++- examples/tanstack-start/src/components/List.tsx | 2 +- examples/tanstack-start/src/routes/index.tsx | 6 +++--- examples/tanstack-start/src/routes/ssr.tsx | 6 +++--- examples/tanstack-start/src/styles.css | 2 -- 6 files changed, 9 insertions(+), 14 deletions(-) diff --git a/app/build.ts b/app/build.ts index 7da7832..1ab90ea 100644 --- a/app/build.ts +++ b/app/build.ts @@ -363,10 +363,6 @@ async function buildAdapters() { external: [/^bun\:.*/], }), - tsup.build({ - ...baseConfig("tanstack-start"), - platform: "node", - }), ]); } diff --git a/examples/tanstack-start/.gitignore b/examples/tanstack-start/.gitignore index 1ed63c5..2396459 100644 --- a/examples/tanstack-start/.gitignore +++ b/examples/tanstack-start/.gitignore @@ -12,4 +12,5 @@ count.txt .vinxi todos.json public/uploads -data.db \ No newline at end of file +data.db +src/routeTree.gen.ts \ No newline at end of file diff --git a/examples/tanstack-start/src/components/List.tsx b/examples/tanstack-start/src/components/List.tsx index e2a98c0..5470ac0 100644 --- a/examples/tanstack-start/src/components/List.tsx +++ b/examples/tanstack-start/src/components/List.tsx @@ -1,5 +1,5 @@ export const List = ({ items = [] }: { items: React.ReactNode[] }) => ( -
    +
      {items.map((item, i) => (
    1. {item} diff --git a/examples/tanstack-start/src/routes/index.tsx b/examples/tanstack-start/src/routes/index.tsx index 9e37928..e2123d8 100644 --- a/examples/tanstack-start/src/routes/index.tsx +++ b/examples/tanstack-start/src/routes/index.tsx @@ -72,13 +72,13 @@ function App() { const addTodo = useServerFn(createTodo); return ( -
      +
      Next.js logo
      &
      )}
      - {todos.reverse().map((todo) => ( + {todos.map((todo) => (
      +
      Next.js logo
      &
      diff --git a/examples/tanstack-start/src/styles.css b/examples/tanstack-start/src/styles.css index bafe49a..1d1ea1e 100644 --- a/examples/tanstack-start/src/styles.css +++ b/examples/tanstack-start/src/styles.css @@ -13,8 +13,6 @@ } @theme { - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); --color-background: var(--background); --color-foreground: var(--foreground); } From 80b0716a4ac19f539646ca6e944ca2dbc017e0fd Mon Sep 17 00:00:00 2001 From: Shishant Biswas Date: Sat, 28 Feb 2026 23:32:20 +0530 Subject: [PATCH 17/19] Remove unrelated Next.js file changes --- .../docs/(documentation)/integration/(frameworks)/nextjs.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/docs/(documentation)/integration/(frameworks)/nextjs.mdx b/docs/content/docs/(documentation)/integration/(frameworks)/nextjs.mdx index c6b8c0b..b31deb9 100644 --- a/docs/content/docs/(documentation)/integration/(frameworks)/nextjs.mdx +++ b/docs/content/docs/(documentation)/integration/(frameworks)/nextjs.mdx @@ -71,7 +71,7 @@ export type NextjsBkndConfig = FrameworkBkndConfig & { ## Serve the API -Create a helper file to instantiate the bknd instance and retrieve the API, importing the configuration from the `bknd.config.ts` file: +Create a helper file to instantiate the bknd instance and retrieve the API, importing the configurationfrom the `bknd.config.ts` file: ```ts title="src/bknd.ts" import { From 0318e595f22561abb69f69b6c449d54b7ae3bf6c Mon Sep 17 00:00:00 2001 From: Cameron Pak Date: Sat, 28 Feb 2026 12:32:49 -0600 Subject: [PATCH 18/19] docs: add CONTRIBUTING.md with dev setup, project structure, and contribution guidelines Co-authored-by: Amp Amp-Thread-ID: https://ampcode.com/threads/T-019ca575-cf6e-7388-9bd4-6ddd4c27609c --- CONTRIBUTING.md | 267 ++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 16 +++ 2 files changed, 283 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ed2e73c --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,267 @@ +# Contributing to bknd + +Thank you for your interest in contributing to bknd. This guide will help you get started, understand the codebase, and submit contributions that align with the project's direction. + +## Table of Contents + +- [Before You Start](#before-you-start) +- [Important Resources](#important-resources) +- [Development Setup](#development-setup) +- [Project Structure](#project-structure) +- [Understanding the Codebase](#understanding-the-codebase) +- [Running Tests](#running-tests) +- [Code Style](#code-style) +- [Submitting Changes](#submitting-changes) +- [AI-Generated Code](#ai-generated-code) +- [Contributing to Documentation](#contributing-to-documentation) +- [Reporting Bugs](#reporting-bugs) +- [Getting Help](#getting-help) +- [Contributors](#contributors) +- [Maintainers](#maintainers) + +## Before You Start + +**Open a GitHub Issue before writing code.** This is the preferred way to propose any change. It lets maintainers and the community align on the approach before time is spent on implementation. If you have discussed a contribution in the [Discord server](https://discord.com/invite/952SFk8Tb8) instead, include a link to the relevant Discord thread in your pull request. Pull requests submitted without a corresponding issue or Discord discussion may be closed. + +**Unsolicited architectural changes will be closed.** The internal architecture of bknd is intentional. Refactors, restructuring, or changes to core patterns must be discussed and approved before any code is written. + +Contributions that are generally welcome (after opening an issue): + +- Bug fixes +- New adapters, strategies, or storage backends +- Documentation improvements +- New examples +- Test coverage improvements + +**A note on versioning**: bknd is pre-1.0 and under active development. Full backward compatibility is not guaranteed before v1.0.0. Contributors should be aware that APIs and internal interfaces may change between releases. + +## Important Resources + +- **Documentation**: https://docs.bknd.io +- **Issue Tracker**: https://github.com/bknd-io/bknd/issues +- **Discord**: https://discord.com/invite/952SFk8Tb8 +- **FAQ / Search**: https://www.answeroverflow.com/c/1308395750564302952 + +## Development Setup + +### Prerequisites + +- Node.js 22.13 or higher +- Bun 1.3.3 + +### Getting Started + +1. Fork the repository and clone your fork. + +2. Install dependencies from the repo root: + + ```bash + bun install + ``` + +3. Navigate to the main app package: + + ```bash + cd app + ``` + +4. Copy the example environment file: + + ```bash + cp .env.example .env + ``` + + The default `.env.example` includes a file-based SQLite database (`file:.db/dev.db`). You can change `VITE_DB_URL` to `:memory:` for an in-memory database instead. + +5. Start the dev server: + + ```bash + bun run dev + ``` + + The dev server runs on `http://localhost:28623` using Vite with Hono. + +## Project Structure + +This is a Bun monorepo using workspaces. The vast majority of the code lives in `app/`. + +``` +bknd/ + app/ # Main "bknd" npm package (this is where most work happens) + src/ + adapter/ # Runtime/framework adapters (node, bun, cloudflare, nextjs, astro, etc.) + auth/ # Authentication module (strategies, sessions, user pool) + cli/ # CLI commands + core/ # Shared utilities, event system, drivers, server helpers + data/ # Data module (entities, fields, relations, queries, schema) + flows/ # Workflow engine and tasks + media/ # Media module (storage adapters, uploads) + modes/ # Configuration modes (code, hybrid, db) + modules/ # Module system, MCP server, permissions framework + plugins/ # Built-in plugins (auth, data, cloudflare, dev) + ui/ # All frontend code + client/ # TypeScript SDK and React hooks (exported as bknd/client) + elements/ # React components for auth/media (exported as bknd/elements) + (everything else) # Admin UI (exported as bknd/ui) + App.ts # Central application orchestrator + index.ts # Main package exports + __test__/ # Unit tests (mirrors src/ structure) + e2e/ # End-to-end tests (Playwright) + build.ts # Build script (tsup/esbuild) + build.cli.ts # CLI build script + packages/ # Small satellite packages + cli/ # Standalone CLI package (bknd-cli) + plasmic/ # Plasmic integration + postgres/ # Postgres helper + sqlocal/ # SQLocal helper + docs/ # Documentation site (Next.js + Fumadocs, deployed to docs.bknd.io) + examples/ # Example projects across runtimes and frameworks + docker/ # Docker configuration +``` + +## Understanding the Codebase + +### Path Aliases + +The project uses TypeScript path aliases defined in `app/tsconfig.json`. Imports like `core/utils`, `data/connection`, or `auth/authenticate` resolve to directories under `app/src/`. When reading source code, keep this in mind -- an import like `import { Connection } from "data/connection"` refers to `app/src/data/connection`, not an external package. + +### Module System + +bknd is built around four core modules, each with its own schema, API routes, and permissions: + +- **Data** -- entity definitions, field types, relations, queries (backed by Kysely) +- **Auth** -- authentication strategies, sessions, user management +- **Media** -- file storage with pluggable adapters (S3, Cloudinary, local filesystem, etc.) +- **Flows** -- workflow automation and task execution + +These modules are managed by the `ModuleManager` (in `app/src/modules/`), which handles configuration, building, and lifecycle. + +### Adapter Pattern + +Adapters in `app/src/adapter/` allow bknd to run on different runtimes and frameworks. Each adapter provides the glue between bknd's Hono-based server and a specific environment (Node, Bun, Cloudflare Workers, Next.js, Astro, etc.). + +### Plugin System + +Plugins (in `app/src/plugins/`) hook into the app lifecycle via callbacks like `beforeBuild`, `onBuilt`, `onServerInit`, and `schema`. They can add entities, register routes, and extend behavior. + +### Build System + +The build is handled by a custom `app/build.ts` script using tsup (esbuild under the hood). It builds four targets in parallel: + +- **API** -- the core backend +- **UI** -- the admin interface +- **Elements** -- standalone React components +- **Adapters** -- all runtime/framework adapters + +## Running Tests + +All test commands run from the `app/` directory. + +| Command | Runner | What it runs | +|---|---|---| +| `bun run test` | Bun test | Unit tests (`*.spec.ts` files) | +| `bun run test:node` | Vitest | Node-specific tests (`*.vi-test.ts`, `*.vitest.ts`) | +| `bun run test:e2e` | Playwright | End-to-end tests (`*.e2e-spec.ts` in `e2e/`) | +| `bun run types` | TypeScript | Type checking (no emit) | + +CI runs both Bun and Node tests, with a Postgres 17 service for database integration tests. + +## Code Style + +The project uses **Biome** for formatting and linting. + +- 3-space indentation for JavaScript/TypeScript +- 100-character line width +- Spaces (not tabs) + +To format and lint, run from the repo root: + +```bash +bunx biome format --write ./app +bunx biome lint --changed --write ./app +``` + +Run both before submitting a PR. CI will catch style issues, but it is better to fix them locally first. + +## Submitting Changes + +1. Open a GitHub Issue describing your proposed change, or link to a Discord thread where it was discussed. Wait for feedback before writing code. +2. Fork the repo and create a branch from `main`. +3. Keep changes focused and minimal. One PR per issue. +4. Add or update tests if applicable. +5. Run the test suite and linter before pushing. +6. Open a pull request against `main`. Reference the issue number in the PR description. + +Expect a response from maintainers, but be patient -- this is an actively developed project and review may take some time. + +## AI-Generated Code + +If you use AI tools to write or assist with your code, you must: + +- **Fully review all AI-generated code yourself** before submitting. You are responsible for understanding and standing behind every line in your PR. +- **Include the prompts used** in the PR description. This gives maintainers additional context for reviewing the code. + +Pull requests with unreviewed AI-generated code will be closed. + +## Contributing to Documentation + +The documentation site lives in the `docs/` directory and is a **separate Next.js application** built with [Fumadocs](https://fumadocs.dev). It uses **npm** (not Bun) as its package manager. + +### Docs Setup + +```bash +cd docs +npm install +npm run dev +``` + +The docs dev server runs on `http://localhost:3000`. + +### Where Documentation Lives + +Documentation content is written in MDX and located in `docs/content/docs/`. The directory is organized into: + +- `(documentation)/` -- core documentation pages +- `guide/` -- guides and tutorials +- `api-reference/` -- API reference (partially auto-generated from OpenAPI) + +To add or edit a page, create or modify an `.mdx` file in the appropriate directory. Page metadata is defined via frontmatter at the top of each file. Navigation order is controlled by `meta.json` files in each directory. + +### Building the Docs + +```bash +npm run build +``` + +This generates the OpenAPI and MCP reference pages before building the Next.js site. Make sure the build succeeds locally before submitting a docs PR. + +## Reporting Bugs + +Open a GitHub Issue with: + +- A clear title describing the problem. +- Steps to reproduce the bug. +- Expected behavior vs. actual behavior. +- Your environment (runtime, database, adapter, bknd version). +- Any relevant error messages or logs. + +## Getting Help + +- **Discord**: https://discord.com/invite/952SFk8Tb8 +- **FAQ / Search**: https://www.answeroverflow.com/c/1308395750564302952 +- **GitHub Issues**: https://github.com/bknd-io/bknd/issues + +## Contributors + +Thank you to everyone who has contributed to bknd. + + + + + +Made with [contrib.rocks](https://contrib.rocks). + +## Maintainers + +- **Dennis** ([@dswbx](https://github.com/dswbx)) -- Creator and maintainer of bknd +- **Cameron Pak** ([@cameronapak](https://github.com/cameronapak)) -- Maintainer of bknd docs diff --git a/README.md b/README.md index 2d08d83..a28f54b 100644 --- a/README.md +++ b/README.md @@ -165,3 +165,19 @@ npx bknd run ```bash npm install bknd ``` + +## Contributing + +We welcome contributions! Please read our [CONTRIBUTING.md](CONTRIBUTING.md) before getting started. It covers dev setup, project structure, testing, code style, and how to submit changes. + +Before writing code, please open a GitHub Issue or start a conversation in [Discord](https://discord.com/invite/952SFk8Tb8) so we can align on the approach. + +## Contributors + +Thank you to everyone who has contributed to bknd. + + + + + +Made with [contrib.rocks](https://contrib.rocks). From e5bfc602e1ec95fc2c0d3546a6cb60c252511112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1s=20Perusqu=C3=ADa=20Morales?= Date: Tue, 3 Mar 2026 11:27:59 -0600 Subject: [PATCH 19/19] Update client:only attribute in astro.mdx Astro requires client:only to specify the frontend library used --- .../docs/(documentation)/integration/(frameworks)/astro.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/docs/(documentation)/integration/(frameworks)/astro.mdx b/docs/content/docs/(documentation)/integration/(frameworks)/astro.mdx index be96c3a..8313f7d 100644 --- a/docs/content/docs/(documentation)/integration/(frameworks)/astro.mdx +++ b/docs/content/docs/(documentation)/integration/(frameworks)/astro.mdx @@ -170,7 +170,7 @@ export const prerender = false; theme: "dark", logo_return_path: "/../" }} - client:only + client:only="react" />