Skip to main content

Hub UI - Tafy Studio Frontend

The Hub UI is the Next.js-based web interface for Tafy Studio, providing an intuitive dashboard for robot fleet management, visual programming, and real-time monitoring.

Overview

The Hub UI delivers:

  • Device Management: Register, configure, and monitor robot nodes
  • Visual Programming: Integrated Node-RED flow editor
  • Real-time Monitoring: Live telemetry and system status
  • 3D Visualization: Robot state and sensor visualization
  • Responsive Design: Works on desktop, tablet, and mobile
  • Dark Mode: Built-in theme support

Features

  • Modern React 18 with TypeScript
  • Next.js 14 App Router
  • Tailwind CSS for styling
  • Real-time WebSocket updates
  • Integrated Node-RED editor
  • 3D visualization with Three.js
  • Responsive Material Design
  • PWA capabilities

Getting Started

Prerequisites

Installation

# Install dependencies
pnpm install

# Copy environment template
cp .env.local.example .env.local

# Edit .env.local with your configuration

Configuration

Key environment variables:

# .env.local
NEXT_PUBLIC_API_URL=http://localhost:8000
NEXT_PUBLIC_WS_URL=ws://localhost:8000
NEXT_PUBLIC_NATS_WS_URL=ws://localhost:8222
NEXT_PUBLIC_NODE_RED_URL=http://localhost:1880

Development

# Start development server
pnpm dev

# Build for production
pnpm build

# Run production build
pnpm start

# Run linting
pnpm lint

# Run type checking
pnpm typecheck

Project Structure

hub-ui/
├── app/ # Next.js app directory
│ ├── (dashboard)/ # Dashboard routes
│ │ ├── devices/ # Device management
│ │ ├── flows/ # Flow editor
│ │ ├── monitoring/ # Real-time monitoring
│ │ └── settings/ # Configuration
│ ├── api/ # API routes
│ ├── layout.tsx # Root layout
│ └── page.tsx # Home page
├── components/ # React components
│ ├── ui/ # Base UI components
│ ├── devices/ # Device components
│ ├── flows/ # Flow editor components
│ └── monitoring/ # Monitoring components
├── lib/ # Utility functions
│ ├── api/ # API client
│ ├── hooks/ # Custom React hooks
│ └── utils/ # Helper functions
├── public/ # Static assets
└── styles/ # Global styles

Key Components

Device Dashboard

  • Real-time device status
  • Capability discovery
  • Configuration management
  • Firmware updates

Flow Editor

  • Embedded Node-RED interface
  • Custom Tafy nodes
  • Flow deployment
  • Version control

Monitoring

  • Real-time telemetry graphs
  • 3D robot visualization
  • Alert management
  • Historical data

Settings

  • System configuration
  • User management
  • Theme preferences
  • Export/Import

UI Components

The project uses a custom component library built on:

  • Radix UI primitives
  • Tailwind CSS styling
  • Framer Motion animations
  • Recharts for data visualization
  • Three.js for 3D graphics

Component Examples

// Using a device card
import { DeviceCard } from '@/components/devices/device-card';

<DeviceCard
device={device}
onConfigure={() => handleConfigure(device.id)}
showTelemetry
/>;

// Real-time telemetry
import { TelemetryChart } from '@/components/monitoring/telemetry-chart';

<TelemetryChart deviceId={deviceId} metric="cpu_usage" timeRange="1h" />;

State Management

  • Server state: TanStack Query (React Query)
  • Client state: Zustand for global state
  • Form state: React Hook Form
  • WebSocket state: Custom hooks

API Integration

The UI communicates with the Hub API via:

// lib/api/client.ts
import { createApiClient } from '@/lib/api';

const api = createApiClient({
baseURL: process.env.NEXT_PUBLIC_API_URL,
});

// Usage
const devices = await api.devices.list();
const flow = await api.flows.create(flowData);

Testing

# Run unit tests
pnpm test

# Run tests in watch mode
pnpm test:watch

# Run E2E tests
pnpm test:e2e

# Generate coverage report
pnpm test:coverage

Building

Development Build

pnpm dev

Production Build

# Create optimized build
pnpm build

# Analyze bundle size
pnpm analyze

Docker

# Build Docker image
docker build -t tafystudio/hub-ui:latest .

# Run container
docker run -d \
--name hub-ui \
-p 3000:3000 \
-e NEXT_PUBLIC_API_URL=http://api:8000 \
tafystudio/hub-ui:latest

Performance

  • Automatic code splitting
  • Image optimization
  • Font optimization
  • Prefetching
  • ISR (Incremental Static Regeneration)
  • Edge runtime for API routes

Accessibility

  • WCAG 2.1 AA compliant
  • Keyboard navigation
  • Screen reader support
  • ARIA labels
  • Focus management

Browser Support

  • Chrome/Edge (latest)
  • Firefox (latest)
  • Safari (latest)
  • Mobile browsers

Contributing

See the main project CONTRIBUTING.md for guidelines.

Development Tips

  1. Use the component library for consistency
  2. Follow the established folder structure
  3. Write tests for new features
  4. Update Storybook for new components
  5. Check bundle size impact

License

Apache 2.0 - See LICENSE for details.