Production Checklist

Complete these steps before launching to real customers.

๐Ÿ” Stripe Configuration

โœ… Enable Live Mode

  • [ ] Switch Stripe dashboard from Test mode to Live mode
  • [ ] Get new API keys from Live mode
  • [ ] Update STRIPE_SECRET_KEY secret with live key:
    npx wrangler secret put STRIPE_SECRET_KEY
    # Enter your sk_live_... key

โœ… Update Webhook Endpoint

  • [ ] Delete test mode webhook endpoint
  • [ ] Create new webhook in Live mode:
    • URL: https://beatflow-api.terry-c67.workers.dev/api/webhooks/stripe
    • Events: checkout.session.completed, account.updated, payment_intent.payment_failed
  • [ ] Update STRIPE_WEBHOOK_SECRET with live signing secret:
    npx wrangler secret put STRIPE_WEBHOOK_SECRET
    # Enter your live whsec_... secret

โœ… Platform Fee Configuration

  • [ ] Review platform fee percentage in workers/wrangler.toml:
    PLATFORM_FEE_PERCENT = "10"  # Adjust as needed
  • [ ] Deploy updated config:
    cd workers && npm run deploy
โš ๏ธ Critical - Using test mode keys in production will prevent real transactions. Always verify you're in Live mode before launch.

๐ŸŒ Domain Configuration

โœ… Custom Domain for Frontend

  • [ ] Purchase domain (e.g., beatdrop.com)
  • [ ] Add domain to Cloudflare Pages:
    Dashboard โ†’ Pages โ†’ beatflow โ†’ Custom domains โ†’ Add
  • [ ] Update DNS records (Cloudflare handles this automatically)
  • [ ] Update FRONTEND_URL in workers/wrangler.toml:
    FRONTEND_URL = "https://beatdrop.com"

โœ… Custom Domain for API (Optional)

  • [ ] Configure custom domain for Workers:
    Dashboard โ†’ Workers โ†’ Routes โ†’ Add route
  • [ ] Route pattern: api.beatdrop.com/* โ†’ beatflow-api worker
  • [ ] Update frontend .env:
    VITE_API_BASE=https://api.beatdrop.com
  • [ ] Update Stripe webhook URL to use custom domain

๐Ÿ”’ Security

โœ… Rate Limiting

  • [ ] Enable Cloudflare WAF (Web Application Firewall)
  • [ ] Configure rate limiting rules:
    • Checkout endpoint: 5 requests/minute per IP
    • Download endpoint: 10 requests/hour per token
  • [ ] Or implement KV-based rate limiting (see API docs)

โœ… CORS Configuration

  • [ ] Verify FRONTEND_URL matches your production domain
  • [ ] Test CORS headers in production
  • [ ] Ensure no wildcard CORS (*) in production

โœ… Secrets Audit

  • [ ] Verify all secrets are set in production:
    npx wrangler secret list
  • [ ] Required secrets:
    • STRIPE_SECRET_KEY (live mode)
    • STRIPE_WEBHOOK_SECRET (live mode)
  • [ ] Remove any test/development secrets

๐Ÿ“ File Management

โœ… R2 Bucket Organization

  • [ ] Create folder structure in R2:
    beatdrop-files/
    โ”œโ”€โ”€ beats/           # Audio files
    โ”œโ”€โ”€ covers/          # Album art
    โ”œโ”€โ”€ stems/           # Stem files (ZIP)
    โ””โ”€โ”€ licenses/        # License PDFs
  • [ ] Upload license agreement PDFs for each tier:
    • licenses/basic.pdf
    • licenses/premium.pdf
    • licenses/exclusive.pdf

โœ… Seller Upload Flow

  • [ ] Implement presigned upload URLs (currently manual R2 upload)
  • [ ] Build seller dashboard for beat management
  • [ ] Add file validation (format, size limits)

๐Ÿ’ฐ Business Operations

โœ… Legal Documents

  • [ ] Create Terms of Service
  • [ ] Create Privacy Policy
  • [ ] Create Seller Agreement
  • [ ] License agreement PDFs for each tier
  • [ ] Add links to footer of website

โœ… Platform Settings

  • [ ] Confirm platform fee percentage (default: 10%)
  • [ ] Set minimum beat price (if desired)
  • [ ] Configure seller payout schedule (Stripe default: 2-day rolling)

โœ… Seller Onboarding Process

  • [ ] Test complete seller onboarding flow
  • [ ] Verify Stripe Connect identity verification works
  • [ ] Ensure seller dashboard shows accurate data
  • [ ] Test payout flow (use Stripe test mode first)

๐Ÿ“Š Monitoring & Analytics

โœ… Cloudflare Analytics

  • [ ] Enable Cloudflare Analytics for Pages
  • [ ] Enable Workers Analytics
  • [ ] Set up alerts for high error rates

โœ… Stripe Dashboard Monitoring

  • [ ] Bookmark Stripe Dashboard sections:
    • Payments
    • Connect (sellers)
    • Webhooks
  • [ ] Set up email alerts for failed webhooks
  • [ ] Configure revenue reports

โœ… D1 Database Monitoring

  • [ ] Monitor D1 query performance in Cloudflare dashboard
  • [ ] Set up alerts for database errors
  • [ ] Schedule regular backups (D1 auto-backups, but export periodically)

๐Ÿงช Testing

โœ… End-to-End Testing

  • [ ] Complete seller onboarding flow (production Stripe Connect)
  • [ ] Upload sample beat and verify files in R2
  • [ ] Complete test purchase (use live mode test card)
  • [ ] Verify download links work
  • [ ] Test webhook delivery
  • [ ] Verify seller receives payout

โœ… Browser Testing

  • [ ] Test on Chrome, Firefox, Safari, Edge
  • [ ] Test on mobile (iOS Safari, Android Chrome)
  • [ ] Test audio player on all platforms
  • [ ] Verify checkout flow on mobile

๐Ÿš€ Deployment

โœ… Final Deployment Steps

  1. [ ] Deploy Workers with live Stripe keys:
    cd workers && npm run deploy
  2. [ ] Deploy frontend with production API URL:
    npm run build && npx wrangler pages deploy dist
  3. [ ] Verify all endpoints respond correctly
  4. [ ] Test complete purchase flow end-to-end

๐Ÿ“ข Launch Preparation

โœ… Marketing & Branding

  • [ ] Finalize brand name and logo
  • [ ] Create social media accounts
  • [ ] Prepare launch announcement
  • [ ] Set up customer support email

โœ… Content

  • [ ] Create "How It Works" page
  • [ ] Write seller onboarding guide
  • [ ] Prepare FAQ section
  • [ ] Add pricing comparison chart
โœ… Ready to Launch! - Once all items are checked, you're ready to go live. Start with soft launch to a small group, then scale up.

Post-Launch Monitoring (First 48 Hours)

  • [ ] Monitor Stripe webhook success rate (should be >99%)
  • [ ] Check Cloudflare Workers error logs
  • [ ] Verify download links are working
  • [ ] Monitor seller onboarding completion rate
  • [ ] Check for any CORS errors in browser console
  • [ ] Monitor R2 storage usage
  • [ ] Watch for any failed transactions

Ongoing Maintenance

Weekly

  • Review Stripe payouts to sellers
  • Check for failed webhooks
  • Monitor platform revenue

Monthly

  • Review Cloudflare usage (approaching free tier limits?)
  • Audit D1 database for orphaned records
  • Check R2 storage usage
  • Review seller feedback

Quarterly

  • Update dependencies (npm, Wrangler)
  • Review and update legal documents
  • Analyze platform metrics and growth