v0.0.0·changelog

The admin panel you don't have to build.

One config file becomes a typed /admin route for your Next.js app. Drizzle or Prisma. MIT.

$ pnpm flowpanel init
Live demoGitHub

01 Getting started

Three steps. No scaffolding.

flowpanel introspects your schema, writes one config, scaffolds your /admin page.

  1. 01

    Init

    Detect your ORM, list every model, write a typed config.

    $ pnpm flowpanel init
     detected prisma · 9 models
     wrote flowpanel.config.ts
  2. 02

    Configure

    Pick the resources you want, add filters, override the column you care about.

    defineAdmin({
      resources: [resource(schema.users, { columns: ["email"] })],
    })
  3. 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/

Ready to ship.

Open localhost:3000/admin in about a minute.