# Shower: HTML presentations with the engine separated from the theme

> Shower is an MIT-licensed HTML presentation engine built on vanilla JavaScript, CSS and HTML, working in all modern browsers, fully keyboard accessible and printable to PDF. Its monorepo splits the core engine from the Ribbon and Material themes, ships a ready-to-use template and a CLI for creating, serving, bundling and publishing presentations, with the live demo running at shwr.me.

**shower/shower** — Shower HTML presentation engine

- Repository: https://github.com/shower/shower
- Website: https://shwr.me
- Stars: 4,877 · Forks: 853
- Language: JavaScript
- License: NOASSERTION
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/shower-shower

## A person or thing that shows

The README opens with a dictionary entry, Shower, pronounced shou-er, noun, a person or thing that shows, and that definition is the product specification, a thing that shows. The five numbered points that follow are the architecture, built on HTML, CSS and vanilla JavaScript, works in all modern browsers, themes are separated from engine, fully keyboard accessible, and printable to PDF. Each point is a boundary, no framework dependency in the engine, no legacy browser support burden, no theme baked into the core, no mouse-only interaction, and no export pipeline needed to produce a portable artifact. The project is licensed MIT, runs its live demo at shwr.me, and has no GitHub releases because the packages publish to npm individually.

## Five packages, engine and themes apart

The monorepo's package table maps the architecture concretely. The core package, at-shower/core, is the presentation engine handling slide management, navigation, progress bar and timer. The material package is a Material Design theme, the ribbon package is the Ribbon theme, both consuming the core rather than embedding it. The shower package is the ready-to-use presentation template binding a theme to content, and the cli package is the tool for creating, serving, bundling and publishing presentations. The theme-engine separation is the design decision the project leads with, so switching a deck from Ribbon to Material is a dependency change rather than a rewrite, and the two shipped themes double as reference implementations for anyone building their own.

## Two quick starts, one command apart

The simplest path needs no tools at all, download and unzip the shower.zip template archive from shwr.me, open index.html in any text editor and start creating your presentation, the deck being plain files that run by opening them. The CLI path needs Node.js installed, then two commands, npm install -g @shower/cli to install the utility and shower create to start a presentation, with the cli package's own page carrying the rest, the serve, bundle and publish subcommands that turn a folder of slides into a deployable artifact. The two paths serve two audiences, the designer editing HTML directly and the developer who wants a dev server and a build step, and both end at the same engine.

## Keyboard accessibility as a feature bullet

Fully keyboard accessible sits third in the feature list, promoted to architecture rather than appendix. For a presentation engine the property has concrete meaning, every navigation action reachable from the keyboard, so a presenter with a clicker that emits keystrokes, or a presenter who simply prefers keys, controls the whole deck, and the PDF printability pairs with it, the browser's print pipeline producing the handout version of the same deck. Browser support is stated as the latest stable versions of Chrome, Edge, Firefox and Safari, the four engines that cover essentially all desktop browsing, and the honest scoping means no claims about older browsers or the long tail, the modern-browser-only stance the vanilla JavaScript foundation makes sustainable.

## The shwr.me site lives in the repo

The workspaces list includes shwr.me beside the packages, meaning the project's own website and demo are part of the monorepo, built by its own build script and serving as the live proof of the engine. The development scripts route by workspace, dev commands for shower, ribbon and material, a build command for core and another for the site, so a contributor can run the theme they are working on in isolation. The engines field pins Node at 24 or newer for the repository's own tooling, and the lint script chains three checks, an editorconfig checker, eslint, and stylelint over the themes' CSS with a pepelsbey config, named for one of the project's main contributors, the code style governed by the people who wrote it.

## Testing the core and the CLI

The test script composes three layers, the lint suite, then the CLI tests and the core tests, each delegated to its workspace. Playwright appears in the dev dependencies, the browser automation framework used to test the presentation engine's behavior in real browsers rather than simulating the DOM, which is the correct test target for an engine whose product is interaction in a browser. Rollup and Vite handle the bundling and development serving, and the githooks directory wired by the prepare script keeps the lint gates running locally before anything reaches CI. For a project whose users are presenters standing in front of audiences, the reliability bar justifies the machinery.

## Contributors in historical order

The contributors list is ordered historically rather than by contribution volume, pepelsbey first, followed by jahson, miripiruni, kizu, artpolikarpov, tonyganch, zloylos and shvaikalesh, a roster that reads as the Russian web standards community the project grew from, with Vadim Makeev, pepelsbey, being the name most associated with its advocacy. The contribution process asks for an issue with the idea first, before a fork and pull request, with contributing rules documented in their own file. The repository was pushed 2026-09-22, the CHANGELOG tracking the engine's evolution, and the licensing is MIT through a LICENSE.md the README links, closing a project whose documentation is as disciplined as its engine.

## Conclusion

Use Shower when a presentation should be a web page you own, versioned in git, editable in any editor and served from anywhere, rather than a binary file in a desktop application. Choose a desktop slide tool when collaboration happens in that ecosystem instead. Before adopting, pick the entry path matching your tooling, the unzip-and-edit shower.zip template or the CLI with shower create after npm install -g @shower/cli, note Node 24 or newer is required for development in the repository, and check the browser support line, latest stable Chrome, Edge, Firefox and Safari, since that is what the engine tests against.

## FAQ

### What is the Shower presentation engine?

Shower is an MIT-licensed HTML presentation engine built on vanilla JavaScript, CSS and HTML, working in all modern browsers with full keyboard accessibility and PDF printing. Themes are separated from the engine, with Ribbon and Material themes shipped as separate packages alongside the core, a template and a CLI.

### How do you create a presentation with Shower?

Either download and unzip the shower.zip template archive and edit index.html in any text editor, or install the CLI with npm install -g @shower/cli and run shower create, with the CLI also handling serving, bundling and publishing of the presentation.

### Which browsers does Shower support?

The latest stable versions of Chrome, Edge, Firefox and Safari are supported. The engine is built on vanilla JavaScript with no framework dependencies, and presentations print to PDF through the browser's own print pipeline.

## Sources

- [Issues](https://github.com/shower/shower/issues)
- [Project website](https://shwr.me)
- [README](https://github.com/shower/shower/blob/main/README.md)
- [shower/shower on GitHub](https://github.com/shower/shower)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/shower-shower
