Add quick deploy checklist for email template fix
This commit is contained in:
201
DEPLOY-CHECKLIST.md
Normal file
201
DEPLOY-CHECKLIST.md
Normal file
@@ -0,0 +1,201 @@
|
|||||||
|
# 🚀 Quick Deploy Checklist
|
||||||
|
|
||||||
|
## Current Status
|
||||||
|
- ✅ Auth page registration works in production
|
||||||
|
- ✅ Email is being sent
|
||||||
|
- ❌ Email missing master template wrapper (needs deployment)
|
||||||
|
|
||||||
|
## What You Need to Do
|
||||||
|
|
||||||
|
### Step 1: Deploy Updated Edge Function (CRITICAL)
|
||||||
|
|
||||||
|
The email is sending but without the master template. You need to deploy the updated `send-auth-otp` function.
|
||||||
|
|
||||||
|
**Option A: If you have Supabase CLI access**
|
||||||
|
```bash
|
||||||
|
ssh root@lovable.backoffice.biz.id
|
||||||
|
cd /path/to/supabase
|
||||||
|
supabase functions deploy send-auth-otp
|
||||||
|
```
|
||||||
|
|
||||||
|
**Option B: Manual deployment**
|
||||||
|
```bash
|
||||||
|
ssh root@lovable.backoffice.biz.id
|
||||||
|
|
||||||
|
# Find the edge functions directory
|
||||||
|
cd /path/to/supabase/functions
|
||||||
|
|
||||||
|
# Backup current version
|
||||||
|
cp send-auth-otp/index.ts send-auth-otp/index.ts.backup
|
||||||
|
|
||||||
|
# Copy new version from your local machine
|
||||||
|
# (On your local machine)
|
||||||
|
scp supabase/functions/send-auth-otp/index.ts root@lovable.backoffice.biz.id:/path/to/supabase/functions/send-auth-otp/
|
||||||
|
|
||||||
|
# Restart edge function container
|
||||||
|
docker restart $(docker ps -q --filter 'name=supabase_edge_runtime')
|
||||||
|
```
|
||||||
|
|
||||||
|
**Option C: Git pull + restart**
|
||||||
|
```bash
|
||||||
|
ssh root@lovable.backoffice.biz.id
|
||||||
|
cd /path/to/project
|
||||||
|
git pull origin main
|
||||||
|
cp supabase/functions/send-auth-otp/index.ts /path/to/supabase/functions/send-auth-otp/
|
||||||
|
docker restart $(docker ps -q --filter 'name=supabase_edge_runtime')
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 2: Verify Deployment
|
||||||
|
|
||||||
|
After deployment, test the registration:
|
||||||
|
|
||||||
|
1. Go to https://with.dwindi.com/auth
|
||||||
|
2. Register with a NEW email address
|
||||||
|
3. Check your email inbox
|
||||||
|
|
||||||
|
**Expected Result:**
|
||||||
|
- ✅ Email has black header with "ACCESS HUB" logo
|
||||||
|
- ✅ Email has proper brutalist styling
|
||||||
|
- ✅ OTP code is large and centered
|
||||||
|
- ✅ Email has footer with unsubscribe links
|
||||||
|
|
||||||
|
### Step 3: Confirm Checkout Flow
|
||||||
|
|
||||||
|
The checkout page already redirects to auth page for registration, so **no changes needed**.
|
||||||
|
|
||||||
|
Verify:
|
||||||
|
1. Add product to cart
|
||||||
|
2. Go to checkout
|
||||||
|
3. If not logged in, redirects to `/auth`
|
||||||
|
4. Register new account
|
||||||
|
5. Receive OTP email with proper styling ✅
|
||||||
|
6. Verify email
|
||||||
|
7. Login
|
||||||
|
8. Complete checkout
|
||||||
|
|
||||||
|
## What Was Fixed
|
||||||
|
|
||||||
|
### Before
|
||||||
|
```html
|
||||||
|
<!-- Email was just the content without wrapper -->
|
||||||
|
<h1>🔐 Verifikasi Email</h1>
|
||||||
|
<p>Halo {nama},</p>
|
||||||
|
<div class="otp-box">{otp_code}</div>
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (With Master Template)
|
||||||
|
```html
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>...</head>
|
||||||
|
<body>
|
||||||
|
<table>
|
||||||
|
<!-- Header with ACCESS HUB branding -->
|
||||||
|
<tr>
|
||||||
|
<td style="background: #000; padding: 25px 40px;">
|
||||||
|
ACCESS HUB | NOTIF #123456
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Main content with OTP -->
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<div class="email-content">
|
||||||
|
<h1>🔐 Verifikasi Email</h1>
|
||||||
|
<p>Halo {nama},</p>
|
||||||
|
<div class="otp-box">{otp_code}</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
ACCESS HUB
|
||||||
|
Email ini dikirim otomatis
|
||||||
|
Unsubscribe
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Files Changed
|
||||||
|
|
||||||
|
Only ONE file needs to be deployed:
|
||||||
|
- `supabase/functions/send-auth-otp/index.ts`
|
||||||
|
|
||||||
|
**Changes:**
|
||||||
|
- Added `EmailTemplateRenderer` class (260 lines)
|
||||||
|
- Updated email body processing to use master template
|
||||||
|
- No database changes needed
|
||||||
|
- No frontend changes needed
|
||||||
|
|
||||||
|
## Testing After Deployment
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Register new user
|
||||||
|
# Go to /auth and fill registration form
|
||||||
|
|
||||||
|
# 2. Check OTP was created
|
||||||
|
# In Supabase SQL Editor:
|
||||||
|
SELECT * FROM auth_otps ORDER BY created_at DESC LIMIT 1;
|
||||||
|
|
||||||
|
# 3. Check email received
|
||||||
|
# Should have:
|
||||||
|
# - Black header with "ACCESS HUB"
|
||||||
|
# - Notification ID (NOTIF #XXXXXX)
|
||||||
|
# - Large OTP code in dashed box
|
||||||
|
# - Gray footer with unsubscribe links
|
||||||
|
|
||||||
|
# 4. Verify OTP works
|
||||||
|
# Enter code from email
|
||||||
|
# Should see: "Verifikasi Berhasil"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Success Criteria
|
||||||
|
|
||||||
|
✅ Email has professional brutalist design
|
||||||
|
✅ ACCESS HUB branding in header
|
||||||
|
✅ Notification ID visible
|
||||||
|
✅ OTP code prominently displayed
|
||||||
|
✅ Footer with unsubscribe links
|
||||||
|
✅ Responsive on mobile
|
||||||
|
✅ Works in all email clients
|
||||||
|
|
||||||
|
## Rollback Plan (If Something Breaks)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# If deployment fails, restore backup
|
||||||
|
ssh root@lovable.backoffice.biz.id
|
||||||
|
cd /path/to/supabase/functions/send-auth-otp
|
||||||
|
cp index.ts.backup index.ts
|
||||||
|
docker restart $(docker ps -q --filter 'name=supabase_edge_runtime')
|
||||||
|
```
|
||||||
|
|
||||||
|
## Need Help?
|
||||||
|
|
||||||
|
Check logs:
|
||||||
|
```bash
|
||||||
|
docker logs $(docker ps -q --filter 'name=supabase_edge_runtime') | tail -100
|
||||||
|
```
|
||||||
|
|
||||||
|
Test edge function directly:
|
||||||
|
```bash
|
||||||
|
curl -X POST https://lovable.backoffice.biz.id/functions/v1/send-auth-otp \
|
||||||
|
-H "Authorization: Bearer YOUR_SERVICE_KEY" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"user_id":"TEST_ID","email":"test@example.com"}'
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
**Status:** Ready to deploy
|
||||||
|
**Files to deploy:** 1 (send-auth-otp edge function)
|
||||||
|
**Risk:** Low (email improvement only)
|
||||||
|
**Time to deploy:** ~5 minutes
|
||||||
|
|
||||||
|
After deployment, test registration with a new email to confirm the email has proper styling!
|
||||||
Reference in New Issue
Block a user