Skip to content

Mobile App Overview

The ProxRad mobile app is a single React Native binary that ships on both iOS and Android stores. It speaks to your ProxPanel server using the same REST endpoints as the web portal — no separate API surface, no separate authentication, no mobile-only data path.

There are two user modes baked into the same install:

  1. Customer mode — end subscribers log in with the credentials their ISP gave them and see their plan, usage, invoices, WiFi controls, and support tickets.
  2. Admin / reseller mode — operators log in with their panel username and password and get a near-complete management surface: subscribers, NAS, CDN, bandwidth rules, prepaid cards, audit, settings, and more.

The app auto-detects which mode to enter from the user_type returned by /api/auth/login. There is no mode picker; what the user can do is determined entirely by their account type and permission group on the server.

  1. Open the App Store (iOS) or Google Play (Android) and search for ProxRad.
  2. Tap Install. Bundle identifiers: com.proxrad.proxpanel on both platforms.
  3. Launch the app. On first run you’ll be asked for the server URL (e.g. https://panel.example.com) — this is the same URL you use in a browser.
  4. Enter your username and password. Customer accounts use the subscriber username (often name@domain); admins and resellers use their panel login.
┌──────────────────────┐ HTTPS / JSON ┌──────────────────────┐
│ ProxRad mobile app │ ───────────────────────────▶│ ProxPanel backend │
│ (React Native) │ │ (Go / Fiber) │
│ │ ◀───────────────────────────│ │
│ Auth store (Zustand)│ JWT (Authorization: ...) │ Same /api/* routes │
└──────────────────────┘ │ as web portal │
└──────────────────────┘
  • Auth: identical JWT used by the web portal. Tokens are stored in expo-secure-store. Logout blacklists the token server-side (see Authentication).
  • HTTP client: Axios with an interceptor that injects Authorization: Bearer <token> on every request.
  • State: Zustand stores for auth, branding (colors and logo fetched from the server), and feature-specific stores.
  • Offline: graceful — every screen handles NetworkError. There is no offline write queue; this is a thin client, not a CRDT.
  • Push: not currently wired. Notifications are delivered server-side via WhatsApp / SMS / email (see Communication). A future release will add Expo push tokens.

The mobile app does not replicate the entire web portal one-for-one. It covers the actions operators and customers actually take on a phone. Heavy bulk operations, system settings that require a CSV import, and the build / release tooling stay on the web.

Customer parity

FeatureWeb portalMobile appNotes
Dashboard / live trafficYesYesPolls /api/customer/live-traffic every 3 s on dashboard focus.
Daily / monthly usageYesYesIncludes expandable per-day session list.
Top-up dataYesYesTriggers same checkout flow.
Change service planYesYesRequires customer.can_change_service on the parent reseller.
WiFi (TR-069)YesYesRead SSID, change SSID/password, reboot CPE.
TicketsYesYesCreate, reply, attach.
Account / passwordYesYesSelf-service password change.
Public IP (rent / release)YesYesCalls the public IP billing service.
Parental controlsYesYesSync with parental device sync.
Invoices (view + QR)YesYesQR opens the public invoice URL.

Admin / reseller parity

FeatureWeb portalMobile appAdded in
Subscribers (list, edit, bulk actions)YesYesv1.0.0
Live sessionsYesYesv1.0.0
TicketsYesYesv1.0.0
Resellers + walletYesYesv1.0.0
ReportsYesYesv1.0.3
NAS / RoutersYesYesv1.0.3
Bandwidth RulesYesYesv1.0.3
Sharing DetectionYesYesv1.0.3
CDNYesYesv1.0.3
WAN CheckYesYesv1.0.3
API KeysYesYesv1.0.3
Public IPs (inventory)YesYesv1.0.3
Audit logsYesYesv1.0.4
PermissionsYesYesv1.0.4
Prepaid CardsYesYesv1.0.4
BackupsYesYesv1.0.4
Communication RulesYesYesv1.0.5
Users / Resellers (CRUD)YesYesv1.0.5
Settings (read + edit)YesYesv1.0.5
CPE Devices (TR-069)YesYesv1.0.5
Build / Release (license server only)YesNo
Bulk CSV importYesNoWeb only.
Cluster HA setupYesNoWeb only.
Network configuration (netplan)YesNoWeb only — interactive.

App releases are tracked separately from the panel binary. The mobile binary is whatever Expo / EAS build is live on the store.

Mobile versionHighlights
v1.0.5Live-traffic fallback fix when MikroTik torch is unavailable; customer WiFi and TopUp screens.
v1.0.4Live traffic widget on customer dashboard; GPS location for ticket geotag; audit, permissions, prepaid, and backups screens for admins.
v1.0.3First wave of admin screens: Bandwidth Rules, CDN, Sharing Detection, WAN Check, NAS, Reports, Public IPs.
v1.0.0 – v1.0.2Initial customer + basic admin (subscribers, sessions, tickets, resellers).

A few things behave differently because of platform constraints:

  • Tables become cards. Wide data tables (subscribers, sessions) are rendered as stacked cards on mobile. The same fields are present, just laid out vertically.
  • Bulk actions are limited to single-page selection. The web “select all 25,000 rows” affordance is intentionally absent — bulk-disconnect 25,000 subscribers from a phone is too dangerous.
  • Server-side rendered PDFs open in the system viewer. Invoices, reports, and backup downloads are handed off to the OS instead of rendered inline.
  • No background tasks. The app is purely foreground. If you put it in the background, you stop seeing live traffic updates until you bring it back.

”I just got the app — what should I do first?”

Section titled “”I just got the app — what should I do first?””
  1. Install from the App Store / Google Play.
  2. Enter your panel URL (https://panel.example.com) and your existing username + password.
  3. If you’re an admin, glance at the Dashboard to confirm subscriber counts match the web portal — if they don’t, you’re pointed at the wrong server.
  4. Customers: tap the Usage tab and confirm today’s GB matches the customer portal.

Yes — resellers see the admin mode automatically. Their permission group still applies; a reseller without subscribers.delete won’t see a delete button in either the web portal or the mobile app. The permission system is enforced on the server, not in either client.

The mobile app surfaces what the server allows. There are no mobile-only permissions; every action the app can take is a request the server already authorizes.

User typeDefault mobile capabilities
CustomerTheir own dashboard, usage, WiFi, top-up, tickets, account, public IP.
ResellerSubscribers list (scoped), services, sessions, tickets, transactions, wallet — same scope as their web view.
AdminFull surface listed in the admin parity table.

A reseller granted subscribers.view_all sees system-wide subscribers on mobile too. A read-only support reseller can see everything but their action buttons are hidden because they lack the corresponding *.edit / *.delete permissions.