# Walter
[](https://travis-ci.com/actmd/walter)
Product tours like a badass.
Walter White icon by Icons8
Walter makes it easy to show guided tours to users of your Rails application. When Walter shows a tour, it keeps track of whether the user has completed it (so it doesn't get shown again) or dismissed it for later (so it reappears in a future user session).
* Define tour content with simple YAML files, in any/many languages.
* Organize tours by controller and action.
* Trigger tours automatically on page load or manually via JavaScript method.
* Built with the [Shepherd JS](https://shepherdjs.dev/) library. Plays nicely with Turbolinks.
* Ships with two basic CSS themes (default & dark) — or write your own
* Show video/html content in your
## Requirements
* Walter needs to know the current user to track tour views, e.g. `current_user` from Devise.
* Walter is tested on Rails 5.2, 6.0, and 6.1
## Installation
Add `walter` to your Gemfile:
```
gem 'walter'
```
Install the gem and run the installer:
```
$ bundle install
$ rails generate walter:install
$ rails db:migrate
```
Install the JavaScript dependencies:
```
$ yarn add js-cookie@^2.2.0 shepherd.js@^6.0.0-beta
```
Require `walter` in `app/assets/javascripts/application.js`
```
//= require walter
```
Require a CSS theme in `app/assets/stylesheets/application.scss`
```
*= require walter/theme-default
```
Walter provides the following themes:
- `theme-default`
- `theme-dark`
Update `config/walter.yml` if you choose a different theme:
```
defaults: &defaults
:tour_options: '{ defaultStepOptions: { classes: "theme-dark" } }'
```
You can also [write your own Shepherd theme](https://shepherdjs.dev/docs/tutorial-03-styling.html) based on Shepherd's [default CSS](https://github.com/shipshapecode/shepherd/releases/download/v6.0.0-beta.1/shepherd.css).
Tell Walter where to insert its generated JavaScript in `app/views/layouts/application.html.erb`, just before the closing `body` tag:
```erb
<%= walter_tour %>