Руководство по созданию модулей

Редактор Модулей — это конструктор, позволяющий создать собственные разделы для вашего проекта. Персонажи, расы, магические системы, города, оружие, рецепты — вы можете создать модуль для чего угодно и полностью настроить его под свои задачи: вкладки, поля, внешний вид, AI-шаблоны и автоматические связи.

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

Основное

Название, иконка, цвет и группа модуля в боковом меню

Вкладки и поля

Структура данных: создавайте вкладки и добавляйте 12 типов полей

Оформление

Визуальный стиль: выбор макета, бейджи, превью, изображения

AI-генерация

Шаблоны и контекст для автоматической генерации контента

Свой CSS

Кастомизация внешнего вида модуля через собственные стили

Автоматизации

Связи между модулями: автоматическое создание и обновление записей

Основные настройки

При создании нового модуля первым делом вы заполняете раздел «Основное». Эти параметры определяют, как модуль будет выглядеть в боковом меню и как он будет идентифицироваться в системе.

Параметр Описание Пример
Название Отображаемое имя модуля в боковом меню и заголовках Персонажи, Оружие, Рецепты
Домен Уникальный системный ключ (латиница, без пробелов). Генерируется автоматически из названия, но может быть изменён characters, weapons
Иконка Иконка из библиотеки Lucide, отображается в меню. Доступно более 200 иконок sword, flask-conical
Цвет Акцентный цвет модуля для визуального различия в сайдбаре #ef4444, #3b82f6
Описание Краткое описание модуля (опционально). Отображается в подсказке Все персонажи мира
Группа в сайдбаре К какой группе отнести модуль в меню Создание мира, Персонажи, Написание, Пользовательские
Порядок сортировки Числовой порядок внутри группы (меньше = выше) 10, 50, 100
Домен нельзя изменить после создания модуля, так как он используется как идентификатор в базе данных и связях между модулями. Выбирайте его осознанно.

Вкладки и поля

Каждый модуль содержит одну или несколько вкладок. Вкладка — это категория данных, а внутри неё располагаются поля, определяющие, какую информацию можно ввести.

Вкладки

Вкладки позволяют логически разделить данные. Например, модуль «Персонажи» может содержать вкладки:

  • Основные — имя, возраст, раса, класс
  • Внешность — рост, телосложение, цвет глаз, особые приметы
  • Биография — история, мотивация, связи
  • Способности — навыки, магия, боевые стили

Параметры вкладки:

Параметр Описание
Ключ Системный идентификатор вкладки (латиница)
Название Отображаемое название
Иконка Lucide-иконка для вкладки
AI-шаблон Какой шаблон использовать при AI-генерации (см. раздел AI)
AI-контекст Дополнительный текст-подсказка для AI
Поля внутри вкладки поддерживают перетаскивание (drag-and-drop). Перетащите поле за ручку, чтобы изменить порядок.

Поля

Каждое поле имеет следующие свойства:

Свойство Описание
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) — текст, который видит пользователь

Пример для поля «Стихия»:

value: firelabel: Огонь value: waterlabel: Вода value: earthlabel: Земля value: airlabel: Воздух

Поле типа relation

Поле связи позволяет привязать запись текущего модуля к записи другого модуля. При настройке указывается целевой домен и вкладка через разделитель ::.

// Формат: домен::вкладка Связать с: characters::items // Ссылка на персонажей Связать с: factions::items // Ссылка на фракции Связать с: cities::items // Ссылка на города

Поле типа range

Ползунок позволяет пользователю выбрать число в заданных границах. Укажите минимальное, максимальное значение и шаг.

min: 1 max: 100 step: 1 // Уровень силы: 1–100 min: 0 max: 10 step: 0.5 // Рейтинг: 0–10 с шагом 0.5

Оформление

Раздел «Оформление» определяет, как записи модуля отображаются в списке (на основной панели). Здесь вы можете выбрать макет, указать, какие поля выводить, и даже создать свой 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. Используйте двойные фигурные скобки для подстановки значений полей:

