Network Snapshot
Live backend metrics, refreshed every 30 seconds
Active Hotspot Users
—
—
PPPoE Online
—
Stable
MPESA Payments (Today)
—
3 pending
Branches / Routers
—
Grouped by site
Network Observability
Bounded SNMP metric and NetFlow/IPFIX summary ingestion. Topology is shown only from observed links.
Collectors
-
Enabled tenant collectors
Reporting
-
Seen in the last 15 minutes
Metrics
-
Recent bounded samples
Flow Summaries
-
Recent aggregated windows
Collector tokens are returned once and stored only as keyed digests.
Collectors
Inactive credentials are rejected.
| Name | Type | Token prefix | Last seen | Status |
|---|---|---|---|---|
| No collectors loaded. | ||||
Observed Topology
Configured nodes are distinct from collector-observed links.
No topology loaded.
| Source | Target | Type / Interface | Status | Latency / Loss | Observed |
|---|---|---|---|---|---|
| No observed links. | |||||
Latest Metrics
Interface and device measurements, not inferred health.
| Sampled | Node | Interface | Metric | Value |
|---|---|---|---|---|
| No metric samples. | ||||
Latest Flow Summaries
Aggregated prefixes only; raw unbounded flows are not stored.
| Window | Router / Interface | Source | Destination | Protocol | Traffic |
|---|---|---|---|---|---|
| No flow summaries. | |||||
Traffic Usage
Hotspot and PPPoE traffic recorded by session accounting
0 B
Payment Trend
Successful collections grouped by selected period
Live Subscriber Mix
Waiting for the first sample
Live Operations Trend
Rolling samples from live overview polling, not simulated values in API mode
Recent Payments
Recent tenant payment activity
| Time | Phone | Plan | Amount | Status |
|---|
Quick Tools
Common actions
In API mode, branches/routers/plans are stored in DB. Vouchers/payments wiring comes next.
Branches / Sites
Register locations and attach routers to each branch
| Branch | Code | Location | Branch | Support | Routers | Status |
|---|
Best practice: Create all branches first, then register routers under each branch.
Plans
Manage hotspot + PPPoE packages (API-wired)
| Name | Type | Portal Scope | Price | Validity | Speed | Status | Actions |
|---|
Hotspot portals fetch active plans dynamically and apply their configured branch scope.
Vouchers
Generate, export, and track voucher usage
Global vouchers show in every branch. Pick a branch to generate branch-only vouchers.
Optional label for this bulk generation.
Only Hotspot plans should be used for vouchers.
| Code | Branch | Plan | Status | Created | Started | Expires | Used |
|---|
In API mode: generating vouchers calls backend. Global vouchers have branch_id = null.
Payments
Tenant M-Pesa transactions
| Time | Type | Phone | MPESA Receipt | Access / Voucher | Checkout ID | Plan | Amount | Status |
|---|
Subscriber Services
One lifecycle and billing view for PPPoE, DHCP/IPoE, and Static IP
| Service | Customer | Access Identity | Plan / Site | Billing | Authorization | Connection | Provisioning | Actions |
|---|
Access Networks
Tenant-scoped CIDR, gateway, DHCP server, and Router/NAS context
| Name | Branch / Router | Network | Purpose | DHCP Server / Pool | Mode | Status |
|---|
Register only networks actually present or intentionally managed on the selected router. Public networks must represent address space routed to that tenant.
PPPoE Subscribers
Accounts, expiry, and renewals
| Account | Plan | Phone | Router MAC | Expiry | Online | Status |
|---|
Corporate Accounts
Company billing groups, linked PPPoE users, shared renewal
| Company | Plan | Accounts | Usage | Expiry | Status | Actions |
|---|
Usage Analytics
Tenant-wide usage by default; filter an individual voucher, MAC, or PPPoE user when needed
Total Usage
—
Selected range
Hotspot Usage
—
Router polling data
PPPoE Usage
—
RADIUS accounting
| Service | User | Download | Upload | Total | Sessions | Last Seen |
|---|
PPPoE Requests
New connection requests from the portal
| Name | Phone | Location | Plan | Status | Requested | Expires |
|---|
Usage Analytics
Network-wide usage, heavy-user alerts, CSV export, and FUP checks
Loading usage analytics...
Reports
Payments plus truthful client, service, and Hotspot-session activity
MPESA Revenue
Today
Summary
Successful vs Pending
Total Success
0
Pending Count
0
Client Activity
New records and session events are historical. Active counts are current observations only.
Load a period to see acquisition and session activity.
New Customers
0
Records created in period
New PPPoE
0
Accounts created in period
Hotspot Starts
0
Trusted session starts
Hotspot Devices
0
Distinct devices in period
Current active customer records
0
Current active PPPoE accounts
0
Current observed Hotspot sessions
0
| Period | New customers | New PPPoE | Hotspot starts | Unique devices |
|---|---|---|---|---|
| No client activity report loaded. | ||||
| Date | Total | Count |
|---|
Infrastructure Registry
Tenant-scoped asset custody, stock movements, and dual-stack address allocation with durable history.
Serialized Assets
-
Tracked by tag, serial, or MAC
Low Stock
-
At or below reorder level
IP Prefixes
-
IPv4 and IPv6 authority
Active Allocations
-
Reserved or assigned addresses
Locations
Warehouses, offices, vehicles, sites, and technician custody.
| Code | Location | Type | Branch | Status |
|---|---|---|---|---|
| No locations loaded. | ||||
Item Catalog
Serialized equipment and count-based consumables use separate ledgers.
| SKU | Name | Category | Tracking | Reorder |
|---|---|---|---|---|
| No items loaded. | ||||
Serialized Assets
Registration creates an immutable receive event. Custody changes use explicit transitions.
| Tag | Item | Serial / MAC | Status | Location | Assignment |
|---|---|---|---|---|---|
| No assets loaded. | |||||
Stock Ledger
Count-based inventory cannot go negative. Every movement is idempotent and audited.
| SKU | Item | Location | On hand | Reorder | State |
|---|---|---|---|---|---|
| No stock balances loaded. | |||||
Dual-stack Prefixes
Overlapping CIDRs are rejected within a VRF. Gateways are never allocated.
| Name | CIDR / VRF | Gateway | Family | Utilization | Status |
|---|---|---|---|---|---|
| No prefixes loaded. | |||||
Address Allocations
Allocate the first free address or request an exact one. Release preserves history.
| Address | Prefix | Owner | Hostname / MAC | Status | |
|---|---|---|---|---|---|
| No allocations loaded. | |||||
Operations Center
Tenant-scoped balances, reconciliation, onboarding, messaging templates, imports, and truthful network readiness.
Active Services
—
Billing/service state
Provisioning Failures
—
Requires operator review
Routers Observed
—
Real health snapshots only
Onboarding
—
Observed + manual checklist
Customer Balance / Statement
Uses the authoritative billing ledger; no duplicate balance is stored.
Select a customer ID to load ledger-backed balance and services.
| Time | Kind | Description | Debit | Credit | Status |
|---|---|---|---|---|---|
| No statement loaded. | |||||
Payment Reconciliation Queue
Unmatched provider payments stay unmatched until an operator selects a ledger charge.
| Received | Phone | Amount | Receipt | Match charge ID | |
|---|---|---|---|---|---|
| No unmatched payments loaded. | |||||
SMS Templates
Provider-neutral templates use the existing safe variable allow-list. Sending remains in SMS Center.
No preview.
| Key | Name | Status | |
|---|---|---|---|
| No templates loaded. | |||
Guided Onboarding
Observed setup facts are separated from operator confirmations.
No checklist loaded.
CSV Import / Export
Preview first; commits are limited, validated, tenant-scoped, and audited.
No import preview.
NOC Readiness
No router is called online from configuration alone.
No readiness snapshot loaded.
| Router | Observed status | Latency | Sampled |
|---|---|---|---|
| No routers loaded. | |||
Technician Queue
Assignment and internal notes are tenant-scoped; customer-visible notes are kept separate.
| Ticket | Customer | Issue | Status / SLA | Due | Assign admin ID | Internal note | |
|---|---|---|---|---|---|---|---|
| No tickets loaded. | |||||||
Dispatch Calendar
Conflict-checked appointments, technician ownership, required completion checklists and optimistic mobile sync.
| Appointment | Work order | Technician | Status | Checklist |
|---|
Operating Expenses
Tenant-scoped expense records with branch filters, receipt references, CSV export, and audit history.
No expenses loaded.
| Date | Category | Vendor | Amount | Branch | Reference |
|---|---|---|---|---|---|
| No expenses loaded. | |||||
Leads / Prospects
Track prospects separately; conversion is explicit and creates a normal tenant customer only after confirmation.
No leads loaded.
| Lead | Service | Status | Follow-up | Action |
|---|---|---|---|---|
| No leads loaded. | ||||
Invoice Aging / Receivables
Derived from billing_charges, the authoritative ledger. “Not observed” network state is never treated as paid or online.
No receivables loaded.
| Account | Customer | Due | Outstanding | Aging | Status |
|---|---|---|---|---|---|
| No receivables loaded. | |||||
Credit Notes, Refunds & Accounting
Approval-controlled ledger adjustments and an immutable accounting synchronization outbox.
| Number | Type | Account | Amount | Status | Actions |
|---|
Accounting outbox not loaded.
| Created | Event | Status | Attempts | Provider reference | Action |
|---|---|---|---|---|---|
| No accounting events loaded. | |||||
Routers / Sites
Routers are registered under branches for monitoring and sync
| Branch | Router | Host | Status | Hotspot |
|---|
Next step: connect RouterOS API sync per branch (pull sessions/users/profiles).
Customers
Unified view (hotspot + PPPoE)
| Name | Phone | Type | Plan | Status |
|---|
Settings
Branding, MPESA, Router API, roles
Not connected
Branding
Portal name, support contacts
Used for tenant billing display, plans, reports, invoices and SMS variables.
Leave blank to keep current password. Demo mode will reject other passwords.
Automatic inactivity logout. Allowed range: 5–120 minutes. Default: 15.
Maximum lifetime even while active. Allowed range: 8–12 hours. Default: 12.
Global default. 0 means every child account requires an add-on or separate billing unless package/account overrides it.
Variables: {{full_name}}, {{first_name}}, {{account_username}}, {{package_name}}, {{package_price}}, {{installation_fee}}, {{initial_total}}, {{expiry_date}}, {{support_phone}}, {{support_email}}, {{website}}, {{currency}}
Saved to backend in API mode.
Hotspot Portal Defaults
Set branch defaults, then push `hotspot/config.js` to a branch router
Only one mode is active at a time, based on Default Branch Lock.
Save updates backend defaults for this tenant. Push writes `hotspot/config.js` to the selected router (branch-safe check enforced).
Portal Announcements
Show promos or notices on the hotspot page only when active.
You can paste an image URL or upload a photo from this device.
Once the hotspot page has this new code, announcements are pulled from backend automatically. You do not need to push text edits to the router each time.
| Title | Scope | Type | Window | Status | Priority | Action |
|---|
Integrations
MPESA + MikroTik RouterOS API
In API mode these are stored in DB and used by backend services. For custom providers, supply Daraja-compatible endpoint URLs in Provider Config JSON.
SMS Provider
Default is Africa’s Talking, but you can switch providers.
Stored separately for this tenant. Supports custom URLs, headers, JSON/form bodies, field names, and response paths.
Leave blank to disable SMS. For Africa's Talking sandbox, environment should be
sandbox and username can stay sandbox.
Hotspot Voucher Receipt SMS
After a confirmed payment, send the buyer their voucher and clear portal instructions. Delivery history redacts the voucher code.
If no active template matches, SmartWaves uses a safe default: plan details, voucher, and “use the voucher as both username and password.” Failed deliveries may be retried explicitly from delivery logs; automatic retries are avoided to prevent duplicate credentials.
KRA eTIMS
Optional electronic tax invoicing through certified OSCU integration.
Use the official OSCU fields:
environment, pin, branch_id, device_serial, cmc_key, item_code, item_class_code, and taxation values. The communication key is returned only during successful device initialization.SMS Center
Send one-off messages, queue bulk campaigns, and review message history.
Manual SMS
Bulk SMS Campaigns
Build an audience from PPPoE and hotspot data, preview recipients, then queue a campaign without affecting manual SMS.
Choose an audience, then click
Preview Audience to see how many recipients will be reached.
Sent Messages & Delivery Reports
Every manual, voucher, customer, invoice, and bulk SMS is recorded here. Provider delivery callbacks update the final handset status.
| Time | Audience | Status | Recipients | By | Message | Actions |
|---|
| Time | Phone | Kind | Status | Provider | Cost | By | Message |
|---|
Email & WhatsApp
Consent-aware provider templates with truthful delivery state. Providers remain fail-closed until configured.
Provider status not loaded.
Scheduled Campaign
Recipient payloads are rendered once, consent-filtered, throttled per channel, and delivered by the durable worker.
Duplicate destinations must use identical variables. Email opt-outs and WhatsApp recipients without explicit opt-in are suppressed.
| Campaign | Channel | Schedule | Status | Recipients | Outcome | |
|---|---|---|---|---|---|---|
| No campaigns loaded. | ||||||
| Time | Channel | Destination | Status | Attempts | Provider | Detail / Action |
|---|
Recovery Access
Owner-only token for emergency password reset
Keep this token private. Use it only if you are locked out. Global-owner emergency recovery also requires the separate break-glass code configured on the backend.
Audit Logs
Recent admin actions
| Time | Action | Details | IP |
|---|
Branch MPESA Overrides
Optional per-branch credentials (overrides global)
Leave fields blank to use global credentials, provider, and provider config. This lets one branch use Daraja while another uses KCB or Equity.
Users & Roles
Create human-friendly roles, select module permissions, then assign them to admin users.
Tenant owners can create tenant roles only. Global/platform permissions are visible only to the Global Owner.
| Role | Description | Permissions | Users | System | Actions |
|---|---|---|---|---|---|
| No roles loaded. | |||||
Admin Users
Create and manage additional admin accounts
Create a new admin user. Password is required for new users.
| Name | Role | 2FA | Status |
|---|
Login Activity
Track admin login attempts
| Time | IP | Status |
|---|
Credits: Axoryn Labs
© SmartWaves Admin • UI