Skip to main content

Web Dashboard

Nekzus includes a modern, embedded React-based web dashboard for managing your API gateway, monitoring services, and configuring routes. The dashboard is compiled directly into the Go binary, requiring no separate frontend deployment.


Overview

The web dashboard provides a terminal-inspired interface for:

  • System Monitoring - Real-time CPU, memory, and disk usage with historical graphs
  • Route Management - Create, edit, and delete proxy routes
  • Service Discovery - Review and approve discovered services
  • Device Management - Pair and manage connected devices
  • Container Operations - Start, stop, restart, and export Docker containers
  • Settings & Customization - 15 visual themes and extensive configuration options
Quick Access

After starting Nekzus, access the dashboard at:

  • Local: http://localhost:8080
  • Production (TLS): https://your-server:8443

Dashboard Layout

The dashboard uses a three-section layout optimized for operational efficiency:

Dashboard Layout


Dashboard Pages

Overview Panel

The Overview panel displays key metrics at a glance:

MetricDescription
Active RoutesNumber of currently active proxy routes
Paired DevicesTotal devices paired with this instance
Pending DiscoveriesServices awaiting approval (highlighted if > 0)
Total RequestsCumulative requests proxied through Nexus

Click any metric to jump directly to its corresponding management tab.

Recent Activity

Displays the last 6 system events in chronological order:

  • Device pairing events
  • Route configuration changes
  • Discovery approvals/rejections
  • Webhook notifications
  • Container state changes

Timestamps show relative time (e.g., "2m ago", "1h ago").

System Health

Real-time system status with visual indicators:

CPU  [========----] 65%
MEM [==========--] 8.2/16.0 GB
DISK [============] 120.5/500.0 GB

Management Console Tabs

Routes Tab

Complete route management interface with full CRUD operations.

Features:

  • Sortable table with search functionality
  • Add new routes with the "Add Route" button
  • Edit existing routes inline
  • Delete routes with confirmation dialog
  • External link icons to open routes in new tabs

Table Columns:

ColumnDescription
ApplicationRoute identifier (app ID)
PathURL path prefix (e.g., /apps/grafana/)
TargetUpstream service URL
ScopesRequired authentication scopes
StatusACTIVE, INACTIVE, PENDING, or OFFLINE

Actions:

  • Click the edit icon to modify route settings
  • Click the delete icon to remove a route (respects confirmation settings)

Discovery Tab

Review and manage auto-discovered services from Docker, Kubernetes, or mDNS.

Features:

  • Grid layout of discovery cards
  • Bulk selection with "Select All" checkbox
  • Bulk approve/reject actions
  • Individual approve/reject per card
  • Rediscover button to trigger a fresh scan
  • Port selection for multi-port containers

Card Information:

Each discovery card displays:

  • Service name and type (Docker, K8s, mDNS)
  • Address and port(s)
  • Confidence score
  • Container/pod metadata
  • Available actions

Bulk Operations:

[ ] Select All    [REJECT SELECTED]    [APPROVE SELECTED]    [REDISCOVER]
Confidence Scoring

Discovery proposals include a confidence score based on:

  • Label completeness
  • Service mesh detection (Istio)
  • Helm chart recognition
  • Naming conventions

Devices Tab

Manage paired devices and their access permissions.

Features:

  • Grid display of paired devices
  • Device status indicators (online/offline)
  • View detailed device information
  • Revoke device access
  • Pair new devices via QR code

Device Card Information:

FieldDescription
Device NameUser-defined or auto-detected name
PlatformiOS, Android, macOS, Windows, etc.
Last SeenTimestamp of last activity
StatusOnline or Offline indicator
IP AddressLast known IP address

Pairing New Devices:

  1. Click "PAIR NEW DEVICE"
  2. A QR code modal appears with:
    • Scannable QR code
    • Expiration countdown timer (5 minutes)
    • Bootstrap token (for manual entry)
  3. Scan with the Nekzus mobile app
  4. Device appears in the list after successful pairing

Containers Tab

Docker and Kubernetes container management interface.

Features:

  • Real-time container status and resource usage
  • Start, stop, restart operations
  • View container logs
  • Inspect container details
  • Export to Docker Compose format
  • Batch export for multiple containers
  • Filter by state (All, Running, Stopped)
  • Filter by runtime (Docker, Kubernetes)

