This guide covers deploying OmniPools to production with Flow testnet integration.
OmniPools is deployed as a production-ready application with:
- Flow Testnet: Live blockchain integration with real transactions
- Vercel: Edge-optimized hosting with global CDN
- PWA: Installable mobile app with offline support
- AI Integration: OpenAI-powered pool generation with fallbacks
All contracts successfully deployed to Flow testnet:
| Contract | Address | Status | Purpose | Live Contract |
|---|---|---|---|---|
| Registry | 0x035662afa58bdc22 |
✅ Live | Organization management | View |
| Vaults | 0x035662afa58bdc22 |
✅ Live | Pool creation and payouts | View |
| MockUSDC | 0x035662afa58bdc22 |
✅ Live | Test token for payouts | View |
| DeFiActions | 0x035662afa58bdc22 |
✅ Live | Flow Actions integration | View |
| FungibleTokenConnectors | 0x035662afa58bdc22 |
✅ Live | Token bridging utilities | View |
Example Transaction: 4eca8454117fa8cab85082a7682eaa4fa44d3e8c92b1eccf77581698963103de
- FlowScan: https://testnet.flowscan.io/tx/4eca8454117fa8cab85082a7682eaa4fa44d3e8c92b1eccf77581698963103de
- Action: Added participant "TeamDemo" to vault
- Event:
A.035662afa58bdc22.Vaults.ParticipantAdded - Status: ✅ SEALED (confirmed)
- Address:
0x035662afa58bdc22 - FlowScan: https://testnet.flowscan.org/account/0x035662afa58bdc22
- Balance: 100,000 FLOW
- Deployed Contracts: 5
| Contract | Testnet Address | Purpose |
|---|---|---|
| FungibleToken | 0x9a0766d93b6608b7 |
Token standard interface |
| MetadataViews | 0x631e88ae7f1d7c20 |
NFT metadata standard |
| ViewResolver | 0x631e88ae7f1d7c20 |
Metadata resolution |
# Create testnet deployer account
flow accounts create --network testnet
# → Created: 0x035662afa58bdc22
# Fund via testnet faucet
curl -X POST "https://testnet-faucet.onflow.org/fund-account" \
-H "Content-Type: application/json" \
-d '{"address":"035662afa58bdc22"}'
# → Funded: 100,000 FLOW tokens# Deploy all contracts to testnet
flow project deploy --network testnet
# Output:
# DeFiActions -> 0x035662afa58bdc22 ✅
# FungibleTokenConnectors -> 0x035662afa58bdc22 ✅
# MockUSDC -> 0x035662afa58bdc22 ✅
# Registry -> 0x035662afa58bdc22 ✅
# Vaults -> 0x035662afa58bdc22 ✅
# 🎉 All contracts deployed successfully# Create demo organization
flow transactions send cadence/transactions/tx_create_org.cdc "OmniPools Demo" \
--network testnet --signer deployer
# → Tx: e9e0cf50019cbb4d93138ef3f90e9820c88d08031d4916fa625d21836c850c02
# Setup USDC infrastructure
flow transactions send cadence/transactions/tx_setup_minter.cdc \
--network testnet --signer deployer
# → Tx: 147cd2d1be07c07a5e4de105a20eed2679ac6d38d7d9ac12f70a092c7cf43b16
flow transactions send cadence/transactions/tx_link_usdc_receiver.cdc \
--network testnet --signer deployer
# → Tx: afef29760f895ead5adb2564f6396e1a9187e40a2d6bf836523f243aa2803fcc
# Mint demo USDC
flow transactions send cadence/transactions/tx_mint_or_fund_usdc.cdc \
0x035662afa58bdc22 "5000.00" --network testnet --signer deployer
# → Tx: a8875ed75455d50f552b5f80adc6da8f7a29622598bdb9f3112fa53225eb07f7
# → Minted: 5,000 USDC# Create test vault
flow transactions send cadence/transactions/tx_create_vault.cdc \
--args-json '[
{"type": "Address", "value": "0x035662afa58bdc22"},
{"type": "String", "value": "Demo Production Test"},
{"type": "UInt8", "value": "0"},
{"type": "String", "value": "Production testnet vault for demo"},
{"type": "Optional", "value": null},
{"type": "Optional", "value": null},
{"type": "Optional", "value": null},
{"type": "Array", "value": [{"type": "String", "value": "usdc:flow"}]},
{"type": "Array", "value": [{"type": "String", "value": "usdc:flow"}]},
{"type": "Optional", "value": null},
{"type": "Optional", "value": null}
]' --network testnet --signer deployer
# → Tx: e04439991ef7315759b75b3156c2fba5b4614a7b4412f7f5d554f28da446cbe6
# → Created: Vault ID 1# Verify account and contracts
flow accounts get 035662afa58bdc22 --network testnet
# Query vault details
flow scripts execute cadence/scripts/sc_get_vault.cdc 0x035662afa58bdc22 1 --network testnet
# Check vault summary
flow scripts execute cadence/scripts/sc_get_summary.cdc 0x035662afa58bdc22 1 --network testnet
# Verify USDC balance
flow scripts execute cadence/scripts/sc_get_winner_balance.cdc 0x035662afa58bdc22 --network testnetSet these environment variables in Vercel dashboard:
# Flow Network
NEXT_PUBLIC_FLOW_NETWORK=testnet
NEXT_PUBLIC_FLOW_ACCESS_NODE_TESTNET=https://rest-testnet.onflow.org
# Demo Organization (Testnet Deployer)
NEXT_PUBLIC_DEMO_ORG_ADDRESS=0x035662afa58bdc22
# WalletConnect (Optional)
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=02176f1b2ab20d063240e614c75a4884
# AI Integration (Optional - has fallback)
OPENAI_API_KEY=sk-...
# Production
NODE_ENV=production- Connect Repository: Link GitHub repo to Vercel
- Set Environment Variables: Configure as shown above
- Deploy: Deploy from
mainbranch - Verify PWA: Test manifest at
/manifest.json - Test Flow Integration: Connect wallet and create test pool
The project includes production-optimized configuration:
// next.config.ts
const nextConfig = {
experimental: {
ppr: 'incremental',
},
typescript: {
ignoreBuildErrors: false,
},
eslint: {
ignoreDuringBuilds: false,
},
}- Contracts deployed to testnet with proper addresses
- Cadence 1.0 compliance verified
- FCL configuration for production testnet
- Wallet connection tested with real transactions
- Flow Actions integration for split payouts
- Private keys properly managed (gitignored .pkey files)
- Environment variables for sensitive configuration
- Resource-oriented programming prevents double-spending
- Entitlements protect privileged contract functions
- Audit trail with blockchain transaction logs
- Next.js 15 with optimized builds
- Edge Runtime for global performance
- PWA with service worker for offline support
- Optimized bundle size and loading
- PWA installable on mobile devices
- Touch-friendly UI with 48px minimum touch targets
- Responsive design tested on various screen sizes
- Smooth animations with Framer Motion
- Block explorer integration for transaction verification
- Comprehensive error handling and user feedback
- Console logging for development debugging
- Transaction status tracking and retry logic
All operations verified on Flow testnet:
- Organization Setup: e9e0cf50019cbb4d
- Vault Creation: e04439991ef7315759b75b3156c2fba5b4614a7b4412f7f5d554f28da446cbe6
- USDC Setup: afef29760f895ead
- USDC Minting: a8875ed75455d50f
- Vault ID: 1
- Organization: 0x035662afa58bdc22
- Name: "Demo Production Test"
- Status: Active
- USDC Available: 5,000 USDC for payouts
- Block Explorer: View Account
"Cannot find declaration" errors
- Ensure you're using testnet network in the app
- Verify contract addresses match deployment
- Check that browser cache is cleared
Wallet connection issues
- Use Flow testnet compatible wallets (Blocto, Dev Wallet)
- Ensure wallet is set to testnet network
- Clear browser localStorage if needed
Transaction failures
- Verify account has sufficient FLOW for gas fees
- Check that all contract dependencies are deployed
- Use block explorer to debug transaction details
- Flow Discord: discord.gg/flow
- Documentation: developers.flow.com
- Block Explorer: testnet.flowscan.io
- Faucet: testnet-faucet.onflow.org
Status: 🟢 Production Ready
Last Updated: January 17, 2025
Production Ready: Live Flow testnet deployment