A monorepo of open-source Vendure plugins maintained by Uplab, focused on the Ukrainian market: SMS, delivery, payments, fiscalization and exchange rates — plus catalogue tooling for multilingual shops.
All packages are published to npm under the @uplab scope and target Vendure 3.7 and 3.8 (NestJS 11 and 12).
| Package | npm | Description | Vendure |
|---|---|---|---|
@uplab/vendure-plugin-change-history |
Who changed what in the catalogue and when, with before → after values, batches and external sync runs | ^3.7.0 |
|
@uplab/vendure-plugin-exchange-rates |
Exchange rates in any base currency from the ECB, Frankfurter, Monobank, the NBU or your own source, overridable per currency | ^3.7.0 |
|
@uplab/vendure-plugin-nova-poshta |
City and warehouse lookups for checkout through Nova Poshta, in Ukraine and abroad | ^3.7.0 |
|
@uplab/vendure-plugin-turbosms |
Send transactional SMS through TurboSMS | ^3.7.0 |
|
@uplab/vendure-plugin-unified-slug |
One slug per product and collection, identical in every language — server-side and in the dashboard | ^3.7.0 |
Planned, in extraction order: WayForPay, Checkbox fiscalization, Monobank acquiring.
- Node.js 22 LTS (see
.nvmrc; CI also runs 24) - pnpm 11 (
corepack enable)
pnpm install
pnpm build # tsc build of every package — run FIRST (typecheck needs dist/)
pnpm typecheck
pnpm lint
pnpm format:check
pnpm test # unit + e2e (sql.js, no external database needed)
pnpm test:coverage # same, with merged coverage + thresholds
pnpm knip # unused files/exports/dependencies
pnpm check:packages # publint + attw against the packed tarballsMore detail: docs/TESTING.md · docs/PLUGIN-AUTHORING.md · docs/RELEASING.md. Agent-readable repo guide: AGENTS.md.
packages/dev-server is a private workspace package that boots a real Vendure server
with every plugin in this repo registered, backed by SQLite so there is nothing to
provision. It also carries the Vite config for the React dashboard, so dashboard
extensions contributed by any plugin are compiled and served.
pnpm dev # Vendure server on http://localhost:3000
pnpm --filter dev-server dashboard # dashboard dev server on http://localhost:5173Superadmin credentials are superadmin / superadmin.
Copy packages/dev-server/.env.example to packages/dev-server/.env and fill in real
credentials when you want to exercise a plugin against a live vendor API. Without a
.env the plugins run in their dry-run / stub mode.
packages/
dev-server/ # private: Vendure config + dashboard Vite config
vendure-plugin-<name>/ # one publishable package per plugin
src/ # server code, compiled to dist/ by tsc
dashboard/ # optional React dashboard extension, copied to dist/ as .tsx
e2e/ # @vendure/testing e2e specs (sql.js)
README.md CHANGELOG.md
docs/ # releasing, testing, plugin authoring
The package contract every plugin follows lives in docs/PLUGIN-AUTHORING.md.
Fully automated: a changeset per PR → merging to main opens a version PR →
merging that publishes to npm (trusted publishing / OIDC, no tokens), pushes tags
and creates GitHub Releases. Details, one-time setup and the new-package bootstrap:
docs/RELEASING.md.
See CONTRIBUTING.md. Every PR gets installable preview builds via pkg.pr.new.
MIT © Uplab