Container Card Information:

  • Container name and image
  • Current state with color-coded badge
  • CPU and memory usage (for running containers)
  • Port mappings
  • Network information
  • Runtime indicator (Docker/K8s)

Export Options:

Export individual containers with options:

  • Include volumes
  • Include networks
  • Include environment variables
  • Generate YAML preview

Scripts Tab

Optional Feature

The Scripts tab is enabled by default but can be disabled in Settings.

Manage automated scripts and scheduled tasks.

View Modes:

ViewDescription
ScriptsBrowse and execute registered scripts
ExecutionsView execution history and status
WorkflowsMulti-step script sequences
SchedulesCron-based scheduled jobs

Script Actions:

  • Execute with parameters
  • Dry run (validation only)
  • Edit script configuration
  • Delete script registration

Metrics Tab

Prometheus-style metrics dashboard with real-time data.

Metric Categories:

  • Total requests processed
  • In-flight requests
  • Average latency (ms)
  • Error rate percentage
  • Latency percentiles (p50, p95, p99)
  • Requests by status code
  • Requests by HTTP method

Auto-Refresh:

Toggle auto-refresh on/off and manually refresh with the "REFRESH" button.


Settings Tab

Comprehensive configuration interface organized into sections.

General Settings

SettingDefaultDescription
Dashboard Refresh Interval10sHow often to poll for updates
TimezoneUTCTimestamp display timezone
Show TimestamptrueDisplay timestamp in footer
Enable ToolboxfalseShow/hide Toolbox tab
Enable ScriptstrueShow/hide Scripts tab
Show Only Routed ContainersfalseFilter containers by route presence

Discovery Settings

SettingDefaultDescription
Auto-Approval Threshold100%Confidence level for auto-approval
Notification Badge Threshold5Discovery count to show badge
Require Confirmation for RejectionsfalsePrompt before rejecting

Security Settings

SettingDefaultDescription
Session Timeout30 minIdle timeout duration
Require ConfirmationtruePrompt for destructive actions

Appearance Settings

SettingOptionsDescription
Terminal Theme15 themesVisual theme selection
Font SizeSmall, Medium, LargeUI font sizing
Show ASCII LogofalseDisplay logo in Overview
Compact ModefalseReduce spacing

Webhooks

Configure webhook endpoints for external integrations:

  • Webhook URL: Auto-generated endpoint
  • Webhook Key: API key for authentication
  • Generate/regenerate keys
  • Send test webhook

Notifications

Toggle notifications for:

  • New discoveries
  • Device offline alerts
  • Certificate expiration warnings
  • Route status changes
  • System health alerts

Test notification buttons for each severity level.

Certificates

TLS certificate management:

  • View installed certificates
  • Check expiration dates
  • Generate self-signed certificates
  • Auto-detect local domains
  • Delete certificates

Data Management

  • Export settings to JSON
  • Import settings from JSON
  • Clear all local data

System Information

  • Frontend version
  • Backend version
  • Connection status
  • Webhook ID
  • Local storage usage

Developer Options

  • Debug mode (verbose logging)
  • Show error details in UI
  • Log WebSocket events
  • Webhook testing tool

Theme System

Nekzus includes 15 carefully crafted themes to match your preferences.

Available Themes

ThemeDescriptionStyle
Default (Slate Professional)Modern neutral paletteDark
Obsidian DarkPure black OLED-friendlyDark
Nord FrostNordic-inspired pastelsDark
Carbon NeutralIBM Carbon-inspiredDark
Classic GreenTraditional terminalDark
CyanTeal and cyan paletteDark
AmberWarm amber monochromeDark
GruvboxWarm retro colorsDark
Gruvbox LightLight cream variantLight
Tokyo NightDeep blue with pastelsDark
Tokyo Night StormLighter Tokyo variantDark
Catppuccin MochaWarm pastel paletteDark
PipboyAmber CRT with effectsDark
Pipboy GreenGreen CRT with effectsDark
Retro80s vaporwave neonDark

CRT Effect Themes

