A lightweight, browser-based WYSIWYG editor for building reveal.js presentations.
  • JavaScript 88.3%
  • CSS 8.4%
  • HTML 2.3%
  • Shell 0.7%
  • PHP 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-14 20:27:06 +02:00
libs Refactor hole app. Bootstrap 6 now used for styling 2026-10-11 23:38:31 +02:00
pictures Refactor hole app. Bootstrap 6 now used for styling 2026-10-11 23:38:31 +02:00
.gitignore Added map functionallity 2026-10-04 02:39:06 +02:00
app.js Refactor hole app. Bootstrap 6 now used for styling 2026-10-11 23:38:31 +02:00
favicon.svg Refactor hole app. Bootstrap 6 now used for styling 2026-10-11 23:38:31 +02:00
index.html Refactor hole app. Bootstrap 6 now used for styling 2026-10-11 23:38:31 +02:00
kiosk.sh Add func: After clicking on 'Upload presentation' the chromium web browser reloads 2026-09-30 15:31:08 +02:00
LICENSE Update Licence 2026-10-06 23:32:25 +02:00
presentation.html Remove "First Run" botton and remove scale limitation for large screens 2026-10-14 13:35:33 +02:00
preview.html init 2026-09-22 20:15:01 +02:00
preview.js Added map functionallity 2026-10-04 02:39:06 +02:00
README.md Refactor hole app. Bootstrap 6 now used for styling 2026-10-11 23:38:31 +02:00
setup.sh add compability for apple devices (captive portal) 2026-10-14 20:27:06 +02:00
upload-presentation.php Refactor hole app. Bootstrap 6 now used for styling 2026-10-11 23:38:31 +02:00

Revealy

Revealy logo

Revealy is a browser-based WYSIWYG editor for reveal.js presentations. Craft your slides on any device, then upload them to present them on a connected screen. It works fully offline.

Operation explained

Revealy has two halves: the editor, which you drive from a browser on your own device, and the screen you present on that is connected to the Raspberry Pi:

  1. Join the Wi-Fi network Revealy on your laptop, phone, or tablet.
  2. Your device notices there is no internet on that network and pops up its captive portal. That window is the editor. If it does not pop up on its own, open http://revealy.local in your browser.
  3. Give your presentation a unique name (Top right corner of the editor). Create one or more slides.

Click on Projects... button to open a list of saved presentations. Click on Export all (.zip).

Always save your presentations !!!

  1. Check your work with Preview button.
  2. Click Upload presentation in the top bar to upload it to the device itself and to present it on the connected screen.

Pictures

Slides Editor

Slide with pictures on it.

Slide with text on it.

Slide with a map on it.

Preview Mode

Slide with pictures on it.

Slide with text on it.

Slide with a map on it.

Settings menues

Project list view. Revealy can handle multiple projects/presentations at the same time.

Project settings view. Set global settings for a project/presentation.

Setup instructions

  1. Install Raspberry Pi OS (64-bit) (Desktop) on SD Card via Raspberry Pi Imager. After that plug the sd card into the Raspbarry Pi and finish installation process.
  2. Open terminal
  3. Install apache2 and php:
sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y
sudo apt install apache2 php -y
  1. Copy content of this repo into /var/www/html:
sudo rm -rf /var/www/html/*
sudo git clone https://forgejo.hostlab.tech/suitdeer/Revealy.git /var/www/html/
sudo chown -R "$(id -un)":www-data /var/www/html/
sudo chmod -R 770 /var/www/html/
  1. Install and configure Raspberry Pi to be a captive portal on the wlan interface:
sudo /var/www/html/setup.sh
  1. OPTIONAL: Download the map tiles for the map-element if you need it.

Here the page where you need to select a country you want the map data to be downloaded https://bundle.tiles.coalition.space/bundles. Download as zip-file:

sudo apt install unzip -y
cd /tmp
# Example url for german map tiles: https://bundle.tiles.coalition.space/bundles/germany/germany-osm-bright-z0-z15-20261003.zip
sudo wget "<bundle-url-from-the-bundles-page>"
sudo mkdir -p /var/www/html/libs/leaflet/tiles
sudo unzip <bundle-filename> -d /var/www/html/libs/leaflet/tiles
sudo rm <bundle-filename>
sudo chown -R "$(id -un)":www-data /var/www/html/libs
sudo chmod -R 770 /var/www/html/libs

Keyboard shortcuts

Cmd/Ctrl + S flush save
Cmd/Ctrl + Shift + Enter new slide after current
Cmd/Ctrl + P preview from start (press again to close)
Cmd/Ctrl + Shift + P preview from current slide
Escape close whatever modal is open; in preview, exits overview/fullscreen first, then closes the preview
↑ ↓ ← → (in preview) navigate
S (in preview) speaker view
F (in preview) fullscreen
O (in preview) slide overview
B (in preview) black out the screen

Tech stack

  • Vanilla JS, no framework, no build step.
  • reveal.js 6.0.2: Library that builds the presentations. Vendored under libs/reveal/.
  • JSZip 3.10.2: for the .zip import/export, vendored under libs/.
  • Bootstrap 6: all editor chrome — buttons, form controls, dialogs, the drawer, and menus — is styled with the vendored libs/bootstrap/bootstrap.min.css and driven by bootstrap.bundle.min.js (loaded as an ES module). There is no custom stylesheet.
  • Bootstrap Icons 1.13.2: toolbar and topbar icons, vendored under libs/.
  • Leaflet 2.0.0-alpha.1: the map element, vendored under libs/leaflet/ along with its offline tile pyramid.
  • Google Fonts: the families used by the built-in themes and the custom-theme picker are downloaded under libs/fonts/google/ (fonts.css + woff2 files, latin/latin-ext subsets), so themes and custom fonts render offline. Custom font families typed in by exact name only work if they're one of the vendored families.

License

MIT License - see LICENSE