+```
+
**Task 4.3: Test on Preview**
1. Commit changes to git
2. Push to Gitea (auto-deploys to GitHub → Cloudflare Pages)
@@ -248,11 +254,12 @@ setInterval(() => {
- ✅ All servers display
- ✅ Status indicators correct (green pulse = online, red = offline)
- ✅ Player counts showing (if Pterodactyl provides them)
-- ✅ Copy IP buttons work
+- ✅ "Join via Discord" messaging clear and prominent
- ✅ Auto-refresh updates without page reload
- ✅ Mobile responsive (no horizontal scroll!)
- ✅ Error message displays if Worker fails
- ✅ Loading state shows during fetch
+- ✅ NO IP addresses or ports visible on public page
---
@@ -420,9 +427,9 @@ Minecraft server status doesn't change rapidly. If a server goes down, users wil
## Future Enhancements (Post-Launch)
### ✅ Easy Wins (Add These!)
-1. **Copy IP Button** - One line of JavaScript
-2. **Auto-Refresh** - `setInterval` every 60 seconds
-3. **Status Pulse Animation** - CSS keyframe already provided
+1. **Auto-Refresh** - `setInterval` every 60 seconds
+2. **Status Pulse Animation** - CSS keyframe already provided
+3. **"Join via Discord" CTA** - Clear messaging directing users to Discord for server IPs
### ⚠️ Possible But Complex
1. **Modpack logos** - Would need image hosting, careful sizing
@@ -446,6 +453,14 @@ Minecraft server status doesn't change rapidly. If a server goes down, users wil
- ✅ `.dev.vars` file in `.gitignore`
- ✅ Service Account has minimal permissions (read-only)
+### IP Address Protection (Community Engagement Strategy)
+- ✅ Server IPs and ports **NOT displayed** on public website
+- ✅ Connection details gated behind Discord access
+- ✅ Minimum Awakened tier ($1/month) required
+- ✅ Drives community engagement and FOMO
+- ✅ Prevents random server scanning and bot attacks
+- ✅ Worker still fetches IP data but frontend doesn't render it
+
### CORS Configuration
- ✅ Only allows `https://firefrostgaming.com` origin
- ✅ Rejects requests from other domains