Skip to content

Админка #120

@fenok

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions