A high-performance, hardware-integrated dashboard system for real-time data visualization and control.
AriesUI is the frontend component of the Comms v3.0 ecosystem, providing a drag-and-drop widget dashboard with seamless hardware integration, real-time data streaming, and professional-grade performance optimizations.
- Node.js 18+
- npm or yarn
- Python 3.8+ (for backend integration)
# Clone the repository
git clone https://github.com/AryanRai/AriesUI.git
cd AriesUI
# Install dependencies
npm install
# Start development server
npm run dev
# Or run as Electron desktop app
npm run electron-dev# Build for web
npm run build
# Build Electron desktop app
npm run build-electron- Hardware Acceleration: GPU-optimized with
translate3d()transforms - 60fps Rendering: RequestAnimationFrame-based smooth interactions with RAF throttling
- Virtual Grid: Viewport culling for thousands of widgets
- Lazy Loading: Progressive widget loading for optimal performance
- Modular Architecture: Main component reduced from 2,718 to 1,048 lines (61% reduction)
- Optimized Event Handling: RAF throttling for smooth drag operations even on maximized windows
- Real-time Streams: WebSocket integration with Comms backend
- Multi-Stream Widgets: Connect multiple sensors to single displays
- Stream Configurator: Built-in interface for hardware setup
- Two-way Communication: Control hardware devices from the dashboard
- Drag & Drop: Smooth widget positioning with collision detection
- Nested Containers: Organize widgets in resizable containers
- Dark/Light Themes: Professional theming with custom color schemes
- Responsive Design: Works on desktop, tablet, and mobile
- Widget Marketplace: Install community-created widgets
- Custom Development: Create your own sensors, controls, and visualizations
- Dependency Management: Automatic handling of external libraries
- Hot Reload: Instant plugin development feedback
π AriesUI Structure
βββ π― Main Dashboard # Refactored modular main-content.tsx (1,048 lines)
β βββ π§ Custom Hooks # useViewportControls, useAutoSave, useDragAndDrop
β βββ ποΈ Grid Components # ViewportControls, PerformanceMonitor
β βββ β‘ Event Handlers # useKeyboardShortcuts, useResizeHandling
βββ π§ Widget System # Modular AriesMods plugins
βββ π‘ Hardware Integration # Real-time data streaming
βββ β‘ Performance Layer # Hardware acceleration & RAF optimization
βββ π¨ Theme System # Dark/light modes & custom colors
- π‘οΈ Sensors: Temperature, pressure, voltage displays
- ποΈ Controls: Toggles, sliders, buttons for hardware control
- π Visualization: Charts, graphs, 3D visualizations
- π§ Utility: Clocks, calculators, system monitors
- π Full Documentation - Complete implementation guide
- π§© AriesMods Development - Create custom widgets
- β‘ Hardware Integration - Connect to hardware
- ποΈ Project Structure - Codebase architecture
- π¨ UI Components Guide - Available UI components
- π API Reference - Component APIs and hooks
- βοΈ Configuration - Setup and configuration options
AriesUI seamlessly integrates with the Comms v3.0 ecosystem:
# Start Comms backend components
python HyperThreader.py # Process manager
python insposoftware/sh/sh.py # Stream handler
python insposoftware/en/en.py # Hardware engine
# Start AriesUI frontend
npm run electron-dev # Desktop app
# OR
npm run dev # Web version// Connect widget to hardware stream
const { value, status, metadata } = useCommsStream('module1.temperature')
// Configure stream mapping
const streamMapping = {
streamId: 'module1.temperature',
multiplier: 1.8,
offset: 32, // Celsius to Fahrenheit
unit: 'Β°F',
precision: 1
}// Basic AriesMod widget template
import { AriesModProps } from '@/types/ariesmods'
const CustomSensor: React.FC<AriesModProps> = ({
id, title, data, config, onConfigChange
}) => {
return (
<Card className="w-full h-full">
<CardHeader>
<CardTitle>{title}</CardTitle>
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">
{data?.value || '--'} {config?.unit || ''}
</div>
</CardContent>
</Card>
)
}
export default CustomSensor// Hardware-accelerated dragging with RAF throttling
const { isDragging, position } = usePerformanceDrag({
onDragStart: handleDragStart,
onDragEnd: handleDragEnd,
useGPU: true,
useRAFThrottling: true // Optimized for maximized windows
})
// Virtual grid for large datasets
const virtualGrid = useVirtualGrid({
itemCount: widgets.length,
viewportSize: containerSize,
bufferSize: 200
})
// Optimized toolbar dragging
const { handleMouseMove, handleMouseUp } = useToolbarDrag({
rafThrottling: true,
snapEnabled: true,
optimizedForMaximized: true
})The massive main-content.tsx component has been successfully refactored from a monolithic 2,718-line file into a clean, modular architecture:
useViewportControls- Viewport state, zoom/pan logic, wheel handlinguseAutoSave- Auto-save functionality, export/import, history managementuseKeyboardShortcuts- Keyboard event handlers for all shortcutsusePerformanceMonitoring- Performance metrics, virtual rendering, RAF optimizationuseDragAndDrop- Drag state and handlers with push physicsuseResizeHandling- Resize operations and handle management
ViewportControls- Zoom toolbar, viewport info, pan controlsPerformanceMonitor- Performance status display with metrics
- 61% Code Reduction: 2,718 β 1,048 lines
- Better Maintainability: Clear separation of concerns
- Enhanced Performance: Optimized RAF throttling for smooth drag operations
- Improved Testing: Isolated hooks and components
- Better Developer Experience: Reduced cognitive load
- Main Content: 2,718 lines β 1,048 lines (61% reduction through modular refactor)
- Frame Rate: Consistent 60fps during interactions with optimized RAF throttling
- Memory Usage: 50% reduction with virtual rendering
- Toolbar Performance: Enhanced drag performance with RAF throttling for smooth maximized window interactions
- Load Time: Lazy loading reduces initial bundle size
- GPU Utilization: Hardware acceleration for all transforms
- β Chrome 88+ (Recommended)
- β Firefox 85+
- β Safari 14+
- β Edge 88+
- β‘ Electron (Desktop)
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-widget - Develop your changes with tests
- Submit a pull request
- TypeScript for type safety
- ESLint + Prettier for code formatting
- Conventional Commits for commit messages
- Component Tests with Jest + Testing Library
MIT License - see LICENSE file for details.
- π§ Email: aryanrai170@gmail.com
- π Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
- π Wiki: Project Wiki
Built with β€οΈ for the hardware development community
