16 KiB
Forefront Wireless Operations Portal
Status: Scoped & Documented — awaiting build Started: July 25, 2026 Domain: my.forefrontwireless.com Access: Dual — staff (role-based) and customer self-service
Single pane of glass for Forefront Wireless operations and customer self-service. Staff get a real-time network dashboard aggregating MikroTik routers, Ubiquiti backhauls & CPEs, switches, PDUs, UPSs, and environmental monitors. Customers get account management and a service upgrade marketplace. All driven by four backend data sources — Splynx, UISP, MikroTik RouterOS, and Zabbix/SNMP.
Access Model — Role-Based (Staff) + Customer
my.forefrontwireless.com
├── /login
├── /staff/* ← role-gated
└── /customer/* ← customer-gated
Staff Roles
| Role | Permissions | Who |
|---|---|---|
| Admin | Full CRUD — devices, customers, SNMP templates, billing overrides, user management | Germaine |
| Tech | Read-write limited — troubleshoot customer issues, view all equipment, run diagnostics, reset CPEs, but no billing changes or user management | Contractors, support staff |
| View Only | Read-only across all dashboards — no config changes, no customer data mutation | Auditors, occasional helpers |
Implementation: Role stored in portal's own user table (not Splynx roles — Splynx is source-of-truth for billing, portal has its own auth). Contractors get Tech role by default.
Customer Access
- Login (email + password, or magic link)
- Tied to their Splynx customer record
- Can only see their own account, services, and usage
- No network-level visibility
Staff Dashboard — Real-Time Network Ops
The staff landing page is a grid of live-status cards grouped by device category:
Section 1: MikroTik Routers
Source: MikroTik REST API (direct) Devices: 5 × CCR2004
| Widget | Data |
|---|---|
| Router status | Online/offline, uptime |
| CPU / Memory | Live gauges |
| Aggregate throughput | Total in/out across all interfaces |
| Per-router drill-down | Interface stats, queues, DHCP leases, ARP |
Section 2: Ubiquiti Backhauls (Point-to-Point Links)
Source: UISP API
| Widget | Data |
|---|---|
| Link status | Up/down, signal strength (dBm) |
| Capacity | Current throughput vs max |
| List view | All P2P links with AirMax stats |
Section 3: Customer CPEs (Ubiquiti)
Source: UISP API
| Widget | Data |
|---|---|
| CPE status | Online/offline count, last seen |
| Signal health | Signal/chain stats from subscriber devices |
| Search | By customer name → linked CPE |
| Actions (Tech) | Reboot CPE, re-associate |
Section 4: MikroTik Switches
Source: MikroTik REST API (or SNMP via Zabbix proxy)
| Widget | Data |
|---|---|
| Switch status | Online/offline per switch |
| Port utilization | % used, PoE budget |
| VLAN membership | Trunk/access port map |
Section 5: PDUs & UPSs (Algcom)
Source: SNMP (via Zabbix or direct SNMP poll)
| Widget | Data |
|---|---|
| PDU outlet status | On/off per outlet, current draw |
| UPS status | Battery charge %, load %, runtime remaining |
| Alerts | On battery, low battery, overload |
Section 6: Environmental (TPDIN Web Monitor 3)
Source: SNMP (via Zabbix or direct) + web URL scrape
| Widget | Data |
|---|---|
| Temperature | Current, min/max 24h |
| Humidity | Current % |
| Contact sensors | Door open/closed, water detected |
| Web UI link | Direct link to TPDIN interface |
Device Inventory & SNMP Template Auto-Generation
Staff (Admin/Tech) can add new devices via the portal UI:
Add Device Form
| Field | Example | Purpose |
|---|---|---|
| Make | Algcom, MikroTik, TPDIN, Ubiquiti | Manufacturer |
| Model | ALG-PDU-8, CCR2004, W-M3 | Model identifier |
| Category | Router / Switch / PDU / UPS / Environmental / Backhaul / CPE | Dashboard section |
| IP Address | 10.x.x.x | SNMP target |
| SNMP Community | public / custom | For SNMP polling |
| Web URL | http://10.x.x.x | Direct link from dashboard |
| SNMP Template | algcom-pdu, tpdin-wm3, mikrotik-switch | Dropdown — existing templates |
Auto-Template Engine
When a new make/model is added that has no existing template, the backend:
- Probes SNMP — walks
1.3.6.1.2.1(standard MIB) to discover available OIDs - Identifies device — matches sysDescr / sysObjectID against known patterns
- Suggests template — maps discovered OIDs to widget types (gauge, status, counter, text)
- Staff approves — one-click to save as reusable template for that make/model
Once a template exists for a make+model, any new device added with that combination inherits it automatically.
Template Schema (per make/model)
{
"make": "Algcom",
"model": "ALG-PDU-8",
"category": "pdu",
"poll_interval_seconds": 60,
"widgets": [
{
"name": "Outlet 1 Current",
"oid": "1.3.6.1.4.1.x.x.x.1",
"type": "gauge",
"unit": "A",
"warning_threshold": 8,
"critical_threshold": 10
}
]
}
Architecture — 4-Source Aggregation
┌──────────────────────────────────────────────────────────────────────────┐
│ my.forefrontwireless.com │
│ ┌─────────────────────────┐ │
│ │ React SPA │ │
│ │ /staff/* │ /customer/* │ │
│ └───────────┬─────────────┘ │
└─────────────────────────────────┼────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────────┐
│ FastAPI Aggregation Backend │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐ ┌────────────────┐ │
│ │ Splynx │ │ UISP │ │MikroTik │ │ Zabbix │ │ Direct SNMP │ │
│ │ Adapter │ │ Adapter │ │ Adapter │ │ Adapter │ │ Poller │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬─────┘ └───────┬────────┘ │
│ │ │ │ │ │ │
│ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐ ┌────┴─────┐ ┌──────┴────────┐ │
│ │ Auth │ │ Role │ │ Device │ │ SNMP │ │ Template │ │
│ │ Service │ │ Manager │ │ Registry│ │ Template │ │ Engine │ │
│ └─────────┘ └─────────┘ └─────────┘ └──────────┘ └───────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌──────────────┐ ┌──────────┐ ┌──────────────┐ ┌──────────────┐
│ Splynx v4.2 │ │ UISP │ │ MikroTik │ │ Zabbix │
│ Self-hosted │ │ (UNMS) │ │ RouterOS │ │ (on-prem │
│ │ │ app2 │ │ REST API │ │ or cloud) │
└──────────────┘ └──────────┘ └──────────────┘ └──────────────┘
billing/CRM network router stats SNMP infra
Customer Portal Features
Dashboard
- Active services (what plan am I on?)
- Current bill & due date
- Data usage (from MikroTik queue stats)
- Recent payments
Account Management
- Update contact info (email, phone, address)
- Update payment method
- View invoice history
Marketplace — Service Upgrades
- Browse available plans (from Splynx tariffs)
- Compare current plan vs upgrades
- Request upgrade (generates Splynx ticket or service change)
- See prorated cost before confirming
Support
- Submit ticket (→ Splynx ticket system)
- View ticket status
- Outage notifications (opt-in SMS/email)
Hardware Inventory — Known Devices
Routers (MikroTik CCR2004 Series)
| Model | Ports | SFP+ | Cooling | Notes |
|---|---|---|---|---|
| CCR2004-1G-12S+2XS | 1× GbE, 12× SFP+, 2× SFP28 (25G) | ✓ 12+2 | Active | High-density fiber router |
| CCR2004-16G-2S+PC | 16× GbE, 2× SFP+ | ✓ 2 | Passive | Silent, 300% faster than CCR1009 |
| CCR2004-16G-2S+ | 16× GbE, 2× SFP+ | ✓ 2 | Active | Best single-core perf/watt |
Data source: MikroTik REST API — status, CPU, memory, throughput, interface stats, DHCP, queues
Switches (MikroTik CRS Series)
| Model | Ports | SFP+ | PoE | Form Factor |
|---|---|---|---|---|
| CRS317-1G-16S+RM | 1× GbE, 16× SFP+ | ✓ 16 | — | 1U rack, dual PSU |
| CRS309-1G-8S+IN | 1× GbE, 8× SFP+ | ✓ 8 | — | Desktop |
| CRS310-8G+2S+IN | 8× 2.5GbE, 2× SFP+ | ✓ 2 | — | Desktop, ROS v7 |
| CRS326-24G-2S+RM | 24× GbE, 2× SFP+ | ✓ 2 | ✓ Passive | 1U rack |
Data source: MikroTik REST API or SNMP — port map, PoE budget, VLAN memberships
Access Points / Base Stations (Ubiquiti)
| Model | SKU | Band | Gain | WiFi | Price | Notes |
|---|---|---|---|---|---|---|
| Wave AP Micro | Wave-AP-Micro | 60 GHz + 5 GHz | 13.5 dBi | 6 (802.11ax) | — | 1× 2.5GbE, IPX6, 24W |
| Wave AP | Wave-AP | 60 GHz + 5 GHz | 12 dBi | 6 (802.11ax) | — | 1× 2.5GbE + 1× 10G SFP+, IPX6 |
| LTU Rocket | LTU-Rocket | 5 GHz | — | LTU | $399 | PtMP base station, pairs with LTU Pro/LR/XE |
Data source: UISP API — channel, clients, throughput, firmware
Customer CPEs (Ubiquiti Subscriber Stations)
| Model | SKU | Band | Gain | Throughput | Price | Use Case |
|---|---|---|---|---|---|---|
| LTU Pro | LTU-Pro | 5 GHz | 24 dBi | 900+ Mbps | $179 | Standard 5 GHz CPE, 14° beam |
| LTU LR | LTU-LR | 5 GHz | 26 dBi | 900+ Mbps | $99 | Long range 5 GHz, 26 dBi |
| Wave Nano | Wave-Nano | 60 GHz | — | — | $279 | Compact 60 GHz CPE |
| Wave LR | Wave-LR | 60 GHz | — | — | $379 | Long range 60 GHz CPE |
| airFiber 60 LR | AF60-LR | 60 GHz | — | — | $299 | Dual-mode: PtP link or PtMP client |
Data source: UISP API — online/offline, signal (dBm), throughput, reboot (Tech role)
Backhauls (Ubiquiti Point-to-Point Links)
| Model | SKU | Band | Gain | Beamwidth | Price | Notes |
|---|---|---|---|---|---|---|
| airFiber 60 XR | AF60-XR | 60 GHz + 5 GHz failover | 26 dBi | 5° × 5° | $999 | Extreme range, dual-band redundancy |
| Wave Pro | Wave-Pro | 60 GHz | — | — | $599 | High-capacity 60 GHz PTP/PTMP |
| Wave LR | Wave-LR | 60 GHz | — | — | $379 | Can serve as backhaul or CPE |
Data source: UISP API — link status, signal strength, capacity %, uptime
DC Power Systems (PacketFlux)
| Device | Description | SNMP | Notes |
|---|---|---|---|
| PacketFlux RackInjector | Modular DC power injector, hot-swappable, bench-repairable | ✓ via SiteMonitor | Individual port fuses, per-component replacement |
| RackInjector Hardware Docs | Installation & configuration manual | — | Internal component layout, power distribution |
Data source: SNMP via PacketFlux SiteMonitor system
DC UPS & PDUs (Algcom)
| SKU | Model | Spec | SNMP | Notes |
|---|---|---|---|---|
| FN-4800-10-SNMP | POWER ADVANCED 48-540-M | 540W / 10A, 48V DC UPS | ✓ | LiFePO4 compatible |
| FN-4800-25-SNMP | POWER ADVANCED 48-1350-M | 1350W / 25A, 48V DC UPS | ✓ | Larger capacity |
| 37030030001 | DC PDU Monitored 1U | 8× 10A outputs, 80A total, 10–60 VDC | ✓ SNMPv2 | Per-outlet V/A/W, remote on/off, scheduling, undervoltage shutdown, Zabbix/Grafana/LibreNMS compatible |
Data source: SNMP — per-output voltage, current, power; battery charge/load/runtime for UPS models
Environmental Monitors (TPDIN)
| Device | Data Source | Widgets |
|---|---|---|
| TPDIN Web Monitor 3 | SNMP + web URL scrape | Temperature, humidity, contact sensors (door/water) |
Data source: SNMP (temp/humidity/contacts) + HTTP scrape of web interface for backup data
Build Phases
| Phase | What | Complexity |
|---|---|---|
| 1 | Splynx adapter + auth system + roles + customer dashboard | Medium |
| 2 | MikroTik adapter + staff router/switch dashboard | Medium |
| 3 | UISP adapter + backhaul/CPE dashboard | Medium |
| 4 | SNMP poller + template engine + PDU/UPS/environmental dashboard | High |
| 5 | Customer marketplace (plan comparison + upgrade flow) | Medium |
| 6 | Device registry UI + auto-template generation | High |
Integration Dependencies
| Source | Adapter Type | Auth | Status |
|---|---|---|---|
| Splynx | REST (HMAC-SHA256 signature) | Key + secret | ✓ Proven |
| UISP | REST (API token) | Settings → Users → API Access | Token needed |
| MikroTik | REST (basic auth) | Read-only API user per router | Users needed |
| Zabbix | REST (API token) | Zabbix API user | TBD — cloud migration |
| SNMP | Direct UDP poll | Community string per device | Template needed |
Related
- Splynx v2 docs: https://api-doc.splynx.com/
- UISP docs: https://help.ui.com/hc/en-us/categories/360001181833-UISP
- MikroTik REST API: https://help.mikrotik.com/docs/display/ROS/REST+API
- Zabbix API: https://www.zabbix.com/documentation/current/en/manual/api
- Git: https://git.itpropartner.com/ippadmin/forefront-wireless-portal