В 2022-м мы окончательно задолбались.

Каждый новый проект все по кругу: таблички, формы, фильтры, CRUD. Всё снова, как в Groundhog Day. Копипастить старое было больно, собирать с нуля – ещё хуже. И главное, ощущение абсурда: 2022 год, а мы продолжаем лепить админки вручную, будто на дворе 2015.

Окей, логичный шаг – найти готовое решение.

Мы правда пытались не изобретать велосипед

Первым делом пошли смотреть на CMS. Попробовали Strapi – мощный зверь, но если вам просто нужно бэку выдать пару CRUD’ов, то тянуть за собой целую экосистему с философией и особым образом жизни, это как стрелять из базуки по воробьям.

Дальше, дизайн-системы вроде Salesforce Lightning, Fluent UI и Fusion Design. Компоненты красивые, но по факту это просто UI-кирпичики. Всю бизнес-логику, связи между сущностями, обработку данных всё равно пишешь сам. Хотели сэкономить время, а получили “ты теперь ещё и архитектурой займись”.

React-Admin показался перспективным. Но мы быстро поняли, что он хочет, чтобы ты делал вещи его способом. А мы хотели делать их по-своему. Онбординг тяжёлый, кастомизация сложная, UI на любителя. Как часто бывает: сначала кажется, что ты взял инструмент, а потом он берёт тебя.

Мы поняли: компромиссы – это медленно

Ни одно из решений не дало нужного нам баланса:

  • быстро поднять админку

  • без боли кастомизировать под проект

  • не увязнуть в чужих ограничениях

  • не затащить в проект тонну лишнего кода.

Тогда и родилась мысль: «Окей, а если сделать своё? Но только по уму. Без оверинжиниринга, зато с учётом всего, что нас бесило раньше.»

Так родился Admiral.

А теперь — техподробности, чтобы не думали, что мы тут пилили кнопку «войти»

Admiral – это небольшой, но крепкий фреймворк для сборки админок на React + TypeScript.

Он не тащит за собой монолит, не требует магии и лишней философии. Это скорее набор умных заготовок, который можно быстро натянуть на любой REST-бэкенд.

Что под капотом:

  • Готовые компоненты для CRUD, с возможностью их переопределения (если у вас есть душевная боль, которую хочется выразить в форме таблички)

  • Поддержка тем и стилизация под бренд клиента (даже если у него логотип Comic Sans)

  • Локализация без боли – используем i18next

  • Респонсив – работает не только на 1440px

  • Всё это в одной связке, без лишних зависимостей и свистелок.

Мы не делали MVP за выходные. Это заняло год и ~700 часов. Потихоньку вытаскивали повторяющиеся куски, оборачивали в компоненты, добавляли конфиги, писали доку.

Теперь Admiral работает в проде уже в 10+ проектах и каждый раз экономит нам часы, нервы и нецензурщину в коде.

TL;DR

Если вам каждый раз приходится собирать админку заново, у нас для вас есть подарок.

Admiral: https://github.com/dev-family/admiral

Мы будем рады фидбеку – как конструктиву, так и язвительным комментариям (всё-таки Хабр). Залетайте, пробуйте, кастомизируйте.

Может, пора перестать мириться с костылями?

Комментарии (1)


  1. cpud47
    17.06.2025 16:52

    Не очень понял, чем ваше решение лучше альтернатив (того же RA). Всё же, если и делать анонс, то хотя бы покажите это решение (showcase), чем оно хорошо. Пока выглядит как локальная либо для решения конкретно ваших проблем.

    Например, беглый просмотр вызвал вопросы:

    1. Зачем-то полезли в аутентификацию и прибили гвоздями к своей самописной либе. Более того, требуете хранить токен в localStorage (что как бы не очень затея)

    2. Все также нет возможности кастомизировать ui (ну кроме css - но это везде)

    3. Требуете запуск в корне приложения (что если я хочу админку как часть моего приложения)

    4. По сути, требуете фиксированную структуру урл. Даже пример делаете на своём апи, а не на каком-то публичном.

    И это я даже не начал смотреть на собственном основной функционал - уверен, там тоже полезут вопросы.

    Короче, выглядит как банальный NIH