INFINITUS FX
Clarity is the edge.
Dashboard
Volume This Week
Recent Activity
Tasks
Pending Actions
Name Account ID Type Status Equity (USD) Volume (M USD) Last Trade Source
Volume Growth
Client Breakdown
Client Account ID Volume (M USD) Lots Traded vs Last Period Trades Last Trade Status
Client Onboarding Steps
HFM IB Details
IB Number
30504720
Telegram
t.me/InfinitusFX
Account Types
Bonus POPULAR
Best entry for new clients
Premium FEATURED
Better spreads, recommended
Pro
Raw spreads, experienced traders
Visual Guides
Paste Canva export URLs below
🖼
HFM Setup Guide
🖼
MT4/MT5 Setup
🖼
Risk Management
Commission Trend
Master Only
Top Clients by Commission
Per-Client Breakdown
ClientAccount IDCommission (USD)Volume (M USD)Period
Master Only
Monthly P&L
Master Only
Add Expense
Category
Amount
Currency
Description
Expense Log
DateCategoryDescriptionAmount
Upload HFM Report
Master Only
📂
Drop client-performance-report.xlsx here
or click to browse · .xlsx files only
Import Rules
New accounts — inserted with blank name, flagged for Mary/Moncy to complete
Existing accounts — volume, equity, status, last_trade updated only
🔒 Name, email, notes — never overwritten by import
📸 Snapshot saved — every import creates a dated snapshot for period tracking
⚠️ Same-day duplicate — updates existing snapshot, no duplicates
Last Import
No imports yet today
Team Accounts & Permissions
Master Only
System Info
Supabase Project
tkjablqpmvwxnsyhdznb
IB Number
30504720
const mockClients = [ {id:1,name:'Ahmad Razif',email:'ahmad@email.com',acid:'31204567',actype:'Pro',status:'Approved',equity:2840,country:'Malaysia',source:'Telegram',volume:4.2,lots:42,trades:18,last_trade:'2026-04-25',verified_by:'Mary',notes:'Active trader. Prefers EURUSD.'}, {id:2,name:'Siti Hajar',email:'siti@email.com',acid:'31289034',actype:'Premium',status:'Approved',equity:1200,country:'Singapore',source:'Instagram',volume:1.8,lots:18,trades:9,last_trade:'2026-04-26',verified_by:'Moncy',notes:''}, {id:3,name:'Kevin Tan',email:'kevin@email.com',acid:'31301923',actype:'Bonus',status:'Partially Approved',equity:500,country:'Singapore',source:'TikTok',volume:0.6,lots:6,trades:4,last_trade:'2026-04-20',verified_by:'',notes:'KYC pending second doc'}, {id:4,name:'Priya Nair',email:'priya@email.com',acid:'31445821',actype:'Pro',status:'Approved',equity:3100,country:'Malaysia',source:'Referral',volume:5.1,lots:51,trades:22,last_trade:'2026-04-27',verified_by:'Mary',notes:'High volume trader'}, {id:5,name:'',email:'',acid:'31512988',actype:'Premium',status:'Partially Approved',equity:800,country:'Indonesia',source:'Telegram',volume:0.9,lots:9,trades:3,last_trade:'2026-04-18',verified_by:'',notes:'Imported from HFM — name pending'}, {id:6,name:'Zainudin Malik',email:'zain@email.com',acid:'31601234',actype:'Bonus',status:'Approved',equity:650,country:'Malaysia',source:'Telegram',volume:0.3,lots:3,trades:2,last_trade:'2026-04-10',verified_by:'Moncy',notes:'Inactive >7 days'}, ]; const mockTasks = [ {id:1,title:'Verify KYC for Kevin Tan (31301923)',assignee:'Mary',priority:'High',due:'2026-04-28',done:false}, {id:2,title:'Add name for account 31512988',assignee:'Mary',priority:'Urgent',due:'2026-04-27',done:false}, {id:3,title:'Upload HFM daily report',assignee:'Nana',priority:'Normal',due:'2026-04-27',done:false}, {id:4,title:'Edit Tuesday reel content',assignee:'Moncy',priority:'Normal',due:'2026-04-29',done:true}, {id:5,title:'Post morning bias — EURUSD setup',assignee:'Roy',priority:'High',due:'2026-04-28',done:false}, ]; const mockExpenses = [ {id:1,date:'2026-04-01',category:'Platform & Tools',desc:'Supabase Pro Plan',amount:25,currency:'USD'}, {id:2,date:'2026-04-01',category:'Platform & Tools',desc:'Netlify Pro',amount:19,currency:'USD'}, {id:3,date:'2026-04-01',category:'VA Salaries',desc:'Mary — April salary',amount:400,currency:'SGD'}, {id:4,date:'2026-04-01',category:'VA Salaries',desc:'Moncy — April salary',amount:400,currency:'SGD'}, {id:5,date:'2026-04-15',category:'Platform & Tools',desc:'CapCut Pro',amount:12,currency:'USD'}, ]; // ═══════════════════════════════════════════════ // INIT // ═══════════════════════════════════════════════ window.onload = function(){ // Splash timing setTimeout(()=>{ document.getElementById('splash').classList.add('hidden'); document.getElementById('app').classList.add('visible'); initApp(); }, 3000); // Set date document.getElementById('topbar-date').textContent = new Date().toLocaleDateString('en-SG',{weekday:'short',day:'numeric',month:'short',year:'numeric'}); }; function initApp(){ renderDashboard(); renderClientsTable(mockClients); renderVolume('day'); renderTasks(); renderCommission(); renderPnL(); applyRole(); } // ═══════════════════════════════════════════════ // NAVIGATION // ═══════════════════════════════════════════════ const pageTitles = { dashboard:'Dashboard',clients:'Clients',volume:'Volume Tracker', tasks:'Tasks',onboarding:'Onboarding Guide',commission:'Commission Tracker', pnl:'P&L & Expenses',import:'Import HFM',settings:'Settings' }; function goPage(name, el){ document.querySelectorAll('.page').forEach(p=>p.classList.remove('active')); document.querySelectorAll('.nav-item').forEach(n=>n.classList.remove('active')); document.getElementById('page-'+name).classList.add('active'); el.classList.add('active'); document.getElementById('topbar-title').textContent = pageTitles[name]; } // ═══════════════════════════════════════════════ // ROLE SYSTEM // ═══════════════════════════════════════════════ function switchRole(role, btn){ currentRole = role; currentUser = role === 'master' ? 'Roy' : 'Mary'; document.querySelectorAll('.demo-btn').forEach(b=>b.classList.remove('active-role')); btn.classList.add('active-role'); applyRole(); renderDashboard(); } function applyRole(){ const isMaster = currentRole === 'master'; // Sidebar master items document.querySelectorAll('.master-only').forEach(el=>{ el.style.display = isMaster ? '' : 'none'; }); // User display document.getElementById('sb-name').textContent = currentUser; document.getElementById('sb-avatar').textContent = currentUser[0]; const roleEl = document.getElementById('sb-role'); roleEl.textContent = isMaster ? 'MASTER' : 'ADMIN'; roleEl.className = 'sb-user-role ' + (isMaster ? 'master' : 'admin'); // Commission badge document.getElementById('comm-badge').style.display = isMaster ? 'flex' : 'none'; // P&L card document.getElementById('pnl-card').style.display = isMaster ? '' : 'none'; document.getElementById('tasks-card').style.display = isMaster ? 'none' : ''; // If on a master-only page and switches to admin, go to dashboard const activePage = document.querySelector('.page.active'); if(activePage){ const id = activePage.id.replace('page-',''); if(!isMaster && ['commission','pnl','import','settings'].includes(id)){ goPage('dashboard', document.querySelector('.nav-item')); } } } function doLogout(){ document.getElementById('app').classList.remove('visible'); document.getElementById('login').classList.add('visible'); document.getElementById('login-user').value=''; document.getElementById('login-pass').value=''; document.getElementById('login-error').classList.remove('show'); }