Розробка адміністративної панелі на AdminJS під ключ

Відзначимо: коли стандартна адмін-панель занадто жорстка, а кастомна розробка — занадто дорога, AdminJS (див. [GitHub-репозиторій](https://github.com/SoftwareBrothers/adminjs)) пропонує золоту середину. Але в коробці він часто не покриває складні бізнес-правила: кастомні екшени, завантаження файлів,

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка адміністративної панелі на AdminJS під ключ
Середній
від 1 тижня до 3 місяців

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1419
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1287
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    984
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1248
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    984
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    998

Відзначимо: коли стандартна адмін-панель занадто жорстка, а кастомна розробка — занадто дорога, AdminJS (див. GitHub-репозиторій) пропонує золоту середину. Але в коробці він часто не покриває складні бізнес-правила: кастомні екшени, завантаження файлів, рольовий доступ. Ми розробили адмін-панелі на AdminJS для e-commerce, логістики та SaaS з 20+ проєктами. Одного разу для мережі магазинів ми впровадили кастомний екшен масової зміни цін — обробка 5000 товарів за 30 секунд. У цій статті розповімо, як кастомізувати AdminJS, які інструменти використовуємо і де проходять межі можливостей.

Які проблеми вирішує AdminJS?

AdminJS генерує CRUD-інтерфейс на основі моделей даних. Він підходить для швидкого запуску адмінки, але потребує доопрацювання під нестандартні сценарії. Ось основні складнощі, які ми вирішуємо:

  • Кастомні дії — масова розсилка, генерація звітів, інтеграція із зовнішніми API. Наприклад, для логістичного стартапу ми додали екшен автоматичного створення накладних, що обробляє 10 000 записів за хвилину.
  • Завантаження файлів — через @adminjs/upload з S3 або локальним сховищем. Підтримуємо автогенерацію прев'ю та мініатюр для зображень товарів.
  • Права доступу — розмежування за ролями та діями (перегляд, редагування, видалення). Налаштовуємо рольову модель на основі currentAdmin.role з каскадними дозволами.
  • Кастомні компоненти — заміна стандартних полів на React-віджети: datepicker, autocomplete, wysiwyg-редактори. Для одного клієнта ми розробили компонент вибору складу з геолокацією.
  • Продуктивність — оптимізація запитів для таблиць з 100k+ записів: додаємо індекси, використовуємо серверну фільтрацію, підключаємо Elasticsearch для повнотекстового пошуку.

Як кастомізувати AdminJS під бізнес-вимоги?

Стек: Node.js, TypeScript, React 18, AdminJS 7.x, TypeORM / Prisma. Деплой — Docker, Nginx, Vercel.

Розглянемо приклад: інтернет-магазин з товарами, замовленнями та клієнтами. Базова налаштування AdminJS з автентифікацією та кастомними правами:

Приклад коду налаштування AdminJS
import AdminJS from 'adminjs'; import AdminJSExpress from '@adminjs/express'; import { Database, Resource, getModelByName } from '@adminjs/typeorm'; AdminJS.registerAdapter({ Database, Resource }); const adminJs = new AdminJS({ resources: [ { resource: getModelByName('User'), options: { properties: { password: { isVisible: { list: false, edit: false, filter: false, show: false } }, createdAt: { isVisible: { edit: false } } }, actions: { delete: { isAccessible: ({ currentAdmin }) => currentAdmin?.role === 'superadmin' } } } }, { resource: getModelByName('Order'), options: { listProperties: ['id', 'customer', 'status', 'total', 'createdAt'], filterProperties: ['status', 'createdAt'], sort: { sortBy: 'createdAt', direction: 'desc' } } } ], dashboard: { component: AdminJS.bundle('./components/Dashboard') }, branding: { companyName: 'Мій Магазин', logo: '/admin-logo.svg' } }); const router = AdminJSExpress.buildAuthenticatedRouter(adminJs, { authenticate: async (email, password) => { const admin = await Admin.findOne({ email }); if (admin && await bcrypt.compare(password, admin.passwordHash)) { return admin; } return null; }, cookiePassword: process.env.COOKIE_SECRET }); 

Кастомний компонент для відображення статусу замовлення кольором:

import { BasePropertyProps } from 'adminjs'; const OrderStatusCell: React.FC<BasePropertyProps> = ({ record }) => { const status = record.params.status; const colors = { pending: 'orange', completed: 'green', cancelled: 'red' }; return <span style={{ color: colors[status] }}>{status}</span>; }; export default OrderStatusCell; 

Завантаження зображень товарів у S3 через @adminjs/upload:

import uploadFeature from '@adminjs/upload'; import { s3Client } from './s3-client'; { resource: getModelByName('Product'), features: [ uploadFeature({ provider: { aws: { bucket: 'my-bucket', s3Client } }, properties: { file: 'imageFile', filePath: 'imageUrl', filename: 'imageName', mimeType: 'imageMimeType' }, uploadPath: (record, filename) => `products/${record.id()}/${filename}` }) ] } 

Чому AdminJS економить до 60% часу та бюджету?

Написання адмін-панелі з нуля на React і Express займає близько 3–4 тижнів для типового CRUD. AdminJS скорочує цей термін до 1–2 тижнів, що в 2-3 рази швидше. Для проєктів з 10+ сутностями економія часу сягає 60%, а отже і бюджету. При додаванні кастомних компонентів економія зберігається на рівні 30–40%.

Згідно з офіційною документацією AdminJS, фреймворк підтримує всі популярні ORM і прискорює розробку за рахунок генерації інтерфейсу з моделей. Але важливо розуміти: коробкова версія дає базовий функціонал, а реальна економія отримується при правильному налаштуванні та кастомізації.

ORM Швидкість розробки Складність кастомізації
TypeORM Висока Низька
Prisma Середня Середня
Mongoose Висока Низька
Sequelize Середня Середня

Що робити, якщо продуктивність AdminJS не влаштовує?

Для таблиць з 100k+ записів стандартні механізми можуть гальмувати. Ми застосовуємо кілька підходів. Перший — серверна фільтрація: всі фільтри виконуються на стороні БД, а не у фронтенді. Другий — індексація часто запитаних полів. Третій — відмова від find із завантаженням усіх пов'язаних сутностей; використовуємо QueryBuilder з select only. У крайньому випадку підключаємо Elasticsearch для повнотекстового пошуку.

Приклад оптимізації: в одному проєкті таблиця замовлень (200k записів) відкривалася 5 секунд. Після додавання композитного індексу по (status, createdAt) і фільтрації за статусом час завантаження впав до 200 мс.

Як ми розробляємо адмін-панель?

Етап Час (дні)
Аналітика 1
Проектування 1-2
Реалізація 5-10
Тестування 2-3
Деплой 1
  1. Аналітика — вивчаємо структуру даних, бізнес-процеси, права доступу. Оцінюємо обсяг за 1 день.
  2. Проектування — визначаємо ресурси, екшени, компоненти, схему прав.
  3. Реалізація — налаштування AdminJS, написання кастомних компонентів і екшенів, інтеграція із зовнішніми сервісами.
  4. Тестування — перевірка сценаріїв, навантажувальне тестування (до 10 000 запитів).
  5. Деплой і документація — розгортання на вашому сервері, опис інструкцій для адміністраторів.

Що входить в результат роботи

  • Повністю готова адмін-панель на AdminJS з автентифікацією.
  • Кастомні компоненти та екшени за вашим ТЗ.
  • Інтеграція із завантаженням файлів (S3, MinIO).
  • Розмежування прав доступу (ролі, дії).
  • Вихідний код, документація, інструкція з розгортання.
  • Гарантія 6 місяців на виявлені помилки.

Для простих проєктів AdminJS скорочує час розробки адмінки на 60% порівняно з написанням з нуля. Зв'яжіться з нами, щоб обговорити ваш проєкт — отримайте консультацію та попередню оцінку за 1 день. Замовте розробку адмін-панелі на AdminJS.