Introduction
AdminJS is an open-source admin panel framework for Node.js applications. It connects to your existing database or ORM and automatically generates a full-featured admin UI with CRUD operations, filters, and bulk actions, requiring minimal configuration.
What AdminJS Does
- Auto-generates admin CRUD interfaces from database models
- Supports multiple ORMs and databases (Sequelize, TypeORM, Mongoose, Prisma, MikroORM)
- Provides role-based access control and authentication
- Offers customizable React-based UI components
- Handles file uploads, rich text editing, and relation management
Architecture Overview
AdminJS runs as an Express, Hapi, Koa, Fastify, or NestJS plugin that introspects your data models at startup. It generates a React single-page application served alongside your existing routes. Database adapters translate ORM-specific schemas into a unified resource model, and actions (list, show, edit, delete, bulk) are rendered automatically with customizable overrides.
Self-Hosting & Configuration
- Install the core package and the adapter for your ORM (e.g., @adminjs/sequelize)
- Mount AdminJS as a middleware plugin in your web framework
- Configure authentication via the built-in session-based auth or custom providers
- Override default components by providing custom React files
- Deploy alongside your existing Node.js application with no separate server needed
Key Features
- Zero-boilerplate admin UI generation from existing data models
- Six ORM adapters covering the most popular Node.js database libraries
- Custom actions and bulk operations for business-specific workflows
- Theming and component overrides using standard React
- Built-in dashboard with widgets for quick data summaries
Comparison with Similar Tools
- React Admin — requires manual API endpoint setup; AdminJS auto-generates from ORM models
- Strapi — full headless CMS with content types; AdminJS is a lighter admin layer on existing apps
- Retool — commercial low-code tool; AdminJS is open-source and runs inside your own server
- Django Admin — Python ecosystem; AdminJS provides similar functionality for Node.js applications
FAQ
Q: Which databases are supported? A: PostgreSQL, MySQL, MongoDB, SQLite, and any database accessible through Sequelize, TypeORM, Mongoose, Prisma, or MikroORM.
Q: Can I customize the look and feel? A: Yes, AdminJS supports custom React components, CSS theming, and layout overrides for any resource or action.
Q: Does it work with an existing Express app? A: Yes, AdminJS mounts as middleware on Express, Fastify, Hapi, Koa, or NestJS without replacing your existing routes.
Q: Is there access control? A: AdminJS includes session-based authentication and supports role-based permissions at the resource and action level.