master
Drafter - Редактор шаблонов документов
Drafter - это Electron приложение для редактирования шаблонов документов кооперативов. Приложение работает напрямую с файлами cooptypes, позволяя редактировать context, translations и exampleData.
Возможности
- 📝 Редактирование HTML шаблонов с поддержкой Nunjucks
- 🌐 Управление переводами (i18n)
- 📊 Редактирование примеров данных (object_model)
- 💾 Автоматическое сохранение в файлы cooptypes
- 🔍 Поиск по шаблонам
- 👀 Предварительный просмотр в реальном времени
Установка и запуск
- Установите зависимости:
pnpm install
- Настройте путь в
.envфайле:
cp .env-example .env
Отредактируйте .env:
COOPTYPES_REGISTRY_PATH=../cooptypes/src/cooperative/registry
- Запустите в режиме разработки:
pnpm dev
- Или соберите Electron приложение:
pnpm build
Структура проекта
drafter/
├── src/
│ ├── components/
│ │ ├── TemplatesList.vue # Список шаблонов в левом drawer
│ │ ├── htmlEditor.vue # Редактор HTML
│ │ ├── modelViewer.vue # Редактор данных
│ │ └── htmlPreview.vue # Предварительный просмотр
│ ├── services/
│ │ └── TemplateService.ts # Сервис для работы с cooptypes файлами
│ ├── stores/
│ │ └── store.ts # Pinia store
│ └── layouts/
│ └── MainLayout.vue # Главный layout с drawer
├── src-electron/
│ ├── electron-main.ts # Главный процесс Electron
│ └── electron-preload.ts # Preload скрипт
└── .env # Конфигурация путей
Как использовать
- Выбор шаблона: Используйте левое меню для выбора шаблона из списка
- Редактирование:
- HTML шаблон редактируется в левой колонке
- Данные и переводы - в центральной колонке
- Предварительный просмотр - в правой колонке
- Сохранение: Нажмите кнопку "Сохранить" рядом с шаблоном в списке
- Автосохранение: Изменения сохраняются в
cooptypes/src/cooperative/registry/[template]/index.ts
Формат шаблонов
Шаблоны используют Nunjucks синтаксис:
<div class="digital-document">
<h3>{% trans 'TITLE' %}</h3>
<p>{{ coop.city }}, {{ meet.created_at_day }}</p>
{% for question in questions %}
<p>{{ question.number }}. {{ question.title }}</p>
{% endfor %}
</div>
Структура cooptypes файлов
Каждый файл шаблона содержит:
context- HTML шаблон с Nunjucks разметкойtranslations- Объект с переводами (экспортtranslations)exampleData- Пример данных для рендеринга (экспортexampleData)
Разработка
Для добавления нового шаблона:
- Создайте папку
[id].[Name]/вcooptypes/src/cooperative/registry/ - Добавьте
index.tsфайл с типами и экспортомcontext,translations,exampleData
Технологии
- Vue 3 + TypeScript - фронтенд
- Quasar Framework - UI компоненты
- Electron - десктопное приложение
- Pinia - управление состоянием
- Nunjucks - шаблонизатор
Description
Languages
TypeScript
44.1%
Vue
40.4%
JavaScript
13.5%
HTML
1.1%
SCSS
0.9%