Web GUI for editing VirtoCommerce deployment manifests (packages.json).
Load a manifest from URL or paste it, edit module versions and sources visually, copy the result.
Open app | Open with vcst-dev manifest (example)
Loading
- Load manifest from URL or paste JSON
- URL history for quick access
- Shareable
?manifest-url=deep links
Editing
- Edit platform settings and module versions
- Add or remove modules
- Version dropdown with available releases from GitHub
- Pick a PR to get pre-release artifact version
- Move modules between Azure Blob and GitHub Releases
- Update all GitHub modules to latest versions in one click
Tracking
- Real-time diff sidebar with change counter
- Per-module undo (inline and in sidebar)
- Global reset
- Collapsible module sections
- Validation with error count and click-to-iterate
Output
- JSON preview with syntax highlighting
- Copy to clipboard
- Optional alphabetical sorting
UI
- Light / Dark theme with animated transitions
- Toast notifications
- Rate limit handling with GitHub token support
Each module ID (e.g. VirtoCommerce.Orders) maps to a GitHub repo for fetching tags and PRs:
- Check explicit mapping in
src/config/moduleRepoMapping.ts - Fall back to convention:
VirtoCommerce.Foo->vc-module-foo
Convention examples (no mapping needed):
| Module ID | Repo |
|---|---|
VirtoCommerce.Catalog |
vc-module-catalog |
VirtoCommerce.Customer |
vc-module-customer |
VirtoCommerce.Marketing |
vc-module-marketing |
Explicit overrides:
| Module ID | Repo | Why |
|---|---|---|
VirtoCommerce.Orders |
vc-module-order |
Singular |
VirtoCommerce.Notifications |
vc-module-notification |
Singular |
VirtoCommerce.AvalaraTax |
vc-module-avatax |
Different name |
VirtoCommerce.PageBuilderModule |
page-builder |
No prefix |
VirtoCommerce.XCMS |
vc-module-x-cms |
Acronym |
| ... | Full list |
If it follows the convention (VirtoCommerce.Foo -> vc-module-foo) — works automatically.
Otherwise add one line to src/config/moduleRepoMapping.ts:
'VirtoCommerce.NewModule': 'vc-module-actual-repo-name',Without authentication the GitHub API allows 60 requests/hour. Setting a personal token raises this to 5,000 req/hour.
How to create a token:
- Go to github.com/settings/tokens?type=beta
- Create a fine-grained token scoped to your organization
- No extra permissions needed — default (public read) is sufficient
- Set expiration to 366 days or less (organization policy may enforce this)
- Paste the token in the app sidebar
Security notes:
- The token is stored in your browser's
localStorage— it never leaves your machine and is never sent to any server other thanapi.github.com - Since no extra permissions are granted, the token only provides a higher rate limit for public API calls. Even in the unlikely event of an XSS compromise, the exposure is minimal
- You can remove the token at any time from the sidebar
- For maximum safety, use a dedicated token for this app and revoke it when no longer needed
yarn install
yarn dev # Dev server
yarn build # Production build
yarn test:unit # Run tests
yarn type-check # TypeScript checksrc/
components/ Vue components
composables/ Reactive logic
services/ GitHub API, tag cache
config/ Module repo mapping
utils/ Validation, helpers
types/ TypeScript interfaces
assets/ Design tokens (themes)
Vue 3 + TypeScript + Vite + VueUse
Issues and PRs welcome. For questions or suggestions, email ivan.kalachikov@gmail.com.