The Pipboy themes include authentic CRT effects:

  • Scanline overlay
  • Screen flicker animation
  • Radial glow from center
  • Vignette (darkened edges)
  • Screen curvature simulation
  • Phosphor glow on text
Performance Note

CRT effects are optimized for modern browsers. On mobile devices, some effects are automatically disabled for better performance.

Changing Themes

  1. Navigate to the Settings tab
  2. Find the Appearance section
  3. Select a theme from the dropdown

Themes are persisted in localStorage and apply immediately without page reload.


Keyboard Shortcuts

ShortcutAction
Ctrl+K / Cmd+KOpen theme switcher

Real-Time Updates

The dashboard maintains a persistent WebSocket connection for real-time updates.

Event Types

EventAction
discoveryRefreshes discovery proposals
config_reloadRefreshes routes and stats
device_pairedRefreshes devices and activity
device_revokedRefreshes devices and activity
app_registeredRefreshes routes after approval
proposal_dismissedRefreshes discoveries
health_changeRefreshes route health status
webhookAdds activity and notification

Connection Status

The WebSocket connection status is displayed in the System Health panel:

  • CONNECTED (green): Real-time updates active
  • DISCONNECTED (red): Automatic reconnection in progress

The connection automatically reconnects on disconnection with exponential backoff.


Mobile Responsiveness

The dashboard is fully responsive and works on all device sizes.

Breakpoints

BreakpointLayout Changes
> 1024pxThree-column overview layout
768px - 1024pxSingle-column overview
< 768pxStacked layout, touch-optimized

Mobile Optimizations

  • Touch-friendly button sizes
  • Collapsible sections
  • Reduced CRT effects on mobile
  • Optimized font sizing
  • Scrollable tables

Server Resources Panel

Real-time resource monitoring with historical graphs.

Displayed Metrics

MetricUpdate IntervalHistory
CPU Usage5 seconds15 minutes
Memory Usage5 seconds15 minutes
Disk Usage5 seconds15 minutes

Graph Features

  • Line charts with smooth animations
  • Rolling 15-minute window (180 data points)
  • Percentage scale (0-100%)
  • Timestamp-based X-axis
  • Color-coded by metric type

Authentication Flow

The dashboard implements a secure authentication flow:

1. Check Setup Status (/api/v1/auth/setup-status)
|
+---> Setup Required? ---> Show Setup Page
|
+---> Not Required? ---> Check Authentication
|
+---> Not Authenticated? ---> Show Login Page
|
+---> Authenticated? ---> Show Dashboard

Login Page

  • Username and password authentication
  • Session persistence via JWT
  • Error display for invalid credentials

Setup Page

First-time setup for new installations:

  • Create admin user
  • Configure initial settings

Performance Features

Code Splitting

The dashboard uses React lazy loading for optimal initial load times:

  • Tab content is loaded on demand
  • Modal components are deferred
  • Chart libraries are dynamically imported

Caching

  • API responses are cached where appropriate
  • Theme preferences stored in localStorage
  • Settings persisted locally

Optimizations

  • Memoized computations for filtered data
  • Debounced search inputs
  • Virtualized lists for large datasets
  • WebSocket batching for high-frequency events

Troubleshooting

Dashboard not loading

Check 1: Verify Nekzus is running:

curl http://localhost:8080/healthz

Check 2: Check browser console for JavaScript errors

Check 3: Clear browser cache and localStorage

WebSocket disconnecting frequently

Check 1: Ensure no proxy is interfering with WebSocket connections

Check 2: Check for network firewall rules blocking WebSocket

Check 3: Verify browser supports WebSocket protocol

Theme not applying correctly

Check 1: Clear localStorage:

localStorage.removeItem('nxus-theme');

Check 2: Refresh the page

Check 3: Check for CSS conflicts with browser extensions

Real-time updates not working

Check 1: Look for "WEBSOCKET: DISCONNECTED" in System Health

Check 2: Check browser console for connection errors

Check 3: Verify WebSocket endpoint is accessible


📡 API Reference

Complete API documentation for programmatic access.

→ API Reference

🔍 Discovery Features

Learn about service discovery configuration.

→ Discovery

🧰 Toolbox

One-click service deployment catalog.

→ Toolbox

⚙️ Configuration

Full configuration reference.

→ Configuration