Перейти до змісту

ESWF — Extensible System Web Framework

Коротко: ESWF — це фреймворк (стек + архітектурні патерни + базові модулі), за допомогою якого будуються конкретні бізнес-продукти. Головний продукт на базі ESWF — DOP.


1. Що таке ESWF

ESWF — це набір узгоджених рішень на рівні:

  • Стеку технологій — Django 5 + DRF + Channels (backend), React 19 + Mantine 8 + Vite (frontend), WatermelonDB (mobile offline).
  • Архітектурних патернів — multi-tenancy, abstract model hierarchy, metadata-driven UI, plugin system, dual-currency accounting.
  • Базових (ядрових) модулівcore, essentials (довідники + документи + регістри), які використовуються у будь-якому продукті.
  • Інфраструктури — лаунчери, білд-пайплайни, Electron-обгортка, деплой-скрипти.

Мета: мінімізувати час від ідеї до робочого модульного ERP-подібного продукту.


2. З чого складається

Шар Що входить Документація
Architecture Financial Dimensions (D365-style), план рахунків PCG, аудит architecture/
Backend Django 5 + DRF + Channels, universal CRUD, entity registry infrastructure/backend
Frontend apps Portal, News, DOP-app, Shop, Mobile Driver/Sales frontends/
Infrastructure Launchers, build pipeline, plugin system infrastructure/build
Plugin system Еталонна інструкція створення платного плагіну plugin-instruction

3. ESWF vs DOP

Аспект ESWF DOP
Що це Фреймворк (технологія) Продукт (рішення)
Аудиторія Розробники та інтегратори Бізнес-користувачі
Ціль Швидка розробка ERP-подібних систем Digital Operations Platform
Артефакти Код, патерни, base models, launchers Модулі (горизонтальні + вертикальні) + конфігурації

На одному ESWF можна побудувати кілька різних продуктів. DOP — перший та основний.


4. Ключові патерни фреймворку

Multi-tenancy

Всі бізнес-моделі наслідують TenantAwareModel — автоматична фільтрація за tenant_id через middleware.

Абстрактна ієрархія моделей

TenantAwareModel
├── MasterDataModel          # довідники (з deletion_mark)
│   └── HierarchicalMasterDataModel
├── TransactionModel         # документи (draft → posted → marked)
└── RegisterModel            # облікові регістри

Детальніше: Data Model Overview — крос-аппові FK, posting bridge (документ ↔ проводка), реєстри, multi-ledger.

Metadata-driven UI

EntityRegistry + UniversalViewSet дають CRUD для будь-якої зареєстрованої моделі без написання окремих views. Frontend читає метадані через OPTIONS і генерує форми автоматично.

Plugin system

Змінна оточення ESWF_PLUGINS керує підключенням модулів (default: "*"). Платні плагіни підключаються через ActivationCode.

Dual-currency accounting

Кожна фінансова операція зберігається у двох валютах (документа + функціональна) — для України це UAH + вихідна валюта контракту.


5. Роадмап розвитку ESWF

  • ⏳ Винести core + essentials у окремий PyPI-пакет (щоб нові продукти підключали через pip install eswf-core)
  • ⏳ Витягнути spread-sheet template engine (fortune-sheet) у окремий npm-пакет
  • 💡 Генератор нових модулів (CLI: eswf generate module crm)
  • 💡 Публічна документація архітектурних патернів для зовнішніх розробників

Пов'язане