diff --git a/bookwyrm/static/js/tour.js b/bookwyrm/static/js/tour.js
new file mode 100644
index 000000000..b8cecfae5
--- /dev/null
+++ b/bookwyrm/static/js/tour.js
@@ -0,0 +1,105 @@
+const homeTour = new Shepherd.Tour({
+ exitOnEsc: true,
+});
+
+homeTour.addSteps([
+ {
+ text: "Search for books, users, or lists using this search box.",
+ title: "Search box",
+ attachTo: {
+ element: "#search_input",
+ on: "bottom",
+ },
+ buttons: [
+ {
+ action() {
+ return this.cancel();
+ },
+ secondary: true,
+ text: "Cancel",
+ classes: "is-danger",
+ },
+ {
+ action() {
+ return this.next();
+ },
+ text: "Next",
+ },
+ ],
+ },
+ {
+ text: "The latest books to be added to your reading shelves will be shown here.",
+ title: "Your Books",
+ attachTo: {
+ element: "#suggested_books_block",
+ on: "right",
+ },
+ buttons: [
+ {
+ action() {
+ return this.back();
+ },
+ secondary: true,
+ text: "Back",
+ },
+ {
+ action() {
+ return this.next();
+ },
+ text: "Next",
+ },
+ ],
+ },
+ {
+ text: "The bell will light up when you have a new notification. Click on it to find out what exciting thing has happened!",
+ title: "Notifications",
+ attachTo: {
+ element: '[href="/notifications"]',
+ on: "left-end",
+ },
+ buttons: [
+ {
+ action() {
+ return this.back();
+ },
+ secondary: true,
+ text: "Back",
+ },
+ {
+ action() {
+ return this.next();
+ },
+ text: "Next",
+ },
+ ],
+ },
+ {
+ text: "Your profile, books, direct messages, and settings can be accessed by clicking on your name here.
Try selecting Profile
from the drop down menu to continue the tour.",
+ title: "Profile and settings menu",
+ attachTo: {
+ element: "#navbar-dropdown",
+ on: "left-end",
+ },
+ buttons: [
+ {
+ action() {
+ return this.back();
+ },
+ secondary: true,
+ text: "Back",
+ },
+ {
+ action() {
+ return this.next();
+ },
+ text: "Ok",
+ },
+ ],
+ }
+]);
+
+function startTour(tourName) {
+ if (tourName === 'home') {
+ homeTour.start()
+ }
+}