<div style="display:flex;gap:12px"> <img src="{{avatar}}" style="width:48px;height:48px;border-radius:50%"> <div> <strong>{{name}}</strong> <p>{{title}} · {{race}}</p> </div> </div>
ID полей указываются без пробелов: {{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, что именно представляет собой данная вкладка и какие данные ожидаются. Этот текст включается в промпт при генерации.

// Пример AI-контекста для вкладки «Способности» в модуле Персонажей: Эта вкладка содержит боевые и магические способности персонажа. Учитывай класс персонажа (воин, маг, вор) и его уровень. Способности должны быть сбалансированы — нельзя давать всемогущие навыки. Формат: название способности, описание, тип (активная/пассивная), перезарядка.
Совет: Чем подробнее контекст, тем точнее генерация. Указывайте ограничения, формат вывода и специфику вашего мира.

Свой CSS

Раздел «Свой CSS» позволяет полностью изменить внешний вид панели вашего модуля. CSS автоматически изолируется — ваши стили не затронут другие модули.

Как это работает

Все ваши CSS-селекторы оборачиваются в область видимости текущего модуля. Технически это означает, что ваш CSS применяется только внутри [data-active-panel="ваш_домен"].

Доступные селекторы

Селектор Что стилизует
body Фон всей страницы при активном модуле
.ep-card Карточка записи в списке
.ep-content Область контента панели модуля
.modal-overlay .modal-content Модальное окно при редактировании записи

Готовые пресеты

Не хотите писать CSS с нуля? Есть 4 готовых пресета, которые можно применить одним кликом и затем модифицировать:

Базовый

Пустой шаблон с комментариями и готовой структурой селекторов

Свиток / Пергамент

Средневековый стиль с тёплыми коричневыми тонами и золотыми акцентами

Неон / Кибер

Киберпанк-эстетика с свечением, голубыми неоновыми тонами

Минимализм

Чистый тёмный стиль с минимумом декора и акцентами

Пример: стилизация карточек

/* Карточки в стиле пергамента */ .ep-card { background: #1a1208; border: 1px solid #3d2e10; border-radius: 4px; box-shadow: inset 0 0 20px rgba(139, 90, 20, 0.1); } .ep-card:hover { border-color: #8b6914; box-shadow: 0 0 12px rgba(139, 105, 20, 0.3); } /* Заголовок карточки */ .ep-card h3 { color: #d4a844; font-family: serif; }

Живой предпросмотр

При вводе CSS справа от текстового поля отображается живой предпросмотр с примерами карточек и формы. Изменения видны мгновенно — экспериментируйте!

Ограничение: CSS-переменные (var(--accent) и т. д.) доступны по умолчанию. Однако избегайте стилизации элементов за пределами панели модуля. Ваш CSS автоматически изолируется.

Автоматизации (Weaving)

Система автоматизаций «Weaving» позволяет связать модули между собой. При создании или обновлении записи в одном модуле автоматически создаётся или обновляется запись в другом.

Когда это полезно

  • Персонаж → Фракция — при создании персонажа автоматически добавить его в список участников фракции
  • Город → Карта мира — при создании города добавить метку на карте
  • Заклинание → Персонаж — при создании заклинания привязать его к изучившему персонажу
  • Событие → Хронология — при добавлении события обновить хронологическую шкалу

Структура правила

Каждое правило автоматизации содержит:

Параметр Описание
Название Человеко-читаемое описание правила
Триггер Когда срабатывает: on_create (при создании записи) или on_update (при редактировании)
Исходная вкладка Из какой вкладки текущего модуля брать данные (или «Все вкладки»)
Целевой модуль В какой модуль отправить данные
Целевая вкладка В какую вкладку целевого модуля записать
Маппинг полей Соответствие полей: какое поле источника → какое поле приёмника
Включено Переключатель для временного отключения правила

Маппинг полей

Маппинг определяет, какие данные куда передать. Для этого используется шаблонный синтаксис с фигурными скобками:

// Прямая привязка поля: name{name} // Копировать имя из источника origin{city_name} // Подставить название города // Комбинация полей и текста: title{name} из {city} // «Артём из Столицы» // Статическое значение: statusНовый участник // Всегда подставляется этот текст

Пример: автосоздание записи в фракции

Допустим, у вас есть модуль «Персонажи» с полями name, race, faction и модуль «Фракции» с вкладкой «Участники» (поля: member_name, member_race, role).

Правило: Добавить персонажа во фракцию Триггер: on_create Вкладка: Все Цель: factions → members Маппинг: member_name{name} member_race{race} roleРядовой
Подсказка: При настройке маппинга в текстовое поле встроен автокомплит — начните вводить {, и появится список доступных полей исходного модуля.

Советы и лучшие практики

  • Начинайте с малого — создайте одну вкладку с 3–5 полями, убедитесь, что всё работает, затем расширяйте
  • Используйте осмысленные ID полейbirth_year лучше, чем field1. Эти ID используются в шаблонах и автоматизациях
  • Выбирайте правильный AI-шаблон — для персонажей шаблон character даст лучший результат, чем freeform
  • Пишите подробный AI-контекст — упоминайте специфику мира, ограничения и ожидаемый формат данных
  • Badge-поля для быстрого обзора — укажите 1–3 ключевых поля как badge, чтобы видеть суть записи прямо в списке
  • Тестируйте автоматизации — создайте тестовую запись и убедитесь, что данные передаются корректно, прежде чем полагаться на них
  • CSS-пресеты как отправная точка — примените пресет «Свиток» или «Неон», затем подгоните под свой стиль
  • Relation-поля для связей — используйте тип relation для создания перекрёстных ссылок между модулями, вместо того чтобы дублировать данные
  • Поле image для обложек — добавьте поле с типом image и укажите его в настройках оформления как «Поле изображения», чтобы карточки отображались с картинкой
Готовы? Откройте Студию, выберите проект и нажмите «Создать модуль» в панели управления модулями. Удачного творчества!