A modern, synchronized PDF presentation system perfect for tablets, projectors, and multi-display setups. Control presentations from one device while viewers automatically sync across all connected displays.
- 🎯 Synchronized Viewing - Control presentations from one device, all viewers automatically sync
- 📱 Tablet Optimized - Auto-fullscreen mode, touch-friendly controls
- ⌨️ Keyboard Shortcuts - Navigate with arrow keys, spacebar, Home/End, F for fullscreen
- 🎨 Modern UI - Dark theme with gradient buttons and smooth animations
- 📡 Real-time Updates - Server-Sent Events for instant synchronization
- 🔄 Auto-Recovery - Automatic reconnection and error handling
- 📂 Multiple PDFs - Load and switch between different PDF files
npm installnpm startOr use the provided batch file:
StartPresentation.batThe server will display the network addresses:
- Controller: http://[your-ip]:3000
- Viewer: http://[your-ip]:3000/viewer
Open the controller page on your main device (laptop, tablet). This page allows you to:
- Navigate through slides (Previous/Next buttons or keyboard shortcuts)
- Jump to specific pages from dropdown
- Switch between different PDF files
- Control what all viewers see
Keyboard Shortcuts:
←→↑↓SpacePageUpPageDown- Navigate slidesHome- Jump to first slideEnd- Jump to last slideF- Toggle fullscreen
Open the viewer page on display devices (tablets, projectors, additional monitors). This page:
- Automatically syncs with the controller
- Auto-enters fullscreen mode (perfect for tablets)
- Shows only the current slide with no controls (clean display)
- Reconnects automatically if connection is lost
Keyboard Shortcuts:
F- Toggle fullscreenR- Reload page
- Place your PDF files in the
public/files/directory - Reload the controller page
- Your PDFs will appear in the dropdown menu
The server runs on port 3000 by default. To change the port:
PORT=8080 npm startOr set the PORT environment variable in your system.
- Backend: Node.js + Express
- Frontend: Vanilla JavaScript (ES6 Modules)
- PDF Rendering: PDF.js
- Real-time Sync: Server-Sent Events (SSE)
Works best with modern browsers that support:
- ES6 Modules
- Fullscreen API
- Server-Sent Events
- PDF.js
Tested on:
- Chrome/Edge (Recommended)
- Firefox
- Safari
ISC
Created for presentation and display purposes with a focus on simplicity and reliability.