A modern, web-based SCADA (Supervisory Control and Data Acquisition) system built with React, TypeScript, and Tailwind CSS. This application provides real-time monitoring, control, and management of industrial devices and processes.
- Real-time device monitoring with live data updates
- Interactive charts and graphs (temperature, pressure, flow rates)
- KPI cards showing system status and metrics
- Recent alarms and system activity feeds
- Comprehensive device inventory with detailed information
- Real-time parameter monitoring with gauge visualizations
- Device control capabilities (start, stop, reset, configure)
- Support for multiple industrial protocols (Modbus, OPC, Ethernet/IP, Profinet)
- Historical parameter trending and analysis
- Real-time alarm monitoring and notifications
- Alarm acknowledgment and resolution workflow
- Severity-based filtering (Critical, High, Medium, Low)
- Comprehensive alarm history with export capabilities
- Email and sound notification support
- Detailed device performance reports
- Customizable date range filtering
- Multiple chart types (line, bar, pie charts)
- Export functionality (PDF, CSV)
- Uptime/downtime analysis
- Error frequency tracking
- Role-based access control (Admin, Engineer, Operator)
- User account management with status tracking
- Secure authentication system
- Activity logging and audit trails
- Dark/Light theme support
- Responsive design for all screen sizes
- Industrial-grade color scheme and iconography
- Intuitive navigation and user experience
- Frontend Framework: React 18 with TypeScript
- Styling: Tailwind CSS
- Icons: Lucide React
- Charts: Recharts
- Routing: React Router DOM
- Build Tool: Vite
- Code Quality: ESLint + TypeScript ESLint
Before running this application, make sure you have the following installed:
- Node.js (version 16.0 or higher)
- npm (version 7.0 or higher) or yarn
git clone <repository-url>
cd industrial-scada-systemnpm install
# or
yarn installnpm run dev
# or
yarn devThe application will be available at http://localhost:5173
npm run build
# or
yarn buildnpm run preview
# or
yarn previewThe application includes several demo accounts for testing different user roles:
| Username | Password | Role | Access Level |
|---|---|---|---|
admin |
password |
Administrator | Full system access |
supervisor |
password |
Supervisor | Device monitoring & control |
tech |
password |
Technician | Read-only access |
src/
βββ components/ # React components
β βββ Dashboard.tsx # Main dashboard view
β βββ DeviceList.tsx # Device inventory
β βββ DeviceDetails.tsx # Individual device view
β βββ AlarmManagement.tsx # Alarm system
β βββ Reports.tsx # Analytics and reports
β βββ Users.tsx # User management
β βββ Settings.tsx # System configuration
β βββ Login.tsx # Authentication
β βββ Layout.tsx # Main layout wrapper
β βββ Header.tsx # Top navigation
β βββ Sidebar.tsx # Side navigation
βββ contexts/ # React contexts
β βββ AuthContext.tsx # Authentication state
β βββ ThemeContext.tsx # Theme management
βββ data/ # Mock data and utilities
β βββ mockData.ts # Sample device and alarm data
βββ types/ # TypeScript type definitions
β βββ index.ts # Application interfaces
βββ App.tsx # Main application component
Create a .env file in the root directory for environment-specific configuration:
VITE_APP_TITLE=Industrial SCADA System
VITE_API_BASE_URL=http://localhost:3001/api
VITE_REFRESH_INTERVAL=5000The application supports both light and dark themes. Theme preferences are automatically saved to localStorage and respect system preferences.
The application is optimized for production with:
- Code splitting and lazy loading
- Asset optimization and compression
- Tree shaking for minimal bundle size
- Modern browser targeting
- Static Hosting: Deploy to Netlify, Vercel, or GitHub Pages
- Docker: Containerized deployment with included Dockerfile
- Traditional Hosting: Build and serve static files
The system is designed to integrate with common industrial communication protocols:
- Modbus TCP/RTU: For PLCs and industrial devices
- OPC UA: For modern industrial automation
- Ethernet/IP: For Allen-Bradley and Rockwell devices
- Profinet: For Siemens and other European manufacturers
The frontend is prepared for backend integration with RESTful APIs for:
- Real-time device data
- Historical data storage
- User authentication
- Alarm management
- Report generation
Run the test suite:
npm run test
# or
yarn testThe application is optimized for:
- Fast Initial Load: Code splitting and lazy loading
- Real-time Updates: Efficient data polling and state management
- Responsive Design: Optimized for desktop and mobile devices
- Memory Efficiency: Proper cleanup and resource management
- Role-based Access Control: Different permission levels
- Session Management: Automatic timeout and secure storage
- Input Validation: Protection against common vulnerabilities
- Audit Logging: Track user actions and system events
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the GitHub repository
- Check the documentation in the
/docsfolder - Review the FAQ section below
Q: How do I add new device types?
A: Extend the Device interface in src/types/index.ts and update the mock data generator.
Q: Can I customize the color scheme?
A: Yes, modify the color palette in tailwind.config.js to match your brand.
Q: How do I integrate with real industrial devices? A: Replace the mock data functions with actual API calls to your backend services.
Q: Is this suitable for production use? A: This is a demo application. For production use, implement proper backend services, security measures, and testing.
- Initial release with core SCADA functionality
- Dashboard with real-time monitoring
- Device management and control
- Alarm system with notifications
- User management and authentication
- Reports and analytics
- Dark/Light theme support
Built with β€οΈ for Industrial Automation
