WHAT WAS PREPARED: Monorepo structure, database migrations, documentation, and deployment checklist ready for Gemini's complete Trinity Console code delivery. DIRECTORY STRUCTURE CREATED: - src/routes/admin/ (admin routes) - src/views/admin/ (EJS templates for all pages) - src/views/components/ (reusable EJS components) - src/public/css/ (Tailwind CSS) - src/public/js/ (htmx + utilities) DATABASE MIGRATION: - migrations/trinity-console.sql - New tables: player_history, admin_audit_log, banned_users - Enhanced subscriptions: MRR, grace period, referrals - Indexes for performance - Complete schema documentation PACKAGE.JSON UPDATES: - Added EJS ^3.1.9 for server-side templating - Updated description to include Trinity Console - Ready for htmx (will be added to public/js) DOCUMENTATION: - TRINITY-CONSOLE.md: Complete feature overview, tech stack, philosophy - DEPLOYMENT-CHECKLIST.md: Step-by-step deployment guide for tomorrow - Covers all 10 deployment steps from database migration to go-live - Includes rollback plan, success criteria, testing procedures GEMINI CONSULTATION: Comprehensive implementation request sent to Gemini asking for: - Complete code for ALL THREE PHASES - All Express routes (dashboard, players, servers, financials, etc.) - All EJS views and components - Database migration SQL (already created) - htmx integration for reactive UI - Tailwind CSS styling - Server-Sent Events for real-time updates - Complete deployment guide FEATURES REQUESTED: Phase 1: Player table, server matrix, force sync, stats dashboard Phase 2: Grace period tracking, ban list, role audit, alerts Phase 3: Revenue analytics, player history, audit log, skins, export tools ARCHITECTURE DECISIONS (from Gemini): - Stay in Arbiter 3.0 (don't build separate app) - Use htmx for SPA-like reactivity (NO build pipeline for RV) - Use EJS for server-side rendering - Use Tailwind CSS for styling - Use SSE for real-time updates - Server-side pagination (don't load 500+ players) - 60-second Panel API caching (prevent rate limits) - Low-bandwidth RV mode (text-only view) DEPLOYMENT TIMELINE: - Tonight: Receive Gemini's complete code - Tomorrow 8am: Deploy database migration - Tomorrow 9am: Deploy code + npm install - Tomorrow 10am-2pm: Feature testing - Tomorrow 6pm: Go live for Trinity SOFT LAUNCH IMPACT: Trinity Console is NOT a blocker for soft launch (April 15). Arbiter 3.0 already handles subscriptions, whitelists, and Discord roles. Trinity Console adds operational intelligence, admin tools, and analytics. Deploy early to battle-test before first real subscribers. PHILOSOPHY: "Fire + Frost + Foundation = Where Love Builds Legacy" Built to be maintainable from an RV, scalable to hundreds of subscribers, and designed to last decades. FILES ADDED: - TRINITY-CONSOLE.md (complete documentation) - DEPLOYMENT-CHECKLIST.md (deployment guide) - migrations/trinity-console.sql (database schema) - src/routes/admin/index.js (placeholder for Gemini's code) - package.json (added EJS dependency) NEXT STEPS: 1. Receive complete implementation from Gemini 2. Populate src/routes/admin/* with Gemini's code 3. Populate src/views/admin/* with Gemini's EJS templates 4. Add htmx.min.js to src/public/js/ 5. Deploy tomorrow morning Signed-off-by: The Golden Chronicler <claude@firefrostgaming.com>
266 lines
6.6 KiB
Markdown
266 lines
6.6 KiB
Markdown
# Trinity Console - Deployment Checklist
|
|
|
|
## Pre-Deployment (Tonight)
|
|
|
|
- [x] Monorepo directory structure created
|
|
- [x] Database migration file created
|
|
- [x] Package.json updated with EJS
|
|
- [x] README documentation created
|
|
- [ ] Receive complete code from Gemini
|
|
- [ ] Review all files for completeness
|
|
- [ ] Test locally (optional)
|
|
|
|
## Deployment Day (Tomorrow Morning)
|
|
|
|
### Step 1: Database Migration (8:00 AM)
|
|
```bash
|
|
# SSH to Command Center
|
|
ssh root@63.143.34.217
|
|
|
|
# Run migration
|
|
sudo -u postgres psql -d arbiter_db -f /opt/arbiter-3.0/migrations/trinity-console.sql
|
|
|
|
# Verify tables created
|
|
sudo -u postgres psql -d arbiter_db -c "\dt"
|
|
|
|
# Check new columns
|
|
sudo -u postgres psql -d arbiter_db -c "\d subscriptions"
|
|
```
|
|
|
|
**Expected output:** 4 new tables, 6 new columns in subscriptions
|
|
|
|
### Step 2: Code Deployment (8:30 AM)
|
|
```bash
|
|
# Pull from monorepo
|
|
cd /opt/arbiter-3.0
|
|
git pull origin main
|
|
|
|
# Install new dependencies
|
|
npm install
|
|
|
|
# Verify EJS installed
|
|
npm list ejs
|
|
```
|
|
|
|
### Step 3: Configuration (9:00 AM)
|
|
```bash
|
|
# No .env changes needed (uses existing ADMIN_USERS)
|
|
# Verify admin IDs are set
|
|
grep ADMIN_USERS /opt/arbiter-3.0/.env
|
|
```
|
|
|
|
### Step 4: Service Restart (9:15 AM)
|
|
```bash
|
|
# Restart Arbiter 3
|
|
sudo systemctl restart arbiter-3
|
|
|
|
# Check logs for errors
|
|
sudo journalctl -u arbiter-3 -f
|
|
```
|
|
|
|
**Watch for:**
|
|
- "Trinity Console routes mounted" (or similar)
|
|
- No errors about missing views
|
|
- Port 3500 listening
|
|
|
|
### Step 5: Access Testing (9:30 AM)
|
|
1. Visit: https://discord-bot.firefrostgaming.com/admin
|
|
2. Should redirect to Discord OAuth if not logged in
|
|
3. After OAuth, should show Trinity Console dashboard
|
|
4. Verify Trinity access (Michael, Meg, Holly only)
|
|
5. Try non-Trinity user (should get 403)
|
|
|
|
### Step 6: Feature Testing (10:00 AM - 12:00 PM)
|
|
|
|
**Dashboard:**
|
|
- [ ] Stats cards showing correct counts
|
|
- [ ] MRR calculation accurate
|
|
- [ ] Servers online count correct
|
|
- [ ] Dark mode toggle works
|
|
|
|
**Players:**
|
|
- [ ] Table loads with all whitelisted players
|
|
- [ ] Sort by username works
|
|
- [ ] Sort by tier works
|
|
- [ ] Sort by date works
|
|
- [ ] Search filters correctly
|
|
- [ ] Pagination works (if >20 players)
|
|
- [ ] Edit tier dropdown shows all 10 tiers
|
|
- [ ] Changing tier updates database
|
|
- [ ] Changing tier triggers Discord role update
|
|
- [ ] Whitelist toggle works
|
|
- [ ] Bulk select works
|
|
- [ ] Bulk actions work
|
|
|
|
**Servers:**
|
|
- [ ] All servers listed (should be 12+)
|
|
- [ ] Grouped by TX1 and NC1
|
|
- [ ] Shows correct online/offline status
|
|
- [ ] Shows last sync timestamp
|
|
- [ ] Whitelist status accurate
|
|
- [ ] Force sync button works per server
|
|
- [ ] Sync all button works
|
|
- [ ] Toggle whitelist shows restart warning
|
|
- [ ] Real-time updates via SSE (if implemented)
|
|
|
|
**Financials:**
|
|
- [ ] Total MRR calculates correctly
|
|
- [ ] Fire vs Frost breakdown accurate
|
|
- [ ] Tier counts correct
|
|
- [ ] Charts render (if implemented)
|
|
- [ ] Lifetime revenue from Sovereign shown
|
|
|
|
**Grace Period:**
|
|
- [ ] Shows users in grace period
|
|
- [ ] Countdown timers accurate
|
|
- [ ] Payment failure reasons shown
|
|
- [ ] Manual override works
|
|
|
|
**Bans:**
|
|
- [ ] Shows banned users
|
|
- [ ] Add to ban list works
|
|
- [ ] Remove from ban works
|
|
- [ ] Ban reasons saved
|
|
|
|
**Role Audit:**
|
|
- [ ] Finds Discord roles without DB records
|
|
- [ ] Finds DB records without Discord roles
|
|
- [ ] Cleanup tools work
|
|
- [ ] Sync all roles works
|
|
|
|
**Audit Log:**
|
|
- [ ] Shows recent admin actions
|
|
- [ ] Filter by admin works
|
|
- [ ] Filter by action type works
|
|
- [ ] Export CSV works
|
|
|
|
**Additional Features:**
|
|
- [ ] Minecraft skins show (if implemented)
|
|
- [ ] Discord avatars show (if implemented)
|
|
- [ ] Keyboard shortcuts work
|
|
- [ ] Mobile responsive
|
|
- [ ] Low-bandwidth mode works
|
|
|
|
### Step 7: Load Testing (2:00 PM)
|
|
|
|
**Simulate Load:**
|
|
- Open dashboard on 3 devices simultaneously
|
|
- Force sync all servers
|
|
- Edit multiple players in quick succession
|
|
- Check for race conditions
|
|
- Verify Panel API caching works (shouldn't hit rate limits)
|
|
|
|
### Step 8: Documentation Update (3:00 PM)
|
|
|
|
**Update ops manual:**
|
|
- Document Trinity Console URL
|
|
- Add troubleshooting section
|
|
- Screenshot key features
|
|
- Update Task #86 (mark as obsolete or complete)
|
|
- Add Trinity Console to service inventory
|
|
|
|
### Step 9: Trinity Training (4:00 PM)
|
|
|
|
**Walkthrough with Meg and Holly:**
|
|
- How to access Trinity Console
|
|
- Player management workflow
|
|
- Server sync controls
|
|
- Grace period monitoring
|
|
- What to do if sync fails
|
|
- How to read audit log
|
|
|
|
### Step 10: Go Live (6:00 PM)
|
|
|
|
**Final checks:**
|
|
- [ ] All features tested and working
|
|
- [ ] No critical bugs found
|
|
- [ ] Trinity trained and comfortable
|
|
- [ ] Documentation complete
|
|
- [ ] Backup plan if something breaks
|
|
|
|
**Backup Plan:**
|
|
- Original Arbiter 3.0 still works (whitelist sync, /link command)
|
|
- Can disable Trinity Console routes if needed
|
|
- Database can be rolled back (migrations are additive)
|
|
- Old whitelist manager still available at whitelist.firefrostgaming.com
|
|
|
|
---
|
|
|
|
## Post-Deployment (Ongoing)
|
|
|
|
**Week 1:**
|
|
- Monitor logs daily for errors
|
|
- Watch for sync failures
|
|
- Track admin usage patterns
|
|
- Gather Trinity feedback
|
|
|
|
**Week 2:**
|
|
- Optimize slow queries
|
|
- Add missing features based on feedback
|
|
- Polish UI/UX rough edges
|
|
|
|
**Soft Launch (April 15):**
|
|
- Trinity Console battle-tested
|
|
- Ready for subscriber management
|
|
- Monitoring in place
|
|
- Alerts configured
|
|
|
|
---
|
|
|
|
## Rollback Plan
|
|
|
|
**If critical issues found:**
|
|
|
|
```bash
|
|
# Stop service
|
|
sudo systemctl stop arbiter-3
|
|
|
|
# Rollback code
|
|
cd /opt/arbiter-3.0
|
|
git checkout [previous-commit-hash]
|
|
|
|
# Rollback database (if needed - migrations are additive, so likely not needed)
|
|
# Only do this if new tables cause issues
|
|
sudo -u postgres psql -d arbiter_db << 'SQL'
|
|
DROP TABLE IF EXISTS player_history CASCADE;
|
|
DROP TABLE IF EXISTS admin_audit_log CASCADE;
|
|
DROP TABLE IF EXISTS banned_users CASCADE;
|
|
ALTER TABLE subscriptions
|
|
DROP COLUMN IF EXISTS mrr_value,
|
|
DROP COLUMN IF EXISTS referrer_discord_id,
|
|
DROP COLUMN IF EXISTS grace_period_started_at,
|
|
DROP COLUMN IF EXISTS grace_period_ends_at,
|
|
DROP COLUMN IF EXISTS payment_failure_reason,
|
|
DROP COLUMN IF EXISTS last_payment_attempt;
|
|
SQL
|
|
|
|
# Restart service
|
|
sudo systemctl start arbiter-3
|
|
```
|
|
|
|
---
|
|
|
|
## Success Criteria
|
|
|
|
**Trinity Console is successful if:**
|
|
- All 3 Trinity members can access it
|
|
- Player management is faster than Discord manually
|
|
- Server sync status is visible at a glance
|
|
- Grace period tracking prevents accidental cancellations
|
|
- Audit log provides accountability
|
|
- Works reliably from RV cellular connection
|
|
- Zero downtime during deployment
|
|
|
|
---
|
|
|
|
## Timeline
|
|
|
|
**Tonight (11:00 PM CST):** Code ready from Gemini
|
|
**Tomorrow (8:00 AM CST):** Deployment begins
|
|
**Tomorrow (6:00 PM CST):** Go live
|
|
**April 15 (Soft Launch):** First real subscribers
|
|
|
|
---
|
|
|
|
**Built with love by The Trinity** 🔥❄️💙
|