Screen Share Support

Video → Gold
💰 $2000

Allow instructors or students to share their screens during sessions.

Technology iconTechnology iconTechnology icon

Screen Share Support Module Overview

Purpose

The Screen Share Support module is designed to enable real-time screen sharing between instructors and students during classroom sessions. This feature enhances collaborative learning by allowing participants to share their screens, facilitating interactive teaching and immediate feedback.

Benefits

Usage Scenarios

  1. Instructor-Led Demonstrations: Instructors share their screens to walk through problems or demonstrate software usage during lectures.
  2. Student Collaboration: Students can share their screens to seek help from instructors or discuss work with peers, fostering a collaborative atmosphere.
  3. Group Work Support: Multiple participants can simultaneously share their screens, promoting teamwork and idea exchange.

This module integrates seamlessly into classroom environments, whether in-person or remote, to enrich the educational experience through interactive screen sharing capabilities.

Key Features of Screen Share Support Module

1. Screen Sharing Functionality

2. Permission Control

3. User Interface for Presenters

4. Viewer Controls

5. Low Latency and Performance Optimization

6. Recording Capability

7. Access Control

8. Cross-Platform Compatibility

9. Customizable User Interface

10. Session Management

11. Integration with Other Tools

These features collectively ensure a robust, secure, and user-friendly screen sharing experience tailored for educational environments, empowering both instructors and students in collaborative learning.

# Screen Share Support Module Documentation

## Overview
The Screen Share Support module enables real-time screen sharing functionality during classroom sessions. It allows instructors and students to share their screens seamlessly.

---

## API Reference

### 1. FastAPI Endpoint (Backend)

This endpoint handles screen sharing requests.

```python:backend/api/screen_share.py
from fastapi import APIRouter, Depends, HTTPException
from typing import Optional
from pydantic import BaseModel

router = APIRouter()

class ScreenShareRequest(BaseModel):
    session_id: str
    user_role: str  # "instructor" or "student"
    include_audio: Optional[bool] = False

@router.post("/api/screen-share")
async def handle_screen_share(request: ScreenShareRequest):
    """
    Handle screen sharing request.
    """
    try:
        # Implement your screen sharing logic here
        return {"message": f"Screen sharing request received from {request.user_role}"}
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

2. React UI Component (Frontend)

This component implements the screen sharing interface.

import React, { useState } from 'react';
import axios from 'axios';

const ScreenShareButton = () => {
    const [isSharing, setIsSharing] = useState(false);

    const handleScreenShare = async () => {
        try {
            setIsSharing(true);
            const response = await axios.post(
                '/api/screen-share',
                {
                    session_id: 'your-session-id',  // Replace with actual session ID
                    user_role: 'student',  // Replace with actual user role
                    include_audio: true  // Toggle audio inclusion
                }
            );
            console.log('Screen sharing initiated:', response.data);
        } catch (error) {
            console.error('Error initiating screen share:', error);
        } finally {
            setIsSharing(false);
        }
    };

    return (
        <button 
            onClick={handleScreenShare}
            disabled={isSharing}
            className={`px-4 py-2 rounded ${isSharing ? 'bg-gray' : 'bg-blue text-white'}`}
        >
            {isSharing ? 'Sharing...' : 'Start Screen Share'}
        </button>
    );
};

export default ScreenShareButton;

3. Data Schema (Pydantic)

This defines the structure of screen sharing requests.

from pydantic import BaseModel

class ScreenShareRequest(BaseModel):
    session_id: str
    user_role: str  # "instructor" or "student"
    include_audio: Optional[bool] = False

    class Config:
        json_schema_extra = {
            "example": {
                "session_id": "63b0f4d2-789a-456e-a12b-3c45d6e8f0a1",
                "user_role": "instructor",
                "include_audio": True
            }
        }

Installation Guide

Backend Dependencies (Python)

pip install fastapi uvicorn python-multipart

Frontend Dependencies (JavaScript/Node.js)

npm install react react-dom axios

Usage Instructions

  1. Start the FastAPI server.
  2. Run the React frontend application.
  3. Use the ScreenShareButton component to initiate screen sharing.

This documentation provides a comprehensive overview of the Screen Share Support module, including implementation details and usage instructions.


# Screen Share Support Module Documentation

## Overview
The **Screen Share Support** module enables instructors or students to share their screens during classroom sessions. This feature allows for real-time collaboration and interaction during virtual classes, presentations, or group work.

---

## Related Modules
- **User Management**: Handles authentication and permissions for screen sharing.
- **Session Management**: Manages active classroom sessions and participant roles (instructor vs. student).
- **Notifications**: Sends alerts to participants when someone starts sharing their screen.
- **Recording Module**: Records shared screens for later review (if enabled).
- **Messaging System**: Allows participants to communicate during screen sharing.

---

## Use Cases

### 1. Instructor Initiates Screen Share
- **Description**: The instructor can start sharing their screen during a live session.
- **Steps**:
  1. Open the classroom session.
  2. Click on the "Screen Share" button in the toolbar.
  3. Select the screen or application to share.
  4. Students will see the shared content in their view.

### 2. Student Requests Screen Share
- **Description**: A student can request permission to share their screen with the class.
- **Steps**:
  1. Open the classroom session.
  2. Click on the "Request to Share" button.
  3. The instructor receives a notification and can approve or decline the request.
  4. If approved, the student's screen is shared with the class.

### 3. Stop Screen Sharing Automatically
- **Description**: If no one is sharing their screen for a configured period (e.g., 5 minutes), the system automatically stops the screen share to conserve resources.
- **Steps**:
  1. The system monitors inactivity during screen sharing.
  2. If inactivity exceeds the threshold, the screen sharing session ends.

---

## Integration Tips

### 1. Real-Time Communication
- Use WebSocket or similar technologies for real-time updates between participants when someone starts or stops sharing their screen.

### 2. Permission Handling
- Ensure that only authorized users (e.g., instructors) can grant or revoke screen sharing permissions to students.

### 3. UI Feedback
- Provide visual feedback in the interface (e.g., a status indicator) when someone is sharing their screen.

---

## Configuration Options

| **Parameter**               | **Description**                                                                 | **Default Value** | **Acceptable Values**         | **Remarks**                              |
|------------------------------|---------------------------------------------------------------------------------|------------------|-------------------------------|------------------------------------------|
| `enable_screen_share`        | Enable or disable screen sharing functionality.                                 | `true`           | `true`, `false`               | Must be set to `true` for the feature to work. |
| `max_active_shares`          | Maximum number of screens that can be shared simultaneously.                    | `1`              | Integer values >= 0           | Set based on expected class size.        |
| `auto_stop_timeout`          | Time in minutes after which an inactive screen share session stops automatically.| `5`               | Integer values >= 0            | Adjust based on usage patterns.           |
| `record_shared_content`      | Enable or disable recording of shared screens.                                  | `false`          | `true`, `false`                | Requires integration with the Recording Module. |

--- 

This documentation provides a comprehensive overview of the **Screen Share Support** module, including related modules, use cases, integration tips, and configuration options. Developers can use this information to seamlessly integrate screen sharing functionality into the application.