Cloud WiFi Management
Demo Accounts
Super Admin: superadmin@ictbizwifi.com
Admin: admin@demo.com | Pass: admin123
{{ user.role === 'super_admin' && !assistAdmin ? 'Super Admin' : (assistAdmin ? assistAdmin.email : user.fullName) }}
{{ greeting }}
{{ assistAdmin ? assistAdmin.full_name : user.fullName }}
{{ stats.routers?.total||0 }}
Routers {{ stats.routers?.online||0 }} on
{{ stats.vouchers?.total||0 }}
Vouchers {{ stats.vouchers?.unused||0 }} avail
{{ stats.sessions?.active||0 }}
Active Sessions
₱{{ Number(stats.revenue?.total_revenue||0).toLocaleString() }}
Revenue
{{ stats.admins?.total||0 }}
Admins
{{ stats.routers?.total||0 }}
Routers
{{ stats.vouchers?.total||0 }}
Vouchers
{{ stats.sessions?.active||0 }}
Sessions
{{ shortLabel(s.label) }}
{{ a.quantity }} vouchers generated
{{ a.plan_name||'Custom' }} · {{ formatDuration(a.duration_minutes) }} · ₱{{ Number(a.price).toFixed(0) }}
{{ formatAgo(a.created_at) }}
Voucher {{ a.code }} used
{{ a.client_mac }} · {{ a.router_name }} · {{ formatDuration(a.duration_minutes) }} · {{ a.speed_limit_down }}/{{ a.speed_limit_up }}Mbps
{{ formatAgo(a.created_at) }}
{{ a.full_name }}
{{ a.email }}
{{ p.router_name||'Unregistered' }}
PENDING{{ p.mac_address }}
{{ p.model||'Unknown' }} · FW {{ p.firmware_version||'—' }}
Announced {{ formatAgo(p.last_heartbeat||p.created_at) }}
No Pending Routers
Routers appear here automatically after running install.sh
| Status | Name | Serial | MAC | Last Seen | WiFi Name | Model | Clients | Admin | Actions |
|---|---|---|---|---|---|---|---|---|---|
|
PENDING
ONLINE
OFFLINE
|
{{ r.router_name||'Unregistered' }}
|
{{ r.serial_number }} | {{ r.mac_address||'—' }} | {{ r.last_heartbeat ? formatLastSeen(r.last_heartbeat) : 'Never' }} | {{ r.ssid_2g||r.ssid||'—' }} | {{ r.model||'—' }} | {{ r.active_clients||0 }} |
{{ r.admin_name }}
Unassigned
|
|
Serial: {{ r.serial_number }}
MAC: {{ r.mac_address||'—' }}
Last Seen: {{ r.last_heartbeat ? formatLastSeen(r.last_heartbeat) : 'Never connected' }}
WiFi Name: {{ r.ssid_2g||r.ssid||'—' }}
Model: {{ r.model||'—' }}
Clients: {{ r.active_clients||0 }}
Admin: {{ r.admin_name }}
Unassigned
{{ batchSummary.total }}
Total Vouchers
₱{{ batchSummary.usedAmount.toFixed(2) }} / {{ batchSummary.totalAmount.toFixed(2) }}
Used / Total Value
{{ batchSummary.unused }}
Unused
{{ batchSummary.used }}
Used
{{ b.count }} vouchers
{{ formatBatchDate(b.created_at) }} ₱{{ Number(b.price).toFixed(2) }} {{ b.duration_minutes }}min valid {{ formatValidity(b.validity_hours||24) }}
{{ b.unused }} unused {{ b.active }} active {{ b.expired }} expired {{ b.revoked }} revoked ₱{{ (b.count * Number(b.price||0)).toFixed(2) }}
No vouchers found
{{ v.code }}
₱{{ Number(v.price).toFixed(2) }} · {{ v.speed_limit_down }}/{{ v.speed_limit_up }}Mbps · {{ formatDuration(v.duration_minutes) }} valid {{ formatValidity(v.validity_hours||24) }}
Used {{ v.used_minutes||0 }}m / {{ v.duration_minutes }}m · {{ v.duration_minutes-(v.used_minutes||0) }}m left
No vouchers found
₱{{ Number(rp.price).toFixed(0) }}
{{ filteredClients.filter(c=>c.status==='connected').length }}
Connected
{{ filteredClients.filter(c=>c.status==='disconnected').length }}
Disconnected
{{ filteredClients.filter(c=>c.status==='authenticated').length }}
Authenticated
{{ filteredClients.filter(c=>c.status==='pending').length }}
Pending
{{ client.device_mac||'Unknown Device' }}
{{ client.ip_address }}
Voucher: {{ client.voucher_code }}
No voucher
Connected: {{ formatAgo(client.connected_at) }}
Last seen: {{ formatAgo(client.last_activity) }}
{{ client.router_name }}
No clients found
Live Preview
{{ portalForm.welcomeText||'Welcome!' }}
Available Packages
{{ rp.name }}
₱{{ Number(rp.price).toFixed(0) }}