Hunty can be hosted on any Node.js-capable platform, but Vercel is the recommended path for the Next.js web app.
- Create a new Vercel project from the Hunty repository.
- Set the root directory to the web app if you deploy from a monorepo workspace.
- Configure the production environment variables below.
- Deploy the project and assign a custom domain once the first build succeeds.
At minimum, configure the following values in Vercel or your hosting provider:
NEXT_PUBLIC_ENVIRONMENT=productionNEXT_PUBLIC_BASE_URL=https://your-domain.comNEXT_PUBLIC_SOROBAN_RPC_URLset to either the testnet or mainnet RPC endpointNEXT_PUBLIC_SOROBAN_NETWORK_PASSPHRASEmatching the selected networkNEXT_PUBLIC_SOROBAN_NETWORK_TYPE=testnetormainnetNEXT_PUBLIC_HUNTY_CORE_ADDRESSNEXT_PUBLIC_REWARD_MANAGER_ADDRESSNEXT_PUBLIC_NFT_REWARD_ADDRESSPINATA_JWTfor IPFS uploadsRESEND_API_KEYfor reminder and notification emailsNEXT_PUBLIC_WC_PROJECT_IDfor wallet supportDATABASE_URLfor the PostgreSQL database used by the app
Hunty uses IPFS for hunt media and NFT metadata. Create a Pinata account and generate a JWT for the API route that uploads files.
- Sign up at https://pinata.cloud
- Create a new API key or JWT
- Store the value as
PINATA_JWTin your production environment - Optionally configure a custom gateway domain if you want branded IPFS URLs
Reminder emails and notification delivery depend on Resend.
- Create an account at https://resend.com
- Create an API key and store it as
RESEND_API_KEY - Configure the sender address and any domain verification you want to use for production mail
Choose your network before deployment:
- Use
testnetduring staging and validation. - Use
mainnetfor live production deployments.
The app reads the network from the Soroban environment variables, so update the contract addresses and network passphrase together whenever you switch networks.
After the initial deployment:
- Add your domain in Vercel.
- Configure the DNS records provided by Vercel.
- Update
NEXT_PUBLIC_BASE_URLto the final production URL. - Redeploy so the app serves the correct canonical URL.