Migrate your PulseX V2 liquidity positions to 9mm V3 with full-range liquidity in a single transaction.
π Live App: https://migrate.9mm.pro
- π One-Click Migration - Move from V2 to V3 in a single transaction
- π¦ Batch Migration - Migrate multiple positions at once
- π― Full-Range Liquidity - Automatic tick range calculation
- π° Zero Platform Fees - Only pay gas
- π Secure - Audited smart contracts
- β‘ Fast - Optimized for PulseChain
β 10 Migration Paths (V2 β V3)
- pHEX/WPLS (V1 & V2)
- PLSX/WPLS (V1 & V2)
- WPLS/eDAI (V1 & V2)
- pHEX/eDAI (V2)
- eWETH/WPLS (V1)
- INC/WPLS (V2)
- INC/PLSX (V2)
- Migrator:
0xcD2f7f58Fff604B460c02E08b542de75549177c4 - 9mm V3 Factory:
0xe50DbDC88E87a2C92984d794bcF3D1d76f619C68 - Position Manager:
0xCC05bf158202b4F461Ede8843d76dcd7Bbad07f2
- Framework: Next.js 16 (React 19)
- Web3: wagmi v2 + viem
- Wallet: RainbowKit
- Styling: Tailwind CSS v4
- Node.js 20+
- npm or yarn
- MetaMask or compatible wallet
# Install dependencies
npm install
# Set up environment
cp .env.local.example .env.local
# Edit .env.local with your WalletConnect Project ID
# Run dev server
npm run devVisit http://localhost:3000
npm run build
npm startdocker build -t spiritmonkey/pulsex-migrator:latest .docker run -p 3000:3000 spiritmonkey/pulsex-migrator:latest# Build and push to Docker Hub
./scripts/build-amd64.sh
# Deploy to Kubernetes
kubectl apply -f k8s/
# Check deployment
kubectl get pods -n ninemm-frontendThe app is deployed at: https://migrate.9mm.pro
For detailed Kubernetes documentation, see KUBERNETES.md
# WalletConnect Project ID (required)
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_id
# PulseChain RPC (optional - defaults to public RPC)
NEXT_PUBLIC_PULSECHAIN_RPC=https://rpc.pulsechain.comThe following secrets must be configured in Kubernetes:
DOCKERHUB_TOKEN- Docker Hub access tokenDOCKERHUB_USERNAME- Docker Hub username (spiritmonkey)KUBECONFIG- Kubernetes cluster configuration (base64 encoded)
Every push to main triggers:
- β Docker image build (AMD64)
- β Push to Docker Hub
- β Kubernetes deployment restart
- β Rolling update (zero downtime)
See .github/workflows/deploy.yml
# Trigger via GitHub Actions UI
# Or push to main branch
git push origin mainkubectl logs -f deployment/migrator -n ninemm-frontendkubectl get all -n ninemm-frontend -l app=pulsex-migrator# Manual scaling
kubectl scale deployment migrator -n ninemm-frontend --replicas=5
# Auto-scaling (HPA configured for 2-10 replicas)
kubectl get hpa -n ninemm-frontendAll token and LP addresses are verified using Foundry tests:
cd foundry-contracts
forge test --match-path test/VerifyAddresses.t.sol -vv --fork-url https://pulsechain.publicnode.comSee ADDRESS_VERIFICATION_REPORT.md for details.
- β Modified UniswapV3 migrator for PulseX compatibility
- β
Handles PulseX's unique
burn(address, address)signature - β All addresses verified on-chain
- β React 19.2.1 (patched for React2Shell vulnerability)
- β Next.js 16.0.10 (latest stable)
- β SSL/TLS via Cloudflare
- β Rate limiting enabled
- KUBERNETES.md - Kubernetes deployment guide
- DOCKER_BUILD.md - Docker build options
- ADDRESS_VERIFICATION_REPORT.md - Address verification
- VERIFIED_ADDRESSES.md - Quick address reference
- k8s/README.md - Detailed K8s documentation
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE file for details
- Live App: https://migrate.9mm.pro
- 9mm DEX: https://dex.9mm.pro
- PulseChain: https://pulsechain.com
- Docs: https://docs.9mm.pro
Built with β€οΈ for the PulseChain community