When run with Node.js, a version of 22 (LTS) or higher is required. Please
verify your version by running node -v, and
upgrade if necessary.
Now create a bknd.config.ts file in the root of your project. If you created the project using the CLI starter, this file is already created for you.
bknd.config.ts
import type { ReactRouterBkndConfig } from "bknd/adapter/react-router";export default { connection: { url: "file:data.db", },} satisfies ReactRouterBkndConfig;
See bknd.config.ts for more information on how to configure bknd. The ReactRouterBkndConfig type extends the BkndConfig type with the following additional properties:
type ReactRouterEnv = NodeJS.ProcessEnv;type ReactRouterFunctionArgs = { request: Request;};export type ReactRouterBkndConfig<Env = ReactRouterEnv> = FrameworkBkndConfig<Env>;
Create a helper file to instantiate the bknd instance and retrieve the API, importing the configurationfrom the bknd.config.ts file:
app/bknd.ts
import { type ReactRouterBkndConfig, getApp as getBkndApp,} from "bknd/adapter/react-router";import config from "../bknd.config";export { config };// you may adjust this function depending on your runtime environment.// e.g. when deploying to cloudflare workers, you'd want the FunctionArgs to be passed in// to resolve environment variablesexport async function getApp() { return await getBkndApp(config, process.env as any);}export async function getApi( args?: { request: Request }, opts?: { verify?: boolean },) { const app = await getApp(); if (opts?.verify) { const api = app.getApi({ headers: args?.request.headers }); await api.verifyAuth(); return api; } return app.getApi();}
For more information about the connection object, refer to the Database guide.
Create a new api splat route file at app/routes/api.$.ts: