- ModuleManager: Central tracking for installed marketplace modules - DataAnalyzerWidget: Real-time CPU/RAM/Battery/Storage widget (unlocked by Data Analyzer module) - BottomNavBar: Navigation bar for Projects/Chat/Marketplace/Settings - RootShell: Real root command execution utility - TerminalActivity: Full root shell with neofetch, sysinfo, real Linux commands - Terminal Pro module: Adds aliases (ll, la, h), command history - ArcadeActivity + SnakeGame: Pixel Arcade module unlocks retro games - fade_in/fade_out animations for smooth transitions
13 KiB
🚀 Phase 6 Deployment Checklist
Use this checklist to deploy Phase 6: Premium Monetization to production.
Prerequisites
- Production server ready (Node.js 18+, PostgreSQL 14+)
- Stripe account verified and activated
- Domain configured with SSL/TLS
- GitHub repository access
- Database backups configured
1. Database Setup
Apply Migration
# SSH into production server
ssh user@your-server.com
# Navigate to project directory
cd /path/to/AeThex-Connect
# Apply migration
npm run migrate
# Or manually with psql
psql $DATABASE_URL -f src/backend/database/migrations/006_premium_monetization.sql
Verify Migration
-- Check tables created
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name LIKE 'premium_%' OR table_name LIKE '%_domain%';
-- Verify feature_limits populated
SELECT * FROM feature_limits;
-- Should show 3 rows: free, premium, enterprise
-- Check user column added
SELECT column_name FROM information_schema.columns
WHERE table_name = 'users' AND column_name = 'premium_tier';
Status: ☐ Complete
2. Stripe Configuration
2.1 Create Products & Prices
Go to Stripe Dashboard → Products
Premium Yearly:
- Create product "AeThex Connect Premium (Yearly)"
- Set price: $100.00 USD
- Billing: Recurring, interval = 1 year
- Copy Price ID:
price_... - Save to
STRIPE_PREMIUM_YEARLY_PRICE_ID
Premium Monthly:
- Create product "AeThex Connect Premium (Monthly)"
- Set price: $10.00 USD
- Billing: Recurring, interval = 1 month
- Copy Price ID:
price_... - Save to
STRIPE_PREMIUM_MONTHLY_PRICE_ID
Enterprise:
- Create product "AeThex Connect Enterprise"
- Set price: $500.00 USD (or custom)
- Billing: Recurring, interval = 1 month
- Copy Price ID:
price_... - Save to
STRIPE_ENTERPRISE_PRICE_ID
2.2 Configure Webhook
Go to Stripe Dashboard → Developers → Webhooks
- Click "Add endpoint"
- Endpoint URL:
https://yourdomain.com/webhooks/stripe - Select events to send:
customer.subscription.createdcustomer.subscription.updatedcustomer.subscription.deletedinvoice.payment_succeededinvoice.payment_failedcustomer.subscription.trial_will_end
- Click "Add endpoint"
- Copy signing secret (starts with
whsec_) - Save to
STRIPE_WEBHOOK_SECRET
2.3 Get API Keys
Go to Stripe Dashboard → Developers → API Keys
⚠️ Important: Switch to LIVE MODE (toggle in top right)
- Copy "Publishable key" (starts with
pk_live_) - Save to
STRIPE_PUBLISHABLE_KEY - Reveal "Secret key" (starts with
sk_live_) - Save to
STRIPE_SECRET_KEY
Status: ☐ Complete
3. Environment Variables
3.1 Backend Environment
Edit production .env file:
# Switch to production
NODE_ENV=production
# Stripe LIVE keys (not test!)
STRIPE_SECRET_KEY=sk_live_...
STRIPE_PUBLISHABLE_KEY=pk_live_...
STRIPE_WEBHOOK_SECRET=whsec_...
# Stripe Price IDs (from step 2.1)
STRIPE_PREMIUM_YEARLY_PRICE_ID=price_...
STRIPE_PREMIUM_MONTHLY_PRICE_ID=price_...
STRIPE_ENTERPRISE_PRICE_ID=price_...
# Blockchain (optional - Phase 7)
POLYGON_RPC_URL=https://polygon-mainnet.g.alchemy.com/v2/YOUR_KEY
FREENAME_REGISTRY_ADDRESS=0x...
DOMAIN_MINTER_PRIVATE_KEY=0x... # Use hardware wallet!
# Platform settings
PLATFORM_FEE_PERCENTAGE=10
FREE_MAX_FRIENDS=5
FREE_STORAGE_GB=0.1
PREMIUM_STORAGE_GB=10
ENTERPRISE_STORAGE_GB=-1
# Security
JWT_SECRET=<generate-new-secret>
SESSION_SECRET=<generate-new-secret>
ENCRYPTION_KEY=<generate-32-char-key>
# Database
DATABASE_URL=postgresql://user:password@host:5432/database
# CORS
CORS_ORIGINS=https://yourdomain.com,https://www.yourdomain.com
Generate Secrets:
# Generate JWT secret
node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
# Generate encryption key (32 chars)
node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"
Verification:
- All secrets generated and unique
- Stripe keys are LIVE (not test)
- Database URL is production
- CORS origins match production domain
- NODE_ENV=production
3.2 Frontend Environment
Edit frontend .env (or .env.production):
REACT_APP_STRIPE_PUBLISHABLE_KEY=pk_live_...
REACT_APP_API_URL=https://yourdomain.com/api
REACT_APP_SOCKET_URL=https://yourdomain.com
Verification:
- Publishable key is LIVE (not test)
- API URL is production
- Socket URL is production
Status: ☐ Complete
4. Code Deployment
4.1 Pull Latest Code
# On production server
cd /path/to/AeThex-Connect
git pull origin main
4.2 Install Dependencies
# Install/update backend dependencies
npm install --production
# Install/update frontend dependencies
cd src/frontend
npm install
npm run build
4.3 Restart Services
# Using PM2
pm2 restart aethex-connect
# Or systemd
sudo systemctl restart aethex-connect
# Or Docker
docker-compose restart
Verification:
# Check server is running
curl https://yourdomain.com/health
# Check logs
pm2 logs aethex-connect
# or
sudo journalctl -u aethex-connect -f
Status: ☐ Complete
5. Security Hardening
5.1 SSL/TLS Configuration
- SSL certificate installed (Let's Encrypt, etc.)
- HTTPS enforced (HTTP redirects to HTTPS)
- Certificate auto-renewal configured
- Strong cipher suites enabled
5.2 Firewall & Network
- Firewall configured (allow 80, 443, deny all else)
- Rate limiting enabled
- DDoS protection active
- Database not publicly accessible
5.3 Application Security
- CORS configured for production domain only
- Helmet.js security headers enabled
- SQL injection protection (parameterized queries)
- XSS protection enabled
- CSRF protection enabled
5.4 Secrets Management
- Environment variables not in Git
.envfile has restricted permissions (600)- Database credentials rotated
- API keys documented in secure location
Status: ☐ Complete
6. Testing
6.1 Test Webhook Endpoint
# Test webhook is accessible
curl -X POST https://yourdomain.com/webhooks/stripe \
-H "Content-Type: application/json" \
-d '{"test": true}'
# Should return 400 (no signature) - that's good!
# Should NOT return 404 or 500
6.2 Test Stripe Webhook (Stripe CLI)
# Install Stripe CLI
brew install stripe/stripe-cli/stripe
# Login
stripe login
# Forward events to production (for testing)
stripe listen --forward-to https://yourdomain.com/webhooks/stripe
6.3 Test Premium Upgrade Flow
Using Browser:
- Go to
https://yourdomain.com/premium/upgrade - Select "Premium" tier
- Enter domain name
- Check availability works
- Enter test card:
4242 4242 4242 4242 - Complete subscription
- Verify redirect to success page
- Check Stripe dashboard for subscription
Using API:
# Get auth token first
TOKEN="your-jwt-token"
# Test domain availability
curl -X POST https://yourdomain.com/api/premium/domains/check-availability \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"domain": "testuser.aethex"}'
# Test subscription creation
curl -X POST https://yourdomain.com/api/premium/subscribe \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"tier": "premium",
"paymentMethodId": "pm_card_visa",
"billingPeriod": "yearly"
}'
6.4 Verify Database Updates
-- Check subscription created
SELECT * FROM premium_subscriptions
WHERE user_id = 'test-user-id'
ORDER BY created_at DESC LIMIT 1;
-- Check user tier updated
SELECT id, email, premium_tier
FROM users
WHERE id = 'test-user-id';
-- Check payment logged
SELECT * FROM payment_transactions
ORDER BY created_at DESC LIMIT 5;
Status: ☐ Complete
7. Monitoring Setup
7.1 Application Monitoring
- Error tracking configured (Sentry, Rollbar, etc.)
- Log aggregation setup (Loggly, Papertrail, etc.)
- Uptime monitoring (Pingdom, UptimeRobot, etc.)
- Performance monitoring (New Relic, Datadog, etc.)
7.2 Stripe Monitoring
- Email notifications enabled in Stripe
- Failed payment alerts configured
- Revenue reports scheduled
7.3 Alerts
- Server down alerts
- Database connection errors
- Failed payment alerts
- High error rate alerts
- Disk space warnings
Status: ☐ Complete
8. Backup & Recovery
8.1 Database Backups
- Automated daily backups configured
- Backup retention policy set (30+ days)
- Backup restoration tested
- Off-site backup storage
8.2 Code Backups
- Git repository backed up
- Environment variables documented
- Configuration files backed up
8.3 Disaster Recovery Plan
- Recovery procedures documented
- RTO/RPO defined
- Failover tested
Status: ☐ Complete
9. Documentation
9.1 Internal Documentation
- Deployment procedures documented
- Rollback procedures documented
- Environment variables documented
- API endpoints documented
- Database schema documented
9.2 User Documentation
- Pricing page updated
- FAQ created
- Support documentation
- Terms of service updated
- Privacy policy updated
Status: ☐ Complete
10. Launch Checklist
Pre-Launch
- All tests passing
- No errors in production logs
- Stripe test mode disabled
- Analytics tracking enabled
- Customer support ready
Launch
- Announce premium features
- Monitor error rates
- Watch for failed payments
- Check webhook processing
- Monitor server load
Post-Launch (First 24 Hours)
- Review error logs
- Check payment success rate
- Verify webhook sync
- Monitor user signups
- Track revenue
Post-Launch (First Week)
- Analyze conversion rates
- Review customer feedback
- Fix any issues
- Optimize performance
- Plan improvements
Status: ☐ Complete
11. Rollback Plan
If issues occur, follow this rollback procedure:
Immediate Rollback
# SSH to server
ssh user@server
# Stop services
pm2 stop aethex-connect
# Revert to previous version
git checkout <previous-commit-hash>
# Rollback database (if needed)
psql $DATABASE_URL -f rollback_006.sql
# Restart services
pm2 restart aethex-connect
Database Rollback SQL
-- Drop Phase 6 tables (if needed)
DROP TABLE IF EXISTS payment_transactions CASCADE;
DROP TABLE IF EXISTS enterprise_team_members CASCADE;
DROP TABLE IF EXISTS usage_analytics CASCADE;
DROP TABLE IF EXISTS domain_transfers CASCADE;
DROP TABLE IF EXISTS enterprise_accounts CASCADE;
DROP TABLE IF EXISTS blockchain_domains CASCADE;
DROP TABLE IF EXISTS feature_limits CASCADE;
DROP TABLE IF EXISTS premium_subscriptions CASCADE;
-- Remove user column
ALTER TABLE users DROP COLUMN IF EXISTS premium_tier;
Status: ☐ Documented
12. Success Metrics
Track these metrics post-launch:
Revenue Metrics
- Premium subscriptions created
- Enterprise accounts created
- Domain registrations
- Marketplace sales
- MRR (Monthly Recurring Revenue)
- ARR (Annual Recurring Revenue)
Technical Metrics
- Uptime %
- API response times
- Failed payment rate
- Webhook success rate
- Error rate
User Metrics
- Free to premium conversion %
- Premium to enterprise conversion %
- Churn rate
- Customer lifetime value
- Net promoter score
Status: ☐ Tracking
🎉 Deployment Complete!
Once all checkboxes are ✅, Phase 6 is live!
Quick Verification Commands
# Check server health
curl https://yourdomain.com/health
# Check API
curl https://yourdomain.com/api/premium/marketplace
# Check webhook
stripe listen --forward-to https://yourdomain.com/webhooks/stripe
# Check database
psql $DATABASE_URL -c "SELECT COUNT(*) FROM premium_subscriptions;"
# Check logs
pm2 logs aethex-connect --lines 50
Support Resources
- Stripe Dashboard: https://dashboard.stripe.com
- Stripe Logs: https://dashboard.stripe.com/logs
- Server Logs:
pm2 logsor/var/log/ - Database:
psql $DATABASE_URL - Documentation: See PHASE6-COMPLETE.md
📞 Emergency Contacts
- DevOps Lead: name@company.com
- Backend Lead: name@company.com
- Stripe Support: https://support.stripe.com
- Server Provider: support link
Last Updated: January 10, 2026
Version: 1.0
Status: Ready for Production ✅