Skip to content
Gist-powered Revealjs slides
JavaScript CSS HTML
Branch: master
Clone or download

Latest commit


Type Name Latest commit message Commit time
Failed to load latest commit information.
css improved support for pdf export when including ?print-pdf Oct 14, 2017
img cleanup button design Jul 26, 2018
js adding a WEBSOCKET feature flag, allow disabling socket broadcast Oct 16, 2017
k8s Updating to use new environment variable CLI option Jan 7, 2015
lib update to latest version of highlight theme #576 Aug 26, 2013
plugin source reveal static assets from reveal.js npm Aug 16, 2015
test rename markdown attribute test files to same format Dec 2, 2013
.gitignore modularize themes and convert them to sass (closes #191) Oct 20, 2012
.travis.yml bumping travisCI node runtime version to 0.10 Oct 27, 2014
Dockerfile fixing VOLUME path Oct 16, 2017
LICENSE update (c) year Mar 13, 2014
Makefile Adding dockerfile Oct 2, 2014 patching broken link in README #72 Apr 7, 2018
default_response.json source reveal static assets from reveal.js npm Aug 16, 2015
error_response.json source reveal static assets from reveal.js npm Aug 16, 2015
gist-reveal-dockerhub.json updating README usage, adding golang templates for dockerhub and gith… Sep 18, 2015
gist-reveal-github.json deployments have graduated to v1 Oct 2, 2018
index.html cleanup button design Jul 26, 2018
local_slides.json add '@' before presenter name Oct 28, 2018
package-lock.json adding "presented_by" on every slide, updating deps Jul 24, 2018
package.json adding "presented_by" on every slide, updating deps Jul 24, 2018
rate_limit_response.json source reveal static assets from reveal.js npm Aug 16, 2015
reveal-pod.json adding some sample init code for kube pods... Oct 2, 2014
server.js add '@' before presenter name Oct 28, 2018


Greenkeeper badge Build Status Build Status Dependency Check Gitter Chat

Gist-powered Revealjs presentations is an open source slideshow templating service that makes it easy to create, edit, present, and share Reveal.js slides on the web by using github's gist service as a datastore.

Store any Revealjs-compatible HTML or Markdown content in a gist, then append your resulting gist id to the end of any gist-reveal site url to view the resulting presentation:


Use bitly or another url shortener to make these long urls easier to share, and to make enagement rates easier to count.

Creating a shortname for your longer gist-reveal/gist_id deck urls will also make your presentations available at an alternate presentation path:


Much nicer! Make sure to continue sending traffic to the shorter url for metrics collection purposes.

Gist-powered Slideshow Themes

Available CSS themes include the default reveal.js list of themes, but can be easily extended by storing new themes in a gist:

Conference organizers can host their own modified gist-reveal templating service (with its own default theme), to provide a consistent look for all presentations at an event.

Application Config

The following environment variables can be used to autoconfigure the application:

Variable Name Contents Default Value
DEFAULT_GIST The default gist id slideshow content for the site af84d40e58c5c2a908dd
REVEAL_THEME The site's default theme. Should be a locally bundled theme name, or a remote gist_id. 450836bbaebcf4c4ae08b331343a7886
GH_CLIENT_SECRET GitHub client secret unset
GH_CLIENT_ID GitHub client ID unset
GA_TRACKER Google Analytics tracker token unset
PORT The server port number 8080
IP_ADDR The server IP address
GIST_THEMES Allow reveal.js CSS themes to be installed dynamically "url/?theme=gist_id". Disable this feature by setting this config to the string "false". "true"
REVEAL_SOCKET_SECRET the site's broadcast token (alphanumeric) randomly generated

See server.js for more information about the site's configuration options.

Broadcasting Slide Transitions

Administrators can configure the application's REVEAL_SOCKET_SECRET to broadcast slide transitions using Reveal's socket Multiplexing support.

Presenters who know the site's REVEAL_SOCKET_SECRET value can configure their browser as a presentation device using the setToken querystring param:


This token will be stored in the browser's localStorage area (per host url) as localStorage.secret. To reconfigure your browser as a client device (as a listener), use the clearToken querystring param:



Gist-reveal makes it easy to run your own Gist-powered RevealJS slideshow service

Local Development

The simplest way to get started with this project, is to clone a copy of the source from github (git clone && cd gist-reveal), then run the app locally with npm install followed by npm start.


To create a kubernetes deployment and NodePort service, both named gist-reveal:

kubectl run gist-reveal --image=ryanj/gist-reveal --expose --port=8080 --service-overrides='{ "spec": { "type": "NodePort" } }' \

Minikube users should be able to open the new service in their browser by running:

minikube service gist-reveal


To run the docker image locally on port 8080:

docker pull ryanj/gist-reveal
docker run -d -p 8080:8080 ryanj/gist-reveal

Environment variables can be passed into the Docker container in order to configure the websocket relay, or to change the default slideshow content:

docker run -e "REVEAL_SOCKET_SECRET=0P3N-S0URC3" -e "DEFAULT_GIST=YOUR_DEFAULT_GIST_ID" ryanj/gist-reveal


Build from GitHub sources, using a "nodejs" base image, and Source2Image:

oc new-app nodejs~ -e REVEAL_SOCKET_SECRET=1234

License was created at the first DockerCon Hackathon by @ryanj and @fkautz.

Reveal.js is MIT licensed Copyright (C) 2014 Hakim El Hattab,

You can’t perform that action at this time.