AeThex-Connect/PHASE6-QUICK-START.md
2026-01-10 08:00:59 +00:00

363 lines
7.5 KiB
Markdown

# PHASE 6: PREMIUM MONETIZATION - QUICK START ⚡
**Get AeThex's premium monetization running in under 10 minutes.**
---
## Prerequisites
- ✅ Phase 1-5 completed and running
- ✅ Stripe account (free at stripe.com)
- ✅ Node.js 18+ installed
- ✅ PostgreSQL database running
---
## 1. Database Setup (2 minutes)
### Run the migration:
```bash
cd /workspaces/AeThex-Connect
# Option A: Using the migrate script
npm run migrate
# Option B: Using psql directly
psql $DATABASE_URL -f src/backend/database/migrations/006_premium_monetization.sql
```
**Verify migration:**
```sql
psql $DATABASE_URL -c "SELECT * FROM feature_limits;"
```
You should see 3 rows (free, premium, enterprise) with default limits.
---
## 2. Stripe Setup (3 minutes)
### Create Stripe Account
1. Go to https://dashboard.stripe.com/register
2. Skip setup - go straight to test mode
3. Click "Developers" → "API keys"
### Copy Your Keys
```bash
# Add to .env file:
STRIPE_SECRET_KEY=sk_test_51...
STRIPE_PUBLISHABLE_KEY=pk_test_51...
```
### Create Products & Prices
**Quick Method - Use Stripe CLI:**
```bash
# Install Stripe CLI
brew install stripe/stripe-cli/stripe # macOS
# or download from: https://stripe.com/docs/stripe-cli
# Login
stripe login
# Create Premium Yearly
stripe prices create \
--unit-amount=10000 \
--currency=usd \
--recurring="interval=year" \
--product-data="name=AeThex Premium Yearly"
# Copy the price ID (price_...) to STRIPE_PREMIUM_YEARLY_PRICE_ID
# Create Premium Monthly
stripe prices create \
--unit-amount=1000 \
--currency=usd \
--recurring="interval=month" \
--product-data="name=AeThex Premium Monthly"
# Copy price ID to STRIPE_PREMIUM_MONTHLY_PRICE_ID
# Create Enterprise
stripe prices create \
--unit-amount=50000 \
--currency=usd \
--recurring="interval=month" \
--product-data="name=AeThex Enterprise"
# Copy price ID to STRIPE_ENTERPRISE_PRICE_ID
```
**Manual Method - Dashboard:**
1. Go to Products → Add Product
2. Name: "AeThex Premium Yearly"
3. Price: $100.00
4. Billing: Recurring, Yearly
5. Click "Save"
6. Copy the Price ID (starts with `price_`)
7. Repeat for Monthly ($10) and Enterprise ($500)
### Setup Webhook (for local testing)
```bash
# Forward webhooks to local server
stripe listen --forward-to localhost:5000/webhooks/stripe
# Copy the webhook signing secret (whsec_...) to .env
STRIPE_WEBHOOK_SECRET=whsec_...
```
---
## 3. Environment Variables (1 minute)
Update your `.env` file:
```bash
# Stripe (required)
STRIPE_SECRET_KEY=sk_test_51...
STRIPE_PUBLISHABLE_KEY=pk_test_51...
STRIPE_WEBHOOK_SECRET=whsec_...
STRIPE_PREMIUM_YEARLY_PRICE_ID=price_...
STRIPE_PREMIUM_MONTHLY_PRICE_ID=price_...
STRIPE_ENTERPRISE_PRICE_ID=price_...
# Platform (optional - has defaults)
PLATFORM_FEE_PERCENTAGE=10
FREE_MAX_FRIENDS=5
FREE_STORAGE_GB=0.1
PREMIUM_STORAGE_GB=10
ENTERPRISE_STORAGE_GB=-1
```
Frontend `.env` (in `src/frontend/`):
```bash
REACT_APP_STRIPE_PUBLISHABLE_KEY=pk_test_51...
```
---
## 4. Start the Server (1 minute)
```bash
# Backend
npm start
# Frontend (new terminal)
cd src/frontend
npm run dev
```
You should see:
```
✓ Premium routes loaded at /api/premium
✓ Stripe webhook listening at /webhooks/stripe
✓ Server running on port 5000
```
---
## 5. Test Premium Flow (3 minutes)
### Test Domain Availability
```bash
curl -X POST http://localhost:5000/api/premium/domains/check-availability \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domain": "testuser.aethex"}'
```
**Expected response:**
```json
{
"success": true,
"available": true,
"domain": "testuser.aethex",
"price": 100.00
}
```
### Test Subscription via Frontend
1. Open http://localhost:5173/premium/upgrade
2. Click "Choose Premium"
3. Enter domain name: `yourname.aethex`
4. Click "Check Availability"
5. Enter test card: `4242 4242 4242 4242`
6. Expiry: Any future date (e.g., 12/25)
7. CVC: Any 3 digits (e.g., 123)
8. Click "Subscribe"
9. Should redirect to success page
### Verify in Database
```sql
-- Check subscription
SELECT * FROM premium_subscriptions WHERE user_id = 'your-user-id';
-- Check domain
SELECT * FROM blockchain_domains WHERE owner_user_id = 'your-user-id';
-- Check user tier upgraded
SELECT id, email, premium_tier FROM users WHERE id = 'your-user-id';
```
---
## 6. Test Webhook (2 minutes)
With Stripe CLI running (`stripe listen --forward-to...`):
```bash
# Trigger test webhook
stripe trigger customer.subscription.updated
# Check your server logs - should see:
# ✅ Webhook received: customer.subscription.updated
# ✅ Subscription updated successfully
```
**Verify webhook events:**
```sql
SELECT * FROM payment_transactions ORDER BY created_at DESC LIMIT 5;
```
---
## Quick Troubleshooting
### "Migration failed"
```bash
# Check database connection
psql $DATABASE_URL -c "SELECT version();"
# Check if migration already ran
psql $DATABASE_URL -c "\dt premium_*"
# Force re-run
psql $DATABASE_URL -c "DROP TABLE IF EXISTS premium_subscriptions CASCADE;"
npm run migrate
```
### "Stripe key invalid"
- Make sure you copied the FULL key (starts with `sk_test_` or `pk_test_`)
- Check for extra spaces
- Verify in Stripe dashboard it's from test mode
### "Webhook signature verification failed"
```bash
# Get new webhook secret
stripe listen --forward-to localhost:5000/webhooks/stripe
# Copy the new whsec_... to .env
# Restart server
```
### "Domain registration hangs"
- Check Stripe keys are set
- Verify price IDs are correct
- Check server logs for errors
- Try test card: 4242 4242 4242 4242
---
## Test Cards
### Successful Payment
```
Card: 4242 4242 4242 4242
Expiry: Any future date
CVC: Any 3 digits
```
### Declined Payment
```
Card: 4000 0000 0000 0002
```
### Requires Authentication (3D Secure)
```
Card: 4000 0025 0000 3155
```
---
## Next Steps
### Test Full Flow
1. ✅ Create free account
2. ✅ Hit friend limit (5 friends)
3. ✅ Upgrade to premium
4. ✅ Register domain
5. ✅ Check unlimited friends works
6. ✅ View analytics dashboard
7. ✅ Cancel subscription
8. ✅ Verify downgrade at period end
### Production Deployment
See [PHASE6-COMPLETE.md](PHASE6-COMPLETE.md) for:
- Production webhook setup
- Live Stripe keys
- Security checklist
- Monitoring setup
---
## Common Commands
```bash
# Check subscription status
curl http://localhost:5000/api/premium/subscription \
-H "Authorization: Bearer YOUR_TOKEN"
# Get analytics
curl http://localhost:5000/api/premium/analytics?period=7d \
-H "Authorization: Bearer YOUR_TOKEN"
# List domains
curl http://localhost:5000/api/premium/domains \
-H "Authorization: Bearer YOUR_TOKEN"
# Check feature limits
curl http://localhost:5000/api/premium/features \
-H "Authorization: Bearer YOUR_TOKEN"
# Browse marketplace
curl http://localhost:5000/api/premium/marketplace
```
---
## Support
**Stripe docs:** https://stripe.com/docs
**Test mode:** https://dashboard.stripe.com/test
**Webhook testing:** https://stripe.com/docs/webhooks/test
**Issues?**
1. Check server logs
2. Check Stripe dashboard logs
3. Verify environment variables
4. Check database migrations ran
5. Test with curl first, then frontend
---
## Success Checklist
- [x] Database migration completed
- [x] Stripe keys configured
- [x] Products & prices created
- [x] Webhook listening (local)
- [x] Server starts without errors
- [x] Domain availability check works
- [x] Test payment succeeds
- [x] User tier upgraded in database
- [x] Subscription visible in Stripe
- [x] Webhook events logged
**✨ You're ready to monetize! ✨**
---
**Phase 6 Quick Start Complete**
**Time to Revenue: 10 minutes** 🚀