Production Readiness Checklist
Date: October 14, 2025
Status: โ ๏ธ REVIEW REQUIRED BEFORE DEPLOYMENT
๐จ CRITICAL - Security (MUST FIX)โ
Environment Variablesโ
-
.envadded to.gitignore - VERIFY:
.envwas NEVER committed to gitgit log --all --full-history -- .env
# Should return nothing - IF .env was committed: Remove from git history immediately
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch .env' \
--prune-empty --tag-name-filter cat -- --all - Review ALL commits for accidentally committed secrets
- Rotate ANY API keys that were ever in git history
Vercel Environment Variablesโ
Set these in Vercel Dashboard (NOT in .env file):
Required:
-
LEMON_SQUEEZY_API_KEY -
LEMON_SQUEEZY_STORE_ID -
LEMON_SQUEEZY_PRODUCT_ID -
LEMON_SQUEEZY_VARIANT_ID -
LEMON_SQUEEZY_WEBHOOK_SECRET -
DOWNLOAD_SECRET(generate with:openssl rand -hex 32) -
SITE_URL(e.g.,https://photoflowseo.com) -
ALLOWED_ORIGINS(your domain)
Optional (AI - BYOK mode):
-
AI_PROVIDER=mock(or leave unset for BYOK-only) - Do NOT set
GEMINI_API_KEY(users provide their own) - Do NOT set
OPENROUTER_API_KEY(users provide their own)
โ Code Qualityโ
Server-Sideโ
- Security fix implemented (fail-secure license validation)
- BYOK support added
- Batch endpoint (1-50 images)
- Gemini provider support
- Rate limiting configured
- Test all API endpoints manually
- Test license validation
- Test BYOK flow
Client-Side (Package)โ
- BYOK code in
CaptionProvider.js - Batch processing support
- README with BYOK docs
- Package rebuilt (
photoswipe-pro-5.4.4.tgz) - Test package installation
- Test BYOK flow from user perspective
Git Statusโ
Current modified files:
M build/build-pro-package.js
M server/ai/router.js
M src/pro/ai/CaptionProvider.js
M docs/*.md
M dist-pro/*
- Review all changes
- Commit changes with clear message
- Tag release (e.g.,
v5.4.4-byok)
๐ฆ Package Deliveryโ
Lemon Squeezy Setupโ
- Product created in Lemon Squeezy
- Variants configured (if multiple tiers)
- Webhook configured
- URL:
https://your-domain.com/api/webhooks/lemonsqueezy - Secret set in Vercel env vars
- URL:
- Test purchase flow (sandbox mode first)
- Test license delivery email
Download Deliveryโ
- Package uploaded to Vercel:
releases/photoswipe-pro-5.4.4.tgz - Download endpoint tested:
/api/download - Download signature validation working
- Test full download flow:
- Purchase
- Receive email with download link
- Download package
- Verify package integrity
๐ Website & Documentationโ
Websiteโ
- Update pricing page with BYOK model
PhotoSwipe Pro: $49/year
โ All Pro features
โ AI caption generation (BYOK)
โ Your AI costs: $0-10/year (FREE Gemini tier) - Add "Get Free Gemini Key" CTA
- Update features list
- Add BYOK explanation
- Update FAQ
Documentationโ
-
docs/BYOK-BRING-YOUR-OWN-KEY.mdcreated -
docs/batch-caption-guide.mdcreated -
docs/AI-BUSINESS-MODEL.mdupdated -
docs/SECURITY-FIX-AND-BYOK-COMPLETE.mdcreated - Update main README.md
- Update getting started guide
- Create video tutorial (optional but recommended)
Help Centerโ
- "How to get Gemini API key" article
- "BYOK setup guide" article
- "Troubleshooting AI captions" article
- FAQ: "Why do I need my own API key?"
๐งช Testingโ
Manual Testingโ
Local Testing:
- Server starts without errors
- All API endpoints respond
- Health check works:
http://localhost:4001/health - License validation works
- BYOK flow works
API Testing:
# Test health
curl http://localhost:4001/health
# Test AI caption (should require API key)
curl -X POST http://localhost:4001/api/ai/caption \
-H "Content-Type: application/json" \
-d '{"url":"https://picsum.photos/800/600","licenseKey":"test"}'
# Should return: {"error":"api_key_required","byok":true}
# Test batch (should require API key)
curl -X POST http://localhost:4001/api/ai/caption/batch \
-H "Content-Type: application/json" \
-d '{"images":[{"url":"https://picsum.photos/800/600"}],"licenseKey":"test"}'
# Should return: {"error":"api_key_required","byok":true}
End-to-End Testingโ
Full User Flow:
- User purchases PhotoSwipe Pro
- User receives download link
- User downloads package
- User installs package
- User gets Gemini API key
- User configures BYOK
- User generates captions successfully
Edge Cases:
- Invalid license key โ Proper error
- Missing API key โ Helpful BYOK error
- Rate limit โ 429 error
- Invalid image URL โ Proper error
- Batch too large (>50) โ Error with message
๐ Deploymentโ
Pre-Deploymentโ
- All tests pass
- No console errors
- No console warnings in production mode
- All environment variables set in Vercel
-
.envNOT committed to git - Secrets rotated if ever exposed
Vercel Deploymentโ
# Deploy to preview first
vercel
# Test preview deployment
# - Test all API endpoints
# - Test purchase flow
# - Test download flow
# - Test BYOK flow
# Deploy to production
vercel --prod
Post-Deployment Checksโ
- Website loads
- API endpoints work
- Purchase flow works
- License delivery works
- Download works
- BYOK works
- No 500 errors in Vercel logs
- No security warnings
๐ Monitoringโ
Setup Monitoringโ
- Vercel Analytics enabled
- Error tracking setup (Sentry/etc)
- Uptime monitoring (UptimeRobot/etc)
- API endpoint monitoring
- Purchase funnel tracking
Metrics to Watchโ
First Week:
- Successful purchases
- Download completion rate
- BYOK setup rate
- Support tickets about BYOK
- API error rate
Ongoing:
- Monthly purchases
- Churn rate
- BYOK adoption rate
- Average AI usage per user
- Cost per customer (should be ~$0)
๐ง Marketing & Launchโ
Pre-Launchโ
- Pricing page updated
- Product description mentions BYOK
- BYOK benefits highlighted
- "Use your free Gemini API key"
- "Pay only for what you use"
- "No monthly quotas or limits"
- Comparison table (vs competitors)
Launch Communicationsโ
Email List:
- Announcement email drafted
- Explains BYOK clearly
- Links to "Get Free Gemini Key" guide
- Early bird discount (optional)
Social Media:
- Twitter thread prepared
- LinkedIn post prepared
- Reddit posts prepared (r/webdev, r/ecommerce)
- Dev.to article written
Launch Day:
- Post on Product Hunt
- Post on Hacker News (Show HN)
- Email newsletter sent
- Social media posts published
๐ Support Preparationโ
Common Questionsโ
Prepare answers for:
- "What is BYOK?"
- "How do I get a Gemini API key?"
- "How much will AI cost me?"
- "Can I use OpenRouter instead?"
- "Do I need PhotoSwipe Pro AND a Gemini key?"
- "Is my API key secure?"
- "What if Gemini raises prices?"
Support Resourcesโ
- BYOK FAQ page
- Video: "Getting Your Free Gemini Key"
- Video: "Setting Up BYOK in 2 Minutes"
- Troubleshooting guide
- Support email ready: support@photoflowseo.com
โ ๏ธ Known Issues / TODOsโ
High Priorityโ
- CRITICAL: Verify .env was never committed
- Test full purchase โ download โ use flow
- Create onboarding email sequence
- Add BYOK setup wizard to website
Medium Priorityโ
- Add usage dashboard for users
- Add API key validation on client
- Add cost estimator ("X images = $Y/month")
- Create migration guide for existing users (if any)
Low Priorityโ
- Add analytics to track BYOK adoption
- Add A/B test for pricing ($49 vs $79)
- Consider tiered pricing later
- Add referral program
๐ Final Checklistโ
Before Pushing to Vercel:
-
.envin.gitignoreโ -
.envNEVER committed to git - All secrets in Vercel env vars (NOT in code)
- All code changes committed
- Release tagged (e.g.,
v5.4.4-byok) - Package tested locally
- Server tested locally
- No console errors
- Documentation complete
Before Going Public:
- Vercel preview tested
- All API endpoints work
- Purchase flow tested (sandbox)
- Download flow tested
- BYOK flow tested end-to-end
- Pricing page updated
- Support resources ready
- Monitoring enabled
Launch Readiness:
- All above items complete
- Team briefed
- Support ready
- Marketing materials ready
- Can handle support volume
๐ฏ Launch Decisionโ
Status: โ ๏ธ NOT READY YET
Blockers:
- ๐จ CRITICAL: Verify .env was never committed to git
- โ ๏ธ Must test full end-to-end flow
- โ ๏ธ Must set all Vercel environment variables
- โ ๏ธ Must test purchase flow
- โ ๏ธ Must update pricing page with BYOK
Estimated Time to Ready: 2-4 hours
Next Steps:
- Check git history for .env exposure
- Set Vercel environment variables
- Deploy to preview
- Test end-to-end
- Update website
- Deploy to production
- THEN publicize
โ When All Greenโ
You're ready to launch when:
- All โ are โ
- No critical blockers
- All tests pass
- Monitoring enabled
- Support ready
Then:
# Commit changes
git add .
git commit -m "feat: Add BYOK support with batch processing"
git tag v5.4.4-byok
# Deploy
vercel --prod
# Monitor
# Watch Vercel logs
# Watch error tracking
# Watch for support requests
# Launch!
# Send emails
# Post on social
# Celebrate ๐
Current Recommendation:
๐ DO NOT PUSH TO PRODUCTION YETโ
Fix these first:
- Verify no secrets in git
- Set Vercel env vars
- Test end-to-end
- Update website
- Then deploy to preview
- Then deploy to production
Estimated time needed: 2-4 hours of focused work