A decentralized marketplace for Vultisig plugins, automations, and integrations
- Overview
- Features
- Architecture
- Prerequisites
- Getting Started
- Docker Deployment
- Project Structure
- Development Workflow
The Vultisig Plugin Marketplace is a modern web application built with React, TypeScript, and Vite that serves as the central hub for discovering, installing, and managing Vultisig vault plugins and automations.
This marketplace enables users to:
- Browse and search through available plugins and automations
- Install plugins directly to their Vultisig vault via browser extension
- Manage subscriptions and billing for premium features
- Create custom automation recipes
- Access detailed documentation and FAQs of each plugin
- Frontend Framework: React 18 with TypeScript
- Build Tool: Vite (Fast HMR, optimized builds)
- UI Library: Ant Design (antd) with custom theming
- State Management: React Query (TanStack Query) for server state
- Routing: React Router v6
- Styling: CSS Modules + Ant Design components
- Protocol Buffers: Generated TypeScript types for blockchain policies
- WebAssembly: Integration with wallet-core for cryptographic operations
- Extension Integration: Browser extension communication via postMessage API
- Plugin Discovery: Browse curated plugins with detailed descriptions, ratings, and compatibility info
- One-Click Installation: Seamless installation via Vultisig browser extension
- Recipe Builder: Create custom automation workflows using visual policy builders
- Subscription Management: Flexible billing with trial periods and plan upgrades
- Responsive Design: Mobile-first UI that works on all devices
- Dark Mode Support: Comfortable viewing in any lighting condition
- Secure Authentication: Integration with Vultisig vault for identity verification
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Vultisig Marketplace β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β React UI β β React Query β β Extension β β
β β Components ββββ€ (Cache) ββββ€ Bridge β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β β β β
β βΌ βΌ βΌ β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Ant Design β β API Client β β WebAssemblyβ β
β β Theme β β (Fetch) β β wallet-core β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β β
βββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββ
β Backend API β
β (Verifier) β
βββββββββββββββββββββββ
-
Presentation Layer (
src/pages/,src/components/)- Page-level components and routing
- Reusable UI components
- Layout and navigation structure
-
Business Logic Layer (
src/utils/,src/providers/)- API communication and data fetching
- Extension integration logic
- Policy/recipe serialization with Protocol Buffers
-
State Management
- React Query for server state (caching, refetching)
- React Context for global plugin state
- Local state with useState/useReducer
- Browser Extension: Communication via
window.postMessage(seesrc/utils/extension.ts) - WebAssembly: Wallet operations via
wallet-core.wasm(loaded insrc/main.tsx) - API Backend: RESTful endpoints for plugins, billing, and user data
- Node.js: v18 or higher (see
.nvmrcfor exact version) - Package Manager: npm, yarn, or pnpm
- Git: For version control
- Vultisig Extension: Browser extension must be installed for full functionality
- VS Code: With ESLint and Prettier extensions
- nvm: For Node version management
- Docker: For consistent development environments (optional)
# 1. Clone the repository
git clone https://github.com/vultisig/plugin-marketplace.git
cd plugin-marketplace
# 2. Use correct Node version (if using nvm)
nvm use
# 3. Install dependencies
npm ci
# 4. Copy environment variables
cp .env.example .env
# edit .env as needed
# 5. Run development server
npm run dev# Build and run with environment variables
docker-compose up
# Or build with custom environment variables
VITE_APP_STORE_URL=https://verifier.vultisig.com/ \
VITE_FEE_APP_ID=vultisig-fees-feee \
VITE_RECURRING_SENDS_APP_ID=vultisig-recurring-sends-0000 \
VITE_RECURRING_SWAPS_APP_ID=vultisig-dca-0000 \
VITE_VULTISIG_SERVER=https://api.vultisig.com/ \
docker-compose upThe application will be available at http://localhost:3000
# Build the image
docker build -t vultisig-marketplace:latest .
# Run the container
docker run -p 3000:8080 vultisig-marketplace:latest
# Build with custom environment variables
docker build \
--build-arg VITE_APP_STORE_URL=https://verifier.vultisig.com/ \
--build-arg VITE_FEE_APP_ID=vultisig-fees-feee \
--build-arg VITE_RECURRING_SENDS_APP_ID=vultisig-recurring-sends-0000 \
--build-arg VITE_RECURRING_SWAPS_APP_ID=vultisig-dca-0000 \
--build-arg VITE_VULTISIG_SERVER=https://api.vultisig.com/ \
-t vultisig-marketplace:latest .These variables are compiled into the static build at Docker build time:
| Variable | Default | Description |
|---|---|---|
VITE_APP_STORE_URL |
https://verifier.vultisig.com/ |
Backend API endpoint |
VITE_FEE_APP_ID |
vultisig-fees-feee |
Fee application ID |
VITE_LISTING_PAYMENT_APP_ID |
vultisig-developer-0000 |
Listing payment (developer) app ID |
VITE_RECURRING_SENDS_APP_ID |
vultisig-recurring-sends-0000 |
Recurring sends app ID |
VITE_RECURRING_SWAPS_APP_ID |
vultisig-dca-0000 |
Recurring swaps app ID |
VITE_VULTISIG_SERVER |
https://api.vultisig.com/ |
Vultisig server endpoint |
Note: These are Vite environment variables (prefixed with VITE_) and are baked into the static build. For different environments, build separate Docker images with different values.
plugin-marketplace/
βββ .github/ # GitHub Actions and templates
β βββ PULL_REQUEST_TEMPLATE.md
βββ public/ # Static assets
β βββ vultisig-logo.svg
β βββ favicon.ico
βββ proto/ # Protocol Buffer definitions
β βββ policy.proto
β βββ recipe.proto
βββ src/
β βββ main.tsx # Application entry point
β βββ App.tsx # Root component with routing
β βββ components/ # Reusable UI components
β β βββ Header/
β β βββ Footer/
β β βββ PluginCard/
β β βββ RecipeBuilder/
β βββ pages/ # Route-level page components
β β βββ Home/ # Landing page
β β βββ Apps/ # Plugin marketplace
β β βββ MyApps/ # User's installed plugins
β β βββ Billing/ # Subscription management
β β βββ FAQ/ # Help and documentation
β βββ providers/ # React context providers
β β βββ CoreProvider.tsx # Core app state
β β βββ QueryProvider.tsx # React Query setup
β β βββ ThemeProvider.tsx # Ant Design theme
β βββ utils/ # Utility functions and helpers
β β βββ api.ts # API client and endpoints
β β βββ extension.ts # Extension communication
β β βββ policy.ts # Policy serialization
β β βββ constants.ts # App-wide constants
β βββ types/ # TypeScript type definitions
β βββ hooks/ # Custom React hooks
β βββ styles/ # Global styles and themes
βββ .env.example # Example environment variables
βββ .nvmrc # Node version specification
βββ eslint.config.js # ESLint configuration
βββ tsconfig.json # TypeScript configuration
βββ tsconfig.app.json # App-specific TS config
βββ tsconfig.node.json # Node-specific TS config
βββ vite.config.ts # Vite build configuration
βββ vercel.json # Vercel deployment config
βββ package.json # Dependencies and scripts
βββ README.md # This file
src/main.tsx: Application bootstrap, provider setup, and wasm loadingsrc/App.tsx: Root component with React Router configurationindex.html: HTML template with meta tags and initial loading state
vite.config.ts: Vite build settings, plugins, and optimization (view file)eslint.config.js: Linting rules for code quality (view file)tsconfig.*.json: TypeScript compiler options for different contextsvercel.json: Deployment configuration for Vercel platform (view file)
src/utils/extension.ts: Browser extension communication layersrc/utils/api.ts: Centralized API client with error handlingsrc/providers/CoreProvider.tsx: Global state managementsrc/components/RecipeBuilder/: Visual automation workflow editor
git checkout -b feature/app-rating-system- Edit files in
src/ - Vite will auto-reload changes via HMR
- Check browser console for errors
npm run lint:fix
npm run formatnpm run type-checknpm run testnpm run build
npm run previewgit add .
git commit -m "feat(plugins): add rating system with star component"git push origin feature/plugin-rating-system