Руководство по созданию модулей
Модуль состоит из нескольких уровней настройки, каждый из которых описан ниже.
Основное
Название, иконка, цвет и группа модуля в боковом меню
Вкладки и поля
Структура данных: создавайте вкладки и добавляйте 12 типов полей
Оформление
Визуальный стиль: выбор макета, бейджи, превью, изображения
AI-генерация
Шаблоны и контекст для автоматической генерации контента
Свой CSS
Кастомизация внешнего вида модуля через собственные стили
Автоматизации
Связи между модулями: автоматическое создание и обновление записей
Основные настройки
При создании нового модуля первым делом вы заполняете раздел «Основное». Эти параметры определяют, как модуль будет выглядеть в боковом меню и как он будет идентифицироваться в системе.
| Параметр | Описание | Пример |
|---|---|---|
| Название | Отображаемое имя модуля в боковом меню и заголовках | Персонажи, Оружие, Рецепты |
| Домен | Уникальный системный ключ (латиница, без пробелов). Генерируется автоматически из названия, но может быть изменён | characters, weapons |
| Иконка | Иконка из библиотеки Lucide, отображается в меню. Доступно более 200 иконок | sword, flask-conical |
| Цвет | Акцентный цвет модуля для визуального различия в сайдбаре | #ef4444, #3b82f6 |
| Описание | Краткое описание модуля (опционально). Отображается в подсказке | Все персонажи мира |
| Группа в сайдбаре | К какой группе отнести модуль в меню | Создание мира, Персонажи, Написание, Пользовательские |
| Порядок сортировки | Числовой порядок внутри группы (меньше = выше) | 10, 50, 100 |
Вкладки и поля
Каждый модуль содержит одну или несколько вкладок. Вкладка — это категория данных, а внутри неё располагаются поля, определяющие, какую информацию можно ввести.
Вкладки
Вкладки позволяют логически разделить данные. Например, модуль «Персонажи» может содержать вкладки:
- Основные — имя, возраст, раса, класс
- Внешность — рост, телосложение, цвет глаз, особые приметы
- Биография — история, мотивация, связи
- Способности — навыки, магия, боевые стили
Параметры вкладки:
| Параметр | Описание |
|---|---|
| Ключ | Системный идентификатор вкладки (латиница) |
| Название | Отображаемое название |
| Иконка | Lucide-иконка для вкладки |
| AI-шаблон | Какой шаблон использовать при AI-генерации (см. раздел AI) |
| AI-контекст | Дополнительный текст-подсказка для AI |
Поля
Каждое поле имеет следующие свойства:
| Свойство | Описание |
|---|---|
| ID | Уникальный идентификатор поля (латиница). Используется в шаблонах и автоматизациях |
| Название | Видимая подпись поля |
| Тип | Один из 12 типов (см. ниже) |
| Placeholder | Подсказка внутри пустого поля |
| Обязательное | Если включено, запись нельзя сохранить без заполнения этого поля |
Типы полей
Доступно 12 типов полей. Каждый тип определяет, какой вид интерфейса получит пользователь при заполнении данных.
| Тип | Описание | Доп. настройки |
|---|---|---|
text |
Однострочное текстовое поле | placeholder |
textarea |
Многострочное текстовое поле для длинных описаний | placeholder |
number |
Числовое поле | placeholder |
select |
Выпадающий список с одним выбором | Список опций (значение + подпись) |
multi-select |
Выпадающий список с несколькими выборами | Список опций (значение + подпись) |
list |
Поле-тегов: вводите значения и нажимайте Enter для добавления | — |
relation |
Ссылка на запись из другого модуля. Позволяет создавать связи между сущностями | Целевой модуль и вкладка (domain::tab) |
toggle |
Переключатель (да/нет) | — |
color |
Выбор цвета через палитру | — |
range |
Ползунок для выбора числа в заданном диапазоне | min, max, step |
date |
Выбор даты через календарь | — |
image |
Поле для загрузки или указания URL изображения | — |
Поле типа select / multi-select
Для этих полей необходимо задать список опций. Каждая опция состоит из двух частей:
- Значение (value) — внутренний ключ, используемый в данных и автоматизациях
- Подпись (label) — текст, который видит пользователь
Пример для поля «Стихия»:
Поле типа relation
Поле связи позволяет привязать запись текущего модуля к записи другого модуля. При настройке
указывается целевой домен и вкладка через разделитель ::.
Поле типа range
Ползунок позволяет пользователю выбрать число в заданных границах. Укажите минимальное, максимальное значение и шаг.
Оформление
Раздел «Оформление» определяет, как записи модуля отображаются в списке (на основной панели). Здесь вы можете выбрать макет, указать, какие поля выводить, и даже создать свой HTML-шаблон карточки.
Макеты (layout)
Доступно 6 вариантов отображения списка записей:
cards
Сетка карточек — стандартный вид для большинства модулей. Каждая запись — отдельная карточка с заголовком, бейджами и превью
list
Компактный список — записи расположены вертикально, подходит для длинных списков
grid
Гибкая сетка — адаптивное расположение элементов
table
Табличный вид — столбцы и строки, удобно для структурированных данных
masonry
Мозаика — карточки разной высоты, как Pinterest. Хорошо для контента с изображениями
timeline
Хронология — вертикальная шкала времени, идеально для событий и эпох
Настройки отображения
| Параметр | Описание | Формат |
|---|---|---|
| Badge-поля | Поля, отображаемые как цветные бейджи (теги) на карточке | ID полей через запятую: element, rank |
| Preview-поля | Поля, содержимое которых выводится как текст превью под заголовком | ID полей через запятую: description |
| Поле изображения | Поле, содержащее URL картинки для отображения на карточке | ID одного поля: avatar |
| Поле цвета | Поле с цветом, используемое для акцентного оформления карточки | ID одного поля: accent_color |
| Свой шаблон | Пользовательский HTML-шаблон карточки с подстановками | Mustache-синтаксис: {{field_id}} |
Пользовательский шаблон карточки
Если стандартные карточки не устраивают, вы можете написать свой HTML. Используйте двойные фигурные скобки для подстановки значений полей:
{{name}}, {{birth_year}}. Регистр
имеет значение — {{Name}} не сработает, если поле называется name.
AI-генерация
Каждая вкладка модуля может использовать AI для автоматической генерации контента. Настройка AI происходит в разделе «AI-генерация» редактора модуля.
AI-шаблон
Шаблон определяет стиль и структуру генерации. Выберите один из 9 вариантов:
| Шаблон | Описание | Когда использовать |
|---|---|---|
freeform |
Свободная генерация — AI сам определяет структуру на основе полей вкладки | Подходит для большинства случаев. Используется по умолчанию |
character |
Генерация персонажа — оптимизирован для имени, внешности, биографии, характера | Модули персонажей, NPC |
race |
Генерация расы/вида — культура, особенности, среда обитания | Расы, виды, народы |
magic_system |
Магическая система — типы магии, правила, ограничения | Магия, заклинания, способности |
culture_item |
Культурный объект — традиции, обычаи, искусство | Культуры, традиции, ремёсла |
religion |
Религия/культ — верования, ритуалы, божества, иерархия | Религии, культы, пантеон |
timeline_era |
Историческая эпоха — ключевые события, технологии, социальный уклад | Эпохи и периоды в хронологии |
timeline_event |
Событие — дата, участники, последствия | Отдельные события на временной шкале |
custom |
Полностью ручной шаблон — AI будет опираться только на ваш контекст | Нестандартные модули, когда готовые шаблоны не подходят |
AI-контекст
Текстовое поле, в котором вы описываете для AI, что именно представляет собой данная вкладка и какие данные ожидаются. Этот текст включается в промпт при генерации.
Свой CSS
Раздел «Свой CSS» позволяет полностью изменить внешний вид панели вашего модуля. CSS автоматически изолируется — ваши стили не затронут другие модули.
Как это работает
Все ваши CSS-селекторы оборачиваются в область видимости текущего модуля. Технически это означает,
что ваш CSS применяется только внутри [data-active-panel="ваш_домен"].
Доступные селекторы
| Селектор | Что стилизует |
|---|---|
body |
Фон всей страницы при активном модуле |
.ep-card |
Карточка записи в списке |
.ep-content |
Область контента панели модуля |
.modal-overlay .modal-content |
Модальное окно при редактировании записи |
Готовые пресеты
Не хотите писать CSS с нуля? Есть 4 готовых пресета, которые можно применить одним кликом и затем модифицировать:
Базовый
Пустой шаблон с комментариями и готовой структурой селекторов
Свиток / Пергамент
Средневековый стиль с тёплыми коричневыми тонами и золотыми акцентами
Неон / Кибер
Киберпанк-эстетика с свечением, голубыми неоновыми тонами
Минимализм
Чистый тёмный стиль с минимумом декора и акцентами
Пример: стилизация карточек
Живой предпросмотр
При вводе CSS справа от текстового поля отображается живой предпросмотр с примерами карточек и формы. Изменения видны мгновенно — экспериментируйте!
var(--accent) и т. д.) доступны по
умолчанию. Однако избегайте стилизации элементов за пределами панели модуля. Ваш CSS
автоматически изолируется.
Автоматизации (Weaving)
Система автоматизаций «Weaving» позволяет связать модули между собой. При создании или обновлении записи в одном модуле автоматически создаётся или обновляется запись в другом.
Когда это полезно
- Персонаж → Фракция — при создании персонажа автоматически добавить его в список участников фракции
- Город → Карта мира — при создании города добавить метку на карте
- Заклинание → Персонаж — при создании заклинания привязать его к изучившему персонажу
- Событие → Хронология — при добавлении события обновить хронологическую шкалу
Структура правила
Каждое правило автоматизации содержит:
| Параметр | Описание |
|---|---|
| Название | Человеко-читаемое описание правила |
| Триггер | Когда срабатывает: on_create (при создании записи) или
on_update (при редактировании)
|
| Исходная вкладка | Из какой вкладки текущего модуля брать данные (или «Все вкладки») |
| Целевой модуль | В какой модуль отправить данные |
| Целевая вкладка | В какую вкладку целевого модуля записать |
| Маппинг полей | Соответствие полей: какое поле источника → какое поле приёмника |
| Включено | Переключатель для временного отключения правила |
Маппинг полей
Маппинг определяет, какие данные куда передать. Для этого используется шаблонный синтаксис с фигурными скобками:
Пример: автосоздание записи в фракции
Допустим, у вас есть модуль «Персонажи» с полями name, race,
faction и модуль «Фракции» с вкладкой «Участники» (поля: member_name,
member_race, role).
{, и появится список доступных полей исходного модуля.
Советы и лучшие практики
- Начинайте с малого — создайте одну вкладку с 3–5 полями, убедитесь, что всё работает, затем расширяйте
- Используйте осмысленные ID полей —
birth_yearлучше, чемfield1. Эти ID используются в шаблонах и автоматизациях - Выбирайте правильный AI-шаблон — для персонажей шаблон
characterдаст лучший результат, чемfreeform - Пишите подробный AI-контекст — упоминайте специфику мира, ограничения и ожидаемый формат данных
- Badge-поля для быстрого обзора — укажите 1–3 ключевых поля как badge, чтобы видеть суть записи прямо в списке
- Тестируйте автоматизации — создайте тестовую запись и убедитесь, что данные передаются корректно, прежде чем полагаться на них
- CSS-пресеты как отправная точка — примените пресет «Свиток» или «Неон», затем подгоните под свой стиль
- Relation-поля для связей — используйте тип
relationдля создания перекрёстных ссылок между модулями, вместо того чтобы дублировать данные - Поле image для обложек — добавьте поле с типом
imageи укажите его в настройках оформления как «Поле изображения», чтобы карточки отображались с картинкой