File size: 5,239 Bytes
042d8bf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Distributed Task System (DTS)

## Overview

The Distributed Task System (DTS) is a full-stack web application that manages distributed computing across multiple nodes. It features a React frontend with shadcn/ui components and an Express.js backend with PostgreSQL database integration via Drizzle ORM. The system enables peer discovery, task distribution, load balancing, and real-time monitoring of distributed computing resources.

## System Architecture

### Frontend Architecture
- **Framework**: React 18 with TypeScript
- **Build Tool**: Vite with custom configuration
- **UI Library**: shadcn/ui components built on Radix UI primitives
- **Styling**: Tailwind CSS with custom dark theme
- **State Management**: TanStack Query for server state management
- **Routing**: Wouter for lightweight client-side routing
- **Real-time Updates**: WebSocket connection for live system monitoring

### Backend Architecture
- **Runtime**: Node.js with Express.js framework
- **Database**: PostgreSQL with Drizzle ORM
- **Real-time Communication**: WebSocket Server for live updates
- **Task Execution**: Custom task executor with built-in operations
- **Peer Discovery**: Bonjour/mDNS-based service discovery
- **Security**: Custom security manager with encryption and digital signatures

### Key Components

#### Database Schema
- **Nodes Table**: Stores information about connected computing nodes (id, name, ip, port, status, load, capabilities)
- **Tasks Table**: Manages distributed tasks (id, name, status, nodeId, complexity, duration, result, error)
- **System Metrics Table**: Tracks performance metrics (nodeId, cpuUsage, memoryUsage, timestamp)
- **System Logs Table**: Centralized logging (level, message, source, nodeId, timestamp)

#### Services
- **OffloadSystem**: Orchestrates task distribution and peer management
- **PeerDiscovery**: Uses Bonjour protocol for automatic node discovery on the network
- **TaskExecutor**: Handles built-in tasks like matrix multiplication, prime calculation, and data processing
- **SecurityManager**: Manages payload encryption, digital signatures, and secure communication
- **SystemMonitor**: Tracks system performance and resource utilization

#### Frontend Components
- **Dashboard**: Main interface showing system overview and metrics
- **MetricsGrid**: Real-time system performance visualization
- **NodesTable**: Connected nodes management interface
- **TaskActivity**: Task execution monitoring and status tracking
- **SecurityPanel**: Security status indicators
- **SystemLogs**: Centralized log viewing interface

## Data Flow

1. **Node Registration**: Nodes automatically discover and register with the system via mDNS
2. **Task Submission**: Tasks are submitted through the web interface or API
3. **Load Balancing**: System evaluates node capacity and distributes tasks accordingly
4. **Task Execution**: Tasks are executed on selected nodes with real-time status updates
5. **Result Collection**: Results are collected and stored in the database
6. **Real-time Updates**: WebSocket connections push updates to connected clients

## External Dependencies

### Production Dependencies
- **Database**: @neondatabase/serverless for PostgreSQL connection
- **ORM**: drizzle-orm and drizzle-zod for database operations
- **UI Components**: @radix-ui/* packages for accessible UI primitives
- **Networking**: bonjour-service for peer discovery
- **Real-time**: ws (WebSocket) for live updates
- **Query Management**: @tanstack/react-query for server state
- **Session Management**: connect-pg-simple for session storage

### Development Dependencies
- **Build Tools**: Vite, esbuild for production builds
- **Type Safety**: TypeScript with strict configuration
- **Code Quality**: ESLint integration (implied by tsconfig)
- **Development Experience**: @replit/vite-plugin-runtime-error-modal and cartographer

## Deployment Strategy

### Development Mode
- Frontend served via Vite dev server with HMR
- Backend runs with tsx for TypeScript execution
- Database migrations handled via drizzle-kit push
- Automatic service discovery in local network

### Production Build
1. Frontend built with Vite to `dist/public`
2. Backend compiled with esbuild to `dist/index.js`
3. Single Node.js process serves both static files and API
4. PostgreSQL database connection via environment variables
5. WebSocket server integrated with HTTP server

### Environment Configuration
- `DATABASE_URL`: PostgreSQL connection string (required)
- `NODE_ENV`: Environment mode (development/production)
- `NODE_NAME`: Custom node identifier
- `SHARED_SECRET`: Security encryption key

## Changelog
- June 29, 2025. Initial setup
- June 29, 2025. Added broadcast messaging capability to send messages to all connected devices from the index page
  - Created broadcast_messages table in PostgreSQL database
  - Implemented API endpoints for sending and retrieving broadcast messages  
  - Added real-time WebSocket broadcasting to all connected clients
  - Created bilingual UI components with Arabic interface
  - Added navigation link in sidebar for easy access
  - Integrated with existing authentication and security systems

## User Preferences

Preferred communication style: Simple, everyday language.