-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
Description
Нужно решить, что мы используем в качестве админки:
- Самописное решение
- 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.
- Нельзя (сложно?) сделать разные эндпоинты (схемы) для админки и фронта.
- Нельзя деплоить админку отдельно, только вместе с фронтом.