4.0 KiB
4.0 KiB
CHANGELOG — Forefront Wireless Customer Portal
2026-07-25 (PM) — Multi-Source Architecture Scoped
Scope expansion: The portal at my.forefrontwireless.com will aggregate data from four sources, not just Splynx:
Data Sources
| Source | Purpose | Auth | Location |
|---|---|---|---|
| Splynx v4.2 | Billing, CRM, customers, invoices, services | HMAC-SHA256 signature | Self-hosted at portal.forefrontwireless.com |
| UISP (UNMS) | Network management, tower/AP inventory, link quality | API token | app2 Docker (unms.forefrontwireless.com) |
| MikroTik RouterOS | Real-time bandwidth, DHCP leases, queue stats | REST API or SSH | 5 × CCR2004 routers on network |
| Zabbix / SNMP | Infrastructure monitoring, SNMP for non-UISP devices, historical graphs | Zabbix API | Currently on-prem; may move to cloud |
Architecture Decision
The FastAPI backend is now an aggregation layer — read-only adapters for each source, normalizing data into a unified customer view. The backend never writes to Splynx/UISP/MikroTik/Zabbix directly; all mutations stay in the native tools.
Build Phases
| Phase | Sources | V1? |
|---|---|---|
| 1 | Splynx (billing + CRM) | Yes — core self-service |
| 2 | MikroTik (router telemetry) | Yes — data usage, device lists |
| 3 | UISP (network management) | V2 — network status, outage awareness |
| 4 | Zabbix/SNMP (infra monitoring) | V2+ — SLA dashboards, historical graphs |
Zabbix Migration Options
- Recommended: Cloud Zabbix + on-prem proxy — SNMP stays local, server moves to managed infra
- Alternative: Keep on-prem, API tunnel via Tailscale — zero cost, simple
- For later: Decision deferred until portal reaches Phase 4
Page-to-Source Mapping
Every customer-facing feature mapped to its backend data provider — see README Data Aggregation Model section.
2026-07-25 (AM) — Splynx API Connection
Context: Germaine shared Splynx API credentials for Forefront Wireless, his WISP company. The self-hosted Splynx instance (v4.2) runs at portal.forefrontwireless.com/admin/. The goal is to build a branded customer portal at my.forefrontwireless.com.
Completed
- API connection established — Splynx API v2.0 at
/api/2.0/verified working - Authentication cracked — Signature-based auth (HMAC-SHA256) with microtime nonce. Three methods tested:
- ✅ Signature:
Splynx-EA (key=K&nonce=N&signature=S)— works - ✅ Access Token: POST
/admin/auth/tokens— generates token with 30-min expiry - ⚠️ Basic Auth: returns 403 unless "Unsecure access" is enabled on the API key
- ✅ Signature:
- API key configured — Full permissions on all resources (customers, services, finance, networking, support, tariffs, scheduling, inventory)
- Endpoint reconnaissance — Verified working:
GET /admin/customers/customer— 43 customers (33 active, 9 disabled)GET /admin/customers/customer-internet-services/{id}— per-customer servicesGET /admin/networking/routers— 5 MikroTik CCR2004 routersGET /admin/tariffs/internet— 9 plans ($59.95-$299.95/mo)GET /admin/finance/invoices— billing records
- Splynx quirks documented — 405 on query-param service endpoints, tariff name resolution, signature nonce format
Decisions
- Stack: React SPA → FastAPI backend → Splynx API v2.0. Same pattern as IntelSight and VoIPSimplicity.
- Hosting: CloudPanel on app3 (152.53.241.111) — keeps customer portals together
- Auth pattern: Server-to-server signature auth (not per-user Access Tokens) — portal handles its own user auth, backend proxies to Splynx
- Domain: my.forefrontwireless.com (follows ITPP product convention: my.*.com)
- Building after: IntelSight + LaunchCheck (shared infrastructure, shared auth patterns, reusable Super Search engine)
Reference: API Credentials
Key: 5a8dc490716424f435306f2c18b4fdcb
Secret: 5773f779e5ae5aac965845a66bd857a0
Base: https://portal.forefrontwireless.com/api/2.0/