# Resource Allocation Component Implementation

## Overview
Implement a Resource Allocation component for the BZZZ setup wizard to allow users to configure CPU, memory, and storage allocation for different BZZZ services.

## Current Status
- **Step removed from setup wizard** (temporarily) - located between AI Integration and Service Deployment
- **Placeholder component exists** at `install/config-ui/app/setup/components/ResourceAllocation.tsx`
- **System detection available** - hardware information already captured in System Detection step

## Requirements

### 1. System Resource Display
- [ ] Display detected system resources from SystemDetection step:
  - CPU cores available
  - Total memory (RAM) 
  - Available storage space
  - GPU information (if applicable)
- [ ] Show current system utilization/usage

### 2. Service Resource Configuration
- [ ] Allow allocation for BZZZ services:
  - **BZZZ API Server** (CPU cores, memory)
  - **MCP Server** (CPU cores, memory) 
  - **P2P Network** (bandwidth, connections)
  - **Web UI** (minimal resources)
  - **Storage Services** (disk space allocation)
- [ ] Configurable resource limits and reservations
- [ ] Docker container resource constraints integration

### 3. Resource Validation
- [ ] Ensure total allocations don't exceed available resources
- [ ] Minimum resource requirements validation
- [ ] Warning for resource over-allocation
- [ ] Real-time calculation of remaining resources

### 4. Performance Recommendations
- [ ] Suggest optimal resource distributions based on:
  - Detected hardware capabilities
  - Intended cluster role (coordinator vs worker)
  - Expected workload patterns
- [ ] Preset configurations:
  - **Development** (minimal resources)
  - **Production** (balanced allocation)
  - **High-Performance** (maximum allocation)

### 5. Integration Points
- [ ] Receive system info from System Detection step
- [ ] Pass resource config to Service Deployment step
- [ ] Generate Docker Compose resource constraints
- [ ] Integration with cluster formation for multi-node awareness

## Technical Implementation

### Component Structure
```typescript
interface ResourceConfig {
  cpu: {
    bzzzApi: number      // CPU cores for API server
    mcpServer: number    // CPU cores for MCP server
    p2pNetwork: number   // CPU cores for P2P
    reserved: number     // System reserved cores
  }
  memory: {
    bzzzApi: number      // Memory MB for API server
    mcpServer: number    // Memory MB for MCP server  
    p2pNetwork: number   // Memory MB for P2P
    webUI: number        // Memory MB for Web UI
    system: number       // System reserved memory
  }
  storage: {
    logs: number         // Log storage GB
    data: number         // Data storage GB
    temp: number         // Temporary files GB
    available: number    // Remaining space
  }
}
```

### Validation Logic
```typescript
const validateResources = (config: ResourceConfig, systemInfo: SystemInfo) => {
  const totalCpu = config.cpu.bzzzApi + config.cpu.mcpServer + config.cpu.p2pNetwork + config.cpu.reserved
  const totalMemory = config.memory.bzzzApi + config.memory.mcpServer + config.memory.p2pNetwork + config.memory.webUI + config.memory.system
  const totalStorage = config.storage.logs + config.storage.data + config.storage.temp
  
  return {
    cpuValid: totalCpu <= systemInfo.cpu_cores,
    memoryValid: totalMemory <= systemInfo.memory_mb,
    storageValid: totalStorage <= systemInfo.storage.free_space_gb
  }
}
```

## User Experience

### Visual Design
- [ ] Resource allocation sliders/input fields
- [ ] Real-time resource utilization charts
- [ ] Color-coded validation (green/yellow/red)
- [ ] Resource recommendation cards
- [ ] "Auto-Configure" button for presets

### Workflow Integration
- [ ] Progressive disclosure (advanced options collapsed by default)
- [ ] Validation feedback before proceeding to next step
- [ ] Ability to return and modify allocations
- [ ] Save/restore configurations

## Dependencies
- System Detection component (already implemented)
- Service Deployment component integration
- Docker Compose generation
- Cluster Formation multi-node awareness

## Acceptance Criteria
- [ ] Users can allocate CPU, memory, and storage to BZZZ services
- [ ] Resource constraints are validated against available hardware
- [ ] Configuration is passed to subsequent setup steps
- [ ] Docker container limits are properly configured
- [ ] Performance recommendations are provided
- [ ] Multi-node cluster resource awareness

## Priority
**Medium** - Important for production deployments but not blocking initial setup functionality

## Related Issues
- Service Deployment component integration
- Docker Compose resource constraints
- Multi-node cluster resource coordination
- Performance monitoring and alerting

---

**Implementation Notes:**
- Reintegrate into setup wizard between AI Integration and Service Deployment
- Use existing SystemInfo from setup context
- Generate Docker Compose resource configurations
- Consider future multi-node resource coordination requirements