Skip to content

NetBr3ak/forge-grid


🏭 ForgeGrid

Real-Time Production Intelligence System


Live Demo    GitHub Release    License: MIT

React 19 TypeScript Tailwind Zustand


Next-generation manufacturing execution system with intelligent task scheduling,
real-time machine monitoring, and comprehensive analytics dashboard.


🔥 FORGE LAB • Regional Hackathon 2025



✨ Features

🏭 Production Monitoring

  • 8 Machines - 5× CNC, 2× Assembly, 1× Test
  • Live Status - Processing, Idle, Breakdown, Maintenance
  • Progress Tracking - Real-time task completion bars
  • Queue Management - Visual task queues per machine

⚡ Smart Scheduling

  • Priority System - Critical, Rush, Normal
  • Auto Assignment - ForgeFlow™ algorithmic balancing
  • Breakdown Recovery - Automatic task redistribution
  • Work Stealing - Dynamic load rebalancing

📊 Analytics Dashboard

  • KPI Cards - Throughput, Completed, In Progress, Waiting
  • Trend Charts - Hall Load & Task Volume over time
  • Machine Utilization - Per-machine efficiency metrics
  • Event Log - Complete audit trail with filtering

📥 Professional Export

  • Excel Reports - Styled workbooks with multiple sheets
  • CSV Export - Raw event data for analysis
  • JSON Export - Structured data format
  • Dark Theme - Matching app design system

🧠 ForgeFlow™ Scheduling Algorithm

Proprietary multi-objective optimization engine for intelligent production scheduling

Algorithm Complexity Tick Rate

Algorithm Overview

ForgeFlow™ implements the MCT-S (Minimum Completion Time with Setup Awareness) paradigm - a sophisticated hybrid approach that combines proven scheduling theory with practical manufacturing constraints.

Theoretical foundations:

  • Johnson's Rule - Optimal 2-machine flow shop scheduling
  • List Scheduling - Priority-based greedy assignment
  • Work Stealing - Dynamic load balancing from parallel computing
  • Bin Packing - LPT heuristic for makespan minimization

System Architecture

ForgeFlow Pipeline

Core Principles

Principle Description
Priority-Weighted Scheduling Critical (3×) → Rush (2×) → Normal (1×) weighted queue ordering
Constraint Tightness First Tasks with fewer capable machines are scheduled first (hardest-to-place strategy)
Longest Processing Time (LPT) Among equal priorities, longer tasks are scheduled first for optimal bin-packing
Setup Time Optimization Minimizes tool changeover by grouping similar task types
Dynamic Work Stealing Idle machines automatically "steal" tasks from overloaded queues

Scoring Formula

Each machine-task pair is evaluated using a composite scoring function:

Score = (ETA × priorityWeight) + setupPenalty + transportTime - preferenceBonus
Component Weight Description
ETA 1.0× Estimated completion time on target machine
priorityWeight 1-3× Task urgency multiplier
setupPenalty +3 min Added if task type differs from previous
transportTime +5 min Inter-station transfer overhead
preferenceBonus -10% Deducted for preferred machine match

Lower score = Better assignment

Scheduling Phases

Phase 1: Task Sorting

Priority:    Critical > Rush > Normal
Constraints: Fewer machines = Higher priority  
Workload:    Longer tasks first (LPT)

Phase 2: Machine Scoring

For each capable machine:
  → Calculate queue wait time
  → Add task processing time
  → Apply speed multiplier
  → Check setup requirements

Phase 3: Optimal Assignment

Select machine with lowest score
  → Tie-breaker: Prefer no setup
  → Update machine queue
  → Log assignment event

Phase 4: Work Stealing

For each idle machine:
  → Scan busy machine queues
  → Find compatible task
  → Transfer if beneficial
  → Recalculate ETA

Key Features

🎯 Intelligent Task Sorting

  • Priority - Critical tasks processed first
  • Constraint Tightness - Fewer options = higher urgency
  • Workload - LPT for optimal bin-packing
  • FIFO fallback - Equal tasks sorted by arrival

⚖️ Adaptive Load Balancing

  • Time-based - Balances by workload, not count
  • Real-time ETA - Dynamic completion estimates
  • Setup-aware - Groups similar operations
  • Capacity-aware - Respects machine throughput

🔄 Proactive Work Stealing

  • Idle machines scan overloaded queues
  • Benefit-based task selection
  • Full capability validation
  • Automatic logging & audit trail
  • Zero manual intervention required

🚨 Instant Breakdown Recovery

  • Immediate task return to pool
  • In-progress work preserved
  • Global queue redistribution
  • Multi-channel alert dispatch
  • Full rescheduling in <500ms

Algorithm Implementation

// ForgeFlow MCT-S Algorithm (simplified)
function assignTasks(tasks: Task[], machines: Machine[]): void {
  // Phase 1: Multi-key sorting (Priority -> Constraint -> LPT)
  const sorted = tasks.sort((a, b) => {
    const priority = { critical: 3, rush: 2, normal: 1 };
    if (priority[b.priority] !== priority[a.priority]) 
      return priority[b.priority] - priority[a.priority];
    if (a.preferredMachines.length !== b.preferredMachines.length)
      return a.preferredMachines.length - b.preferredMachines.length;
    return b.workload - a.workload;
  });

  // Phase 2-3: MCT-S scoring with preference bonus
  for (const task of sorted) {
    let bestScore = Infinity, bestMachine = null;
    
    for (const machine of getCapableMachines(task)) {
      const eta = machine.queueTime + task.workload * machine.speed;
      const setup = needsSetup(machine, task) ? SETUP_TIME : 0;
      const preferenceBonus = task.preferredMachines.includes(machine.id) 
        ? eta * 0.10 : 0;
      
      // Score = (ETA - preferenceBonus) x priorityWeight
      const priorityWeight = { critical: 1, rush: 1.5, normal: 2 };
      const score = (eta + setup - preferenceBonus) * priorityWeight[task.priority];
      
      if (score < bestScore) {
        bestScore = score;
        bestMachine = machine;
      }
    }
    if (bestMachine) bestMachine.queue.push(task);
  }

  // Phase 4: Benefit-based work stealing
  for (const idle of getIdleMachines()) {
    let bestSteal = null;
    
    for (const busy of getBusyMachines()) {
      for (const task of busy.queue) {
        if (!canProcess(idle, task)) continue;
        
        const currentETA = getTaskETA(task, busy);
        const newETA = task.workload * idle.speed;
        const benefit = currentETA - newETA;
        
        if (benefit > 0 && (!bestSteal || benefit > bestSteal.benefit)) {
          bestSteal = { task, from: busy, benefit };
        }
      }
    }
    if (bestSteal) transferTask(bestSteal);
  }
}

Production Overheads

Parameter Value Purpose
TRANSPORT_TIME 5 min Inter-station transfer overhead
SETUP_TIME 3 min Tool changeover penalty (if task type differs)
ASSIGNMENT_DELAY 0 ms Immediate scheduling (configurable)
BATCH_WINDOW 5 Tasks analyzed simultaneously for optimization

Machine Fleet Configuration

ID Machine Type Speed Specialization
M1 Haas VF-2 CNC 0.25-0.6× Precision aluminum
M2 DMG MORI CNC 0.25-0.6× Precision aluminum
M5 Mazak CNC 0.25-0.6× Precision aluminum
M6 Okuma CNC 0.25-0.6× Precision aluminum
M8 Haas VF-4 CNC 0.25-0.6× Precision aluminum
M3 Kuka Robot Assembly 0.95-1.05× Assembly, welding, wiring
M7 Fanuc Robot Assembly 0.95-1.05× Assembly, welding, wiring
M4 EOL Station Test 1.10-1.30× QC, calibration, packaging

Performance Metrics

Metric Value Notes
Scheduling Latency < 200ms From task arrival to assignment
Rebalance Time < 500ms Full queue redistribution
Memory Footprint ~50KB Per 100 active tasks
Max Throughput 500+ tasks/h Under optimal conditions
Work Steal Rate ~15% Tasks redistributed dynamically
Setup Optimization ~40% Reduction in changeover time

💎 Business Value

Legacy System ForgeGrid Improvement
Response Time 30 min 200 ms 🟢 99.9% faster
Cost per Incident $36,000 $2,400 🟢 $33,600 saved
Task Rebalancing Manual Automatic 🟢 100% automated

💰 Projected Annual Savings: $4,032,000

Based on 10 incidents/month @ $72k/h downtime cost (ELPLC validation data)


🎨 Design System

Premium dark theme inspired by aerospace & industrial control systems:

Color Name Hex Usage
🔵 Accent #00D4FF Primary actions, highlights
🟢 Success #00FF88 Completed, positive status
🟠 Warning #FFAA00 Rush priority, caution
🔴 Danger #FF3355 Critical, breakdown alerts
🟣 Info #7B61FF Informational elements

🛠️ Tech Stack

Layer Technology Purpose
Frontend React 19 Modern UI Framework
Language TypeScript Type Safety
State Zustand Lightweight State Management
Styling Tailwind CSS 4 Utility-First CSS
Animation Framer Motion Smooth Transitions
Charts Recharts Data Visualization
Export ExcelJS Professional Reports
Build Vite Fast Build Tool

🚀 Quick Start

# Clone & install
git clone https://github.com/NetBr3ak/forge-grid.git
cd forge-grid/production-simulator
npm install

# Development
npm run dev

# Production build
npm run build

📁 Project Structure

production-simulator/
├── src/
│   ├── components/          # UI Components
│   │   ├── GlobalMetricsPanel.tsx
│   │   ├── MachineColumn.tsx
│   │   ├── TaskPoolPanel.tsx
│   │   └── AnalyticsWidgets.tsx
│   ├── pages/
│   │   └── Analytics.tsx    # Analytics Dashboard
│   ├── store.ts             # Zustand State Management
│   ├── config.ts            # System Configuration
│   └── App.tsx              # Main Application
└── package.json

⚙️ Configuration

Setting Value Description
REFRESH_RATE 200ms System tick interval
CNC_PROPORTION 55% Task distribution to CNC machines
INITIAL_BATCH 17-28 Starting task pool size



Crafted with precision for Regional Hackathon 2025


GitHub    License


About

Lekki system do monitorowania maszyn i zadań na hali produkcyjnej

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages