# Using Reveal.js for presentations, with a (mostly) offline git-based workflow, and free hosting
**Category:** [blog](https://bawmedical.co.uk/c/blog/9)
**Created:** 2016-03-30 23:00 UTC
**Views:** 898
**Replies:** 0
**URL:** https://bawmedical.co.uk/t/using-reveal-js-for-presentations-with-a-mostly-offline-git-based-workflow-and-free-hosting/51
---
## Post #1 by @marcusbaw
## Reveal.js
For a few years now I’ve been using the JavaScript-based, interoperable presentation platform called [Reveal.js - the HTML presentation framework](http://lab.hakim.se/reveal-js/#/)
It’s great for presentations that look different enough to be visually interesting, without hijacking the purpose of the presentation by over-embellishing the slides. The slides are not the point of the presentation. The *presentation* is the point of the presentation.
I try to only use visual aids when I **need** to back up the point I’m making with a visual. I often use large, simple, full screen images for this, and little else.
Open standards and open source is important to me. I also run Linux so I don’t have the option of KeyNote or PowerPoint (not that I would actually want to use them anyway)
I guess I *could* use [Libreoffice Impress](https://www.libreoffice.org/discover/impress/) or something like it, but I’ve found that the editing tools are not that great, especially trying to work out what is going on with a template affecting all your slides. (In Reveal.js you can style everything easily and consistently using CSS/SASS)
LibreOffice is also just a PowerPoint clone, meaning it apes a lot of PowerPoint behaviours that I don’t like and don’t need - including the automatic hierarchy of bullet points that has been [criticised for implying semantics that aren’t there](http://www.edwardtufte.com/tufte/powerpoint).
I quite like [Google Slides](https://www.google.co.uk/slides/about/), but when travelling a lot on trains with decidedly wobbly WiFi, there’s just too much activity on the wire to work with Google Docs, and it can seriously hamper productivity.
So: I now use Reveal.js with a (mostly) offline git-based workflow, which means I can work locally, and then when I want to push to the remote repo, the presentation is hosted by GitHub pages. It also means I can branch the repo and make new changes without changing the live Internet-based version, until I’m ready.
## Prerequisites
* familiarity with [git](https://git-scm.com/) for local and remote work
* basic HTML and text editing skills
* basic CSS understanding and skills
* some idea of how to host pages with GitHub pages. I already have ‘organisation’ level GitHub pages set up on my GitHub username, so new presentations appear as {bawmedical.co.uk}/{presentation-name}
## Howto
1. create a new GitHub repo with the name you want the presentation to be known as (NB: other online git-integrated source control platforms are available :-) )
2. `git clone` this repo to a suitable local directory, which should create a subdirectory of the same name as your presentation
3. Get a blank reveal.js presentation from https://github.com/hakimel/reveal.js/releases - this comes with some ‘placeholder’ or demo slides which are all the introduction you need. I have a blank presentation stored locally that includes all the theming I like to use, and has some of my preferences preset. So I just copy and paste the code
4. Start adding content to your slides. The Reveal.js documentation is very simple, and very helpful.
5. Make local commits (eg `git commit -am "commit message"` ) as required. Usually I just work in the master branch, and make commits irresponsibly infrequently. So sue me.
6. To push to GitHub for hosting of the presentation, create a local `gh-pages` branch ( `git checkout -b "gh-pages"` )
7. When you push this `gh-pages` branch to GitHub, your’ pages will be hosted as a subdirectory of your main site (in my case http://www.bawmedical.co.uk/ is the base URL, and presentations are hosted at http://www.bawmedical.co.uk/presentation-repo-name)
## Upsides
* All your **content** is in HTML
* All your **styling** in in CSS/SASS and therefore can be applied consistently to all slides, a subset of slides, or individual elements. Global templates therefore behave more predictably than templates do in LibreOffice (awful) or even Google Slides (better than LO but still not great)
* You can present direct from the Internet, so there’s no hassle with USB keys and local machines, you just fire up Chrome, hit the URL of your presentation, full-screen it with F11 and get going.
* Because it’s just HTML5, in a browser, you can present via Chromecast to basically anything (see my other blog on this)
* Your presentations get hosted online for free, and you don’t need to cosy up with the Militiary-Industrial-SlideShare-LinkedIN Complex.
* Because your presentations are natively web-based, you can easily share URLs of your slides before, during, or after your presentation. Great for tweeting the link at an event.
* You can embed a presentation in a web page with an `iframe` (like I have done at the top of this page)
## Downsides
* You can’t easily get other people to work with you collaboratively on these slides, unless they also understand enough about HTML/CSS/Git etc to be able to grok it. In those cases, I guess would recommend Google Slides.
* Reveal.js seems to be a pretty large library, so initial page loads are sloooowwwww, as well as any fonts, image and other assets you included. Once downloaded, it’s pretty cool.
* When event organisers ask for your USB key with your presentation on it, and you say ‘don’t worry I only need a browser’, they universally look a little freaked out.
---
**Canonical:** https://bawmedical.co.uk/t/using-reveal-js-for-presentations-with-a-mostly-offline-git-based-workflow-and-free-hosting/51
**Original content:** https://bawmedical.co.uk/t/using-reveal-js-for-presentations-with-a-mostly-offline-git-based-workflow-and-free-hosting/51