Skip to content

createAdmin

createAdmin(config): Promise<{ action: (request) => Promise<Response | AdminActionResult>; Component: () => ReactElement; loader: (request) => Promise<AdminLoaderData>; }>

Defined in: packages/admin/src/create-admin.ts:40

Create a complete admin panel from your Drizzle schema.

Introspects your schema, applies any TableOverrides, and produces a { loader, action, Component } triple that you mount on a single React Router route. The admin panel includes list views, detail views, create/edit forms, user management, and a dashboard — all derived from your schema and permissions.

For server/client code splitting, use the individual factories (createAdminLoader, createAdminAction, createAdminComponent) instead.

AdminConfig

The admin configuration including DB factory, auth adapter, and schema.

Promise<{ action: (request) => Promise<Response | AdminActionResult>; Component: () => ReactElement; loader: (request) => Promise<AdminLoaderData>; }>

A promise resolving to an object with loader, action, and Component to mount on a React Router route.

app/routes/admin.tsx
import { createAdmin } from "@cfast/admin";
import * as schema from "~/schema";
const admin = await createAdmin({
db: (grants, user) => createDb({ d1: env.DB, schema, grants, user }),
auth,
schema,
requiredRole: "admin",
});
export const loader = admin.loader;
export const action = admin.action;
export default admin.Component;