Skip to content

Админка #120

Description

@fenok

Нужно решить, что мы используем в качестве админки:

  • Самописное решение
  • react-admin
  • другое готовое решение

Кажется, самое подходящее - react-admin. Проблемы с react-admin:

  • Отсутствие типов. Сейчас react-admin переписывается на TS, судя по прогрессу, ~через год типы появятся. Migration status. Кажется, можно описывать необходимые части вручную, а потом просто перейти на официальные типы.
  • Жесткие требования к Graphql схеме. Должна быть единообразная пагинация, сортировка и фильтрация, должно быть множественное получение и удаление сущностей. Это решается стандартизацией схемы. Приблизительный живой вариант. Спецификация. Кроме того, даже при единообразной схеме описание всех возможных операций довольно вербозное.
  • Непонятно, что делать со множественными связями (например, когда у статьи есть несколько тегов). react-admin предполагает, что id тэгов будут лежать в массиве (tagIds: [1,2,3]), но в graphql удобнее передавать их массивом объектов (tags: [{id: 1}, {id: 2}, {id: 3}]). Это решается заменой соответствующих компонентов react-admin на самописные (надо писать). Кажется, такой компонент всего один.
  • Встроенный WYSIWYG (Quill) плохо поддается кастомизации. Решается заменой (на CKEditor?). Нужно решить, на что заменять и делать ли это заранее (в бойлерплейте).
  • Не работает HMR Support HMR for reducers marmelab/react-admin#495

Вопросы с react-admin:

  • Как добавлять его в бойлерплейт? Как отдельный проект или как модуль фронтенда? Кажется, удобнее второе.

Плюсы админки как модуля фронта:

  • Вся инфраструктура едина с фронтом (не надо поддерживать два инстанса бойлерплейта).
  • Можно использовать common компоненты, хуки, данные и т.п.
  • Легко встраивается и не раздувает бандл благодаря code splitting.

Минусы админки как модуля фронта:

  • Нужно дополнительно учитывать /admin при настройке nginx.
  • Нельзя (сложно?) сделать разные эндпоинты (схемы) для админки и фронта.
  • Нельзя деплоить админку отдельно, только вместе с фронтом.

Metadata

Metadata

Assignees

No one assigned

    Labels

    frontendquestionFurther information is requested

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions