A modern, enterprise-grade media control dashboard built with React and Tailwind CSS. This application provides an intuitive, professional interface for managing media sources, displays, and control systems with advanced drag-and-drop functionality.
- Media Source Management: Browse and search through available media sources
- Advanced Drag & Drop: Intuitive drag-and-drop with resize capabilities
- Multi-Display Support: Manage multiple displays and video walls
- Real-time Controls: Live recording indicators and control buttons
- Professional UI: Clean, modern interface optimized for control rooms
- Left Sidebar: Navigation menu with source management and search
- Video Wall: Main drag-drop canvas with image manipulation
- Table Monitors: Multiple chart display sections
- Right Control Panel: Media control buttons and presets
- Recording Status: Live recording indicator with timer
- Framework: React 19.1.1
- Styling: Tailwind CSS 4.1.13
- Build Tool: Vite 7.1.6
- Development: ESLint for code quality
- Icons: Custom PNG icons and SVG graphics
- Python: Flask 3.1.0 with CORS support
- Network Scanning: Device discovery and network monitoring
- Device API: Hardware device communication and control
- Dependencies: See
requirements.txtfor complete list
- Node.js (version 16 or higher)
- Python (version 3.8 or higher)
- npm or yarn package manager
- pip package manager for Python
-
Clone the repository
git clone <repository-url> cd maktabi-tech
-
Run the setup script
# Windows setup.bat # Linux/Mac ./setup.sh
-
Open your browser Navigate to
http://localhost:5173for the frontend Backend API will be available athttp://localhost:5000
If you prefer to set up manually:
-
Install Frontend Dependencies
npm install
-
Install Python Dependencies
pip install -r requirements.txt
-
Start the Backend Server
python device_api.py
-
Start the Frontend (in a new terminal)
npm run dev
-
Launch the Application
- Start the development server using
npm run dev - The interface will load with three main sections
- Start the development server using
-
Navigate the Interface
- Left Sidebar: Contains navigation icons and source management
- Main Area: Displays video walls and table monitors
- Right Panel: Provides control buttons and presets
-
Browse Sources
- Use the search bar in the left sidebar to find specific media
- Scroll through available source images in the source panel
-
Drag and Drop Media
- Click and drag any image from the source panel
- Drop it onto the "Table Monitors" area in the main display
- Images will be positioned where you drop them
-
Manage Dropped Images
- Click on any dropped image to select it
- Use the red "X" button to remove unwanted images
- Press
Deletekey to remove selected images
-
Recording Controls
- Monitor recording status via the red indicator
- View recording duration in real-time
-
Display Controls
- Use power and screen size buttons for display management
- Access various control functions via the right sidebar
-
Preset Management
- Save current configurations using the "Save Preset" button
- Access saved presets for quick setup
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Header with Recording Status โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโค
โ โ โ โ
โ Left โ Main Display Area โ Right โ
โ Sidebar โ โ Control โ
โ โ โข Video Wall Controls โ Panel โ
โ โข Logo โ โข Table Monitors (Drop Zone) โ โ
โ โข Nav โ โข Drag & Drop Interface โ โข Controls โ
โ โข Sources โ โ โข Presets โ
โ โข Search โ โ โ
โ โ โ โ
โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโ
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint for code quality
src/
โโโ App.jsx # Main application orchestrator
โโโ components/
โ โโโ LeftSidebar.jsx # Navigation & source management
โ โโโ VideoWall.jsx # Main drag-drop canvas
โ โโโ TableMonitor.jsx # Reusable chart display component
โ โโโ DisplayHeader.jsx # Recording status header
โ โโโ RightSidebar.jsx # Control panel component
โ โโโ ResizeHandles.jsx # Drag resize handle components
โโโ hooks/
โ โโโ useDragAndDrop.js # Custom drag-drop logic hook
โโโ assets/
โ โโโ icon/ # Navigation and UI icons
โ โโโ righticon/ # Control panel icons
โ โโโ source/ # Media source images
โ โโโ *.png # Various UI assets
โโโ App.css # Global styles
โโโ index.css # Base styles
โโโ main.jsx # Application entry point
- Modular Design: Each component has a single responsibility
- Reusable Components: TableMonitor can display any chart
- Custom Hooks: Encapsulated drag-drop logic for reusability
- Separation of Concerns: Clean separation between UI and logic
- Maintainable: Easy to update and extend individual components
- Source to Video Wall: Drag images from source panel to video wall canvas
- Precise Positioning: Drop images anywhere within the canvas area
- Visual Feedback: Hover effects and cursor changes during operations
- Resize Handles: Corner and edge handles for image resizing
- Aspect Ratio: Maintains original image proportions during resize
- Selection: Click to select dropped images with visual indicators
- Removal: Use X button (hover) or Delete key to remove images
- Resizing: Drag from corners or edges while maintaining aspect ratio
- Layering: Automatically brings selected images to front
- Boundary Constraints: Images stay within canvas boundaries
- Sidebar Navigation: Professional icon-based navigation
- Smart Search: Real-time filtering of media sources
- Scroll Management: Transparent scrollbars for clean UI
- Control Panels: Multiple sections with consistent styling
- Media Control Rooms: Enterprise-grade media management setups
- Broadcast Studios: Professional live media source switching
- Command Centers: Multi-display monitoring and control
- Event Management: Large-scale multi-display coordination
- Educational Facilities: Interactive learning and presentation systems
- Corporate Environments: Professional presentation and monitoring
- Real-time Streaming: Integration with live media streams
- Advanced Presets: Save and manage complex display configurations
- Multi-user Collaboration: Team-based control room management
- Custom Themes: Branded interface customization
- API Integration: Connect with external media management systems
- Analytics Dashboard: Usage tracking and performance metrics
- Modern React Architecture: Built with React 19+ and functional components
- Custom Hooks: Reusable logic with
useDragAndDrophook - Component-Based Design: Modular, maintainable component structure
- Performance Optimized: Efficient state management and rendering
- Professional Styling: Tailwind CSS with consistent design system
- Type Safety: Ready for TypeScript integration
- Error Handling: Comprehensive error boundaries and user feedback
- Purpose: Navigation and source management
- Features: Logo, navigation icons, search functionality, source images
- Props:
onDragStartfunction for drag operations
- Purpose: Main drag-drop canvas for image manipulation
- Features: Drag-drop zone, image positioning, resize handles
- Props: Canvas ref, dropped images, event handlers
- Purpose: Reusable chart display component
- Features: Control icons, chart display, consistent styling
- Props:
chartImage,title(optional)
- Purpose: Encapsulates all drag-drop logic
- Returns: State and handlers for drag-drop operations
- Features: Image positioning, resizing, selection management
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Follow the component structure guidelines
- Make your changes with proper documentation
- Run tests and linting (
npm run lint) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the established component structure
- Use the custom hooks for shared logic
- Maintain consistent styling with Tailwind CSS
- Add proper prop types and documentation
- Test drag-drop functionality thoroughly
This project is licensed under the MIT License - see the LICENSE file for details.
Maktabi Tech - Enterprise Media Control Solutions Professional โข Scalable โข Reliable