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
- Enhanced Teaching Methods: Instructors can visually demonstrate concepts, making lessons more engaging and easier to understand.
- Improved Learning Experience: Students benefit from visual aids, which can aid in better comprehension of complex topics.
- Remote Classroom Engagement: Supports distance learning by bringing remote students into the interactive classroom environment.
Usage Scenarios
- Instructor-Led Demonstrations: Instructors share their screens to walk through problems or demonstrate software usage during lectures.
- Student Collaboration: Students can share their screens to seek help from instructors or discuss work with peers, fostering a collaborative atmosphere.
- 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
- Enables instructors or students to share their entire screen or specific windows/applications during a classroom session.
- Real-time synchronization ensures all participants view the shared content simultaneously.
2. Permission Control
- Role-based permissions allow only authorized users (e.g., instructors) to initiate or stop screen sharing.
- Restricts unauthorized access, enhancing security and maintaining classroom focus.
3. User Interface for Presenters
- Provides a user-friendly interface with controls for starting/ending screen sharing and managing shared content.
- Includes options for switching between full-screen mode and specific windows/applications.
4. Viewer Controls
- Viewers can start or stop the screen share session, ensuring active participation.
- Offers the ability to mute/unmute audio, enhancing control over the viewing experience.
5. Low Latency and Performance Optimization
- Optimized for minimal latency, ensuring a smooth real-time sharing experience.
- Efficient bandwidth usage reduces lag and ensures seamless interaction, even in high-participant environments.
6. Recording Capability
- Option to record screen share sessions for later review or distribution.
- Facilitates content retention and allows students to revisit shared material post-session.
7. Access Control
- Restricts access to shared screens based on user roles or permissions, enhancing security in educational settings.
- Prevents unauthorized viewing, maintaining the integrity of classroom discussions.
8. Cross-Platform Compatibility
- Supports screen sharing across multiple operating systems (Windows, macOS, Linux) and devices, ensuring broad accessibility.
- Enhances inclusivity by accommodating diverse hardware and software environments.
9. Customizable User Interface
- Customizable UI elements allow branding to match institutional needs.
- Offers flexibility in appearance, enhancing the user experience with tailored visuals.
10. Session Management
- Logs screen share sessions with timestamps for review and analysis.
- Tracks session history, providing transparency and aiding in troubleshooting if issues arise.
11. Integration with Other Tools
- Seamlessly integrates with other classroom tools like video conferencing platforms.
- Enhances workflow by allowing developers to integrate the module into existing systems via APIs.
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
- Start the FastAPI server.
- Run the React frontend application.
- 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.