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) - 💡 Публічна документація архітектурних патернів для зовнішніх розробників