Spaces:
Running
Running
| # 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. |