01 Getting started
Three steps. No scaffolding.
flowpanel introspects your schema, writes one config, scaffolds your /admin page.
- 01
Init
Detect your ORM, list every model, write a typed config.
$ pnpm flowpanel init detected prisma · 9 models wrote flowpanel.config.ts
- 02
Configure
Pick the resources you want, add filters, override the column you care about.
defineAdmin({ resources: [resource(schema.users, { columns: ["email"] })], })
- 03
Mount
One page export, one route handler. The /admin surface is fully typed.
$ cat app/admin/[[...slug]]/page.tsx export default Flowpanel(config)
02 Customization
Three layers. Take only what you need.
Stay declarative, swap a single component, or own the source. The escape hatch is one command away — and you never lose typing.
L1
props
Tweak with config
Override a column renderer, add a row action, hide a field.
columns: [{ field: "status", render: (row) => row.status }]L2
theme
Swap any of 10 slots
Replace MetricCard, Button, Badge, Avatar, StatusBadge, EmptyState, PageHeader, Pagination, ConfirmDialog, or SkeletonTable with your own component.
theme: { components: { MetricCard: MyMetricCard } }L3
eject
Take the source
One command writes a five-file scaffold into your repo. Each file stamped — it's yours.
$ pnpm flowpanel eject resource users wrote 5 files to app/admin/users/