#ManyMarkets
The UVZ (Unique Value Zone) Platform is a SaaS solution designed to democratize digital product creation.
- Frontend: Next.js 14, Tailwind CSS, Framer Motion
- Backend: Next.js API Routes
- Database: Supabase
- AI: Gemini API
- Payments: using whop checkout
Pricing/Billing Configuration:
- The app supports paid plans and i am using whop checkout.
- To temporarily disable billing (ManyMarkets free to use), set
NEXT_PUBLIC_ENABLE_PRICING=falseor omit it (default is disabled). - To re-enable billing later, set
NEXT_PUBLIC_ENABLE_PRICING=trueand configure Paddle/Stripe environment variables as documented.
Database migration:
- A migration file
db/migrations/2025-12-15-disable-pricing.sqlis included which sets allprofiles.subscription_tier = 'free'and clears payment identifiers. - Run it with your preferred DB tooling, e.g. psql:
psql $DATABASE_URL -f db/migrations/2025-12-15-disable-pricing.sql- Or call the admin API (safer when SUPABASE_SERVICE_ROLE_KEY is configured):
curl -X POST -H "x-admin-token: $ADMIN_API_KEY" https://your-app.com/api/admin/disable-pricing- Always back up your database before running migrations that modify billing data.
Cleaning build artifacts: If you switched billing providers (e.g., from Lemon Squeezy or Stripe to Paddle) you should clear the build cache and rebuild to remove compiled references:
# PowerShell (Windows)
Remove-Item -Recurse -Force .next
npm run buildTo validate the Paddle vendor API key locally, create .env.local with the PADDLE env variables and run the test script:
npm install node-fetch@3 querystring dotenv # if needed
node scripts/test-paddle.jsapp/: Next.js App Router pages and layouts.components/: Reusable UI components.lib/: API clients (Supabase, Gemini, Whop checkout).public/: Static assets.
