Drop in a plugin. Get authentication, role-based access control, entity CRUD, and a polished UI — in minutes.
MIT licensed. No tiers, no paywalls, no seats. Take it, use it, ship it — no strings attached.
The source is yours to read. See how auth flows, RBAC, CRUD, and real-world Fastify plugins are built — then apply it to your own work.
Stop rebuilding the same admin panel for every project. One plugin install and you're done — more time for the product that actually matters.
Built in the open, shaped by real use cases. Open issues, send PRs, share ideas — this grows with the people who use it.
One plugin, zero boilerplate. Works with any MikroORM entity.
Email + password login, OAuth (Google, GitHub, Microsoft), JWT session cookies, and signup flows out of the box.
Fine-grained per-entity permissions. Roles and permissions are seeded automatically and fully manageable in the UI.
Auto-generated list, show, edit, and create views for every MikroORM entity. Customise columns, fields, and operations per entity.
Optional two-factor authentication via email OTP. Enable per user from the profile settings — no extra configuration.
Light, dark, and system-preference modes with a persistent toggle. Every component respects the active theme.
Standard Fastify plugin. Wraps any existing app. Fully typed — configure entity labels, icons, field order, and custom operations.
Add fastify-admin to your Fastify project alongside MikroORM.
Pass your ORM instance and optional resource configs. Everything else is handled automatically.
Run npx create-admin once to seed your first admin account and start exploring.
Override labels, icons, field order, operations, and permissions per entity — all in TypeScript.
import { fastifyAdmin } from 'fastify-admin' import { initORM } from './db.js' const db = await initORM() const orm = db.orm await app.register(fastifyAdmin, { orm, name: 'My Admin', views: { post: { icon: 'FileText', list: { columns: ['id', 'title', 'author'] }, edit: { fields: ['title', 'body', 'author'] }, }, }, }) // admin UI is now live at /
Planned features and improvements. Contributions welcome.
npx fastify-admin)First-party command-line tool for scaffolding, migrations, and user management — init, migrate:up, create-admin, and more. No package manager scripts required.
Per-entity async hooks — beforeCreate, afterCreate, beforeUpdate, afterUpdate, beforeDelete, afterDelete — to run custom logic, validations, or side effects around every data operation.
Built-in activity log that tracks who created, updated, or deleted every record — with timestamps and diffs.
Auto-generated OpenAPI 3.1 spec from MikroORM entity metadata. Scalar UI embedded in the sidebar — auth pre-filled, dark mode native, request playground included.
Full UI localisation with pluggable locale files. Translate labels, messages, and validation errors into any language.
Built-in rate limiting on auth endpoints — login, signup, MFA, and password reset — to prevent brute-force attacks. Configurable limits via plugin options, powered by @fastify/rate-limit.
Ship admin activity and application logs to external monitors — Kibana, Datadog, Grafana Loki, or any OpenTelemetry-compatible sink — via a pluggable transport config.
Isolate data per tenant with schema-level or row-level separation. Each tenant gets its own scoped view, users, and permissions.
Built-in charting for entity data — bar, line, and pie charts configurable per entity. Export reports as CSV or PDF directly from the admin panel.
Pluggable dashboard with stat cards, charts, and activity feeds built from your own entity data.
Adapter layer to support other ORMs — Prisma, TypeORM, Drizzle — beyond the current MikroORM integration.
Natural language search across entities, smart data summaries, anomaly detection, and a chat interface for querying your data — powered by your choice of provider (Anthropic, OpenAI).
Extend User, Role, and Permission with your own fields and relations without forking core entities. EntityView is already subclassable today — this brings the same flexibility to the entities themselves.
Brand the admin panel to match your product — configure primary colours, typography, and logo via plugin options or a live theme editor, without touching any source files.