Skip to content

HKUST-FYP-Group2/Projector-App

Repository files navigation

🎬 Virtual Window Projector App

A React.js-based web application that serves as the display interface for the Virtual Window System, delivering immersive outdoor experiences through real-time video streaming, synchronized settings control, and ambient background music.

🌟 Features

  • Secure Login System: Supports both manual login and QR code-based authentication via the Control App.
  • Real-time Video Streaming: Displays live video using HLS (HTTP Live Streaming) from an RTMP source.
  • Dynamic Settings Panel: Adjust brightness, volume, clock appearance, and audio settings in real time.
  • Bluetooth Remote Control Integration: Connect and synchronize with the ESP32-based hardware remote.
  • AI-Driven Ambient Music: Dynamically selects background sounds based on the current video content using AI-generated keywords.
  • Cross-Device Synchronization: Uses WebSocket (Socket.IO) to sync settings across all connected devices (Control App, Camera App, Remote).
  • Responsive UI: Built with Tailwind CSS and Material UI, ensuring compatibility across desktop and mobile devices.

📱 Usage

📲 Login

image

  1. Manual Login

    • Enter your username and password.
    • Redirects to the display page upon successful authentication.
  2. QR Code Login

    • A UUID is generated and displayed as a QR code.
    • Use the Control App to scan the QR code and authenticate.
    • Automatically logs the user in and loads their saved settings.

🖥️ Display Interface

image image image

  • Video Feed: Full-screen video stream from the selected source.
  • Clock Widget: Real-time clock with customizable appearance (font size, color, background, 12/24-hour format).
  • Settings Panel:
    • Brightness
    • Volume
    • Clock settings
    • Audio source selection
    • Background music toggle (AI-curated)

🔧 Settings Management

All projector settings are:

  • Saved on the server
  • Synchronized in real-time across devices via WebSocket

🔊 Background Music

  • Uses AI-generated keywords from the current video stream
  • Queries Freesound.org API for relevant ambient sounds
  • Allows manual override or keyword-based auto-selection

🔀 Remote Control Support

  • Connects via Web Bluetooth API
  • Enables physical control of:
    • Brightness
    • Volume
    • Background music

⚙️ Deployment

Prerequisites

Before deploying, ensure you have:

  • Node.js (v18 or higher)
  • npm installed
  • Access to the backend server (Flask API + Socket.IO)
  • A valid SSL certificate if deploying publicly

📦 Installation

  1. Install dependencies:
npm install
  1. Configure environment variables: Create a .env file with the following:
VITE_HOST=0.0.0.0
VITE_PORT=4173
VITE_HTTPS=true
VITE_API_URL=https://api.virtualwindow.cam
VITE_SSL_CERT=.cert/cert.cert
VITE_SSL_KEY=.cert/key.key

🚀 Running Locally

To start the development server:

npm run dev

Access the app at https://localhost:4173.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published