# AI Agent Backend - IoT Dashboard A comprehensive Node.js Express backend for IoT device management with AI-powered analytics, real-time streaming, self-healing capabilities, and intelligent suggestions. ## Features ### 🔐 Authentication & Authorization - JWT-based authentication with Redis session management - Role-based access control (Admin, Operator, Viewer) - Password hashing with bcrypt - Rate limiting for security ### 📡 Real-time Data Streaming - Apache StreamPipes integration for IoT data ingestion - WebSocket support for real-time communication - Kafka/MQTT support for message queuing - Redis caching for high-performance data access ### 🤖 AI Agent Capabilities - Intelligent anomaly detection - Predictive maintenance suggestions - Performance optimization recommendations - Self-healing automation - Machine learning model management ### 🚨 Alert Management - Real-time alert generation - Configurable alert rules and thresholds - Multi-channel notifications (Email, SMS, WebSocket) - Alert acknowledgment and resolution tracking ### 🔧 Self-Healing System - Automated problem detection and resolution - Device restart and configuration management - Load balancing and circuit breaker patterns - Maintenance scheduling ### 📊 Analytics & Insights - Real-time dashboard metrics - Performance analytics - Device health monitoring - Historical data analysis ### 📱 Notification System - Multi-channel notifications (Email, SMS, In-app) - Configurable notification preferences - Notification history and status tracking ## Tech Stack - **Runtime**: Node.js 16+ - **Framework**: Express.js - **Database**: MySQL 8.0+ - **Cache**: Redis 6.0+ - **Authentication**: JWT + bcrypt - **Real-time**: Socket.IO - **Streaming**: Apache StreamPipes, Kafka, MQTT - **Notifications**: Nodemailer, Twilio - **Logging**: Winston - **Validation**: Express-validator ## Prerequisites - Node.js 16+ - MySQL 8.0+ - Redis 6.0+ - Apache StreamPipes (optional) - Kafka (optional) - MQTT Broker (optional) ## Installation 1. **Clone the repository** ```bash git clone cd ai-agent-backend ``` 2. **Install dependencies** ```bash npm install ``` 3. **Environment Configuration** ```bash cp env.example .env ``` Edit `.env` with your configuration: ```env # Database DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=your_password DB_NAME=ai_agent_iot # JWT JWT_SECRET=your_super_secret_jwt_key_here # Redis REDIS_HOST=localhost REDIS_PORT=6379 # StreamPipes STREAMPIPES_HOST=localhost STREAMPIPES_PORT=8080 STREAMPIPES_USERNAME=admin STREAMPIPES_PASSWORD=admin # Notifications SMTP_HOST=smtp.gmail.com SMTP_USER=your_email@gmail.com SMTP_PASS=your_app_password TWILIO_ACCOUNT_SID=your_twilio_account_sid TWILIO_AUTH_TOKEN=your_twilio_auth_token ``` 4. **Database Setup** ```bash # Run migrations npm run migrate # Seed initial data (optional) npm run seed ``` 5. **Start the server** ```bash # Development npm run dev # Production npm start ``` ## API Endpoints ### Authentication - `POST /api/auth/register` - Register new user - `POST /api/auth/login` - User login - `POST /api/auth/logout` - User logout - `GET /api/auth/profile` - Get user profile - `PUT /api/auth/profile` - Update user profile - `POST /api/auth/refresh` - Refresh JWT token ### Devices - `GET /api/devices` - Get all devices - `GET /api/devices/:deviceId` - Get device details - `POST /api/devices` - Create new device - `PUT /api/devices/:deviceId` - Update device - `DELETE /api/devices/:deviceId` - Delete device - `GET /api/devices/:deviceId/data` - Get device data - `POST /api/devices/:deviceId/command` - Send command to device - `GET /api/devices/:deviceId/stats` - Get device statistics ### Alerts - `GET /api/alerts` - Get all alerts - `GET /api/alerts/:alertId` - Get alert details - `POST /api/alerts/:alertId/acknowledge` - Acknowledge alert - `POST /api/alerts/:alertId/resolve` - Resolve alert - `GET /api/alerts/stats/overview` - Get alert statistics ### Analytics - `GET /api/analytics/dashboard` - Get dashboard overview - `GET /api/analytics/performance` - Get performance metrics ### Healing - `GET /api/healing` - Get healing actions ### Suggestions - `GET /api/suggestions` - Get AI suggestions ### Notifications - `GET /api/notifications` - Get user notifications ### StreamPipes - `GET /api/streampipes/health` - Check StreamPipes health - `GET /api/streampipes/streams` - Get data streams ## WebSocket Events ### Client to Server - `subscribe_device` - Subscribe to device updates - `unsubscribe_device` - Unsubscribe from device updates - `subscribe_alerts` - Subscribe to alerts - `unsubscribe_alerts` - Unsubscribe from alerts - `device_control` - Send device control command - `acknowledge_alert` - Acknowledge alert ### Server to Client - `device_data_update` - Device data update - `new_alert` - New alert notification - `alert_acknowledged` - Alert acknowledged - `healing_approved` - Healing action approved - `suggestion_feedback_received` - Suggestion feedback - `new_notification` - New notification - `dashboard_update` - Dashboard update ## Database Schema ### Core Tables - `users` - User accounts and authentication - `devices` - IoT device information - `device_data` - Raw device data storage - `alerts` - Alert records - `notifications` - User notifications ### AI & Analytics Tables - `ai_suggestions` - AI-generated suggestions - `ai_analysis_results` - AI analysis results - `healing_actions` - Self-healing actions - `device_controls` - Device control commands ## Services Architecture ### Core Services - **StreamPipesService** - Handles Apache StreamPipes integration - **AIAgentService** - Manages AI analysis and suggestions - **AlertService** - Handles alert generation and management - **HealingService** - Manages self-healing actions - **NotificationService** - Handles multi-channel notifications ### Configuration - **Database** - MySQL connection and query management - **Redis** - Caching and session management - **Logger** - Structured logging with Winston ## Development ### Project Structure ``` ├── config/ # Configuration files ├── middleware/ # Express middleware ├── routes/ # API route handlers ├── services/ # Business logic services ├── socket/ # WebSocket handlers ├── utils/ # Utility functions ├── scripts/ # Database scripts ├── logs/ # Application logs ├── server.js # Main application file └── package.json # Dependencies and scripts ``` ### Available Scripts - `npm start` - Start production server - `npm run dev` - Start development server with nodemon - `npm run migrate` - Run database migrations - `npm run seed` - Seed database with initial data - `npm test` - Run tests ### Environment Variables See `env.example` for all available configuration options. ## Deployment ### Production Setup 1. Set `NODE_ENV=production` 2. Configure production database and Redis 3. Set up SSL certificates 4. Configure reverse proxy (nginx) 5. Set up process manager (PM2) ### Docker Deployment ```bash # Build image docker build -t ai-agent-backend . # Run container docker run -p 5000:5000 --env-file .env ai-agent-backend ``` ## Monitoring & Logging ### Health Checks - `GET /health` - Application health status - Service-specific health checks available ### Logging - Structured JSON logging - Log rotation and archiving - Different log levels (error, warn, info, debug) ### Metrics - Request/response metrics - Database query performance - Service health metrics - Custom business metrics ## Security ### Authentication - JWT tokens with configurable expiration - Redis-based session management - Password hashing with bcrypt ### Authorization - Role-based access control - Route-level permissions - Device-level access control ### Security Headers - Helmet.js for security headers - CORS configuration - Rate limiting - Input validation ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests 5. Submit a pull request ## License MIT License - see LICENSE file for details ## Support For support and questions: - Create an issue in the repository - Check the documentation - Review the API examples ## Roadmap - [ ] Advanced ML model integration - [ ] GraphQL API support - [ ] Microservices architecture - [ ] Kubernetes deployment - [ ] Advanced analytics dashboard - [ ] Mobile app support - [ ] Multi-tenant support - [ ] Advanced security features