---
title: "Deploy Openfront Tour Guide"
description: "Opensource FareHarbor alternative based on Next.js and Keystone.js"
category: "Starters"
url: https://railway.com/deploy/openfront-tour-guide
---

# Deploy Openfront Tour Guide

Opensource FareHarbor alternative based on Next.js and Keystone.js

**[Deploy Openfront Tour Guide on Railway](https://railway.com/template/openfront-tour-guide)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/openfront-tour-guide/manifest.json

- **Creator:** Openship
- **Category:** Starters

## Template content

### openfront-tour-guide

- **Source:** https://github.com/openshiporg/openfront-tour-guide
- **Start command:** `npm run migrate && next start`
- **Public domain:** Yes

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

## Buckets

- **Storage**

## Documentation

# Deploy and Host Openfront Tour Guide with Railway

Openfront Tour Guide is a self-hostable booking and operations application for tour and activity operators. Guests book scheduled departures online, sign waivers, and check in; staff assign guides and equipment, handle weather cancellations, and settle money with guests, guides, and resellers.

## About Hosting Openfront Tour Guide

This template provisions the application from [its GitHub repository](https://github.com/openshiporg/openfront-tour-guide), PostgreSQL, and a private native Railway Bucket named `Storage`. The database starts empty; no demo records or reusable credentials are included. After deployment, open `/dashboard/init` to create the first admin, then load the complete or basic setup template from the sidebar.

`DATABASE_URL` references Postgres and the five `S3_*` variables reference the Storage bucket. Generated per deployment: `SESSION_SECRET`. Other references: `SMTP_STORE_LINK`. Defaults: `NODE_ENV=production`, `PUBLIC_SIGNUPS_ALLOWED=false`.

Optional and blank until you configure the provider: `NEXT_PUBLIC_STRIPE_KEY`, `SMTP_FROM`, `SMTP_HOST`, `SMTP_PASSWORD`, `SMTP_PORT`, `SMTP_USER`, `STRIPE_PUBLISHABLE_KEY`, `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`.

The app gets a Railway-generated public domain on port 8080. No custom domains are included.

### Admin Dashboard
Staff work from Today, Calendar, Bookings (status tabs and refunds), a mobile check-in manifest, Guides, and screens for Tours, Waivers, Promo codes, Resources, Channels, Customers, Payment providers, and Settings.

### Storefront
Guests browse tours, pick a date, choose ticket quantities and add-ons, hold seats on a timer, enter participant names, and pay by card through Stripe. The confirmation shows the booking code, meeting point, and waiver links. Guests can look up and cancel a booking under the stored policy.

### Departures & Capacity
- Schedules generate departures with live booked, held, and remaining seats.
- Seat holds expire after 10 minutes; every booking takes a lock on the departure.
- Guide and vehicle or boat assignment with overlap and certification checks.

### Money & Channels
- Bookings snapshot prices, add-ons, tax, discounts, and the cancellation policy.
- Refunds follow the stored policy; weather cancellations refund in full.
- Reseller channel bookings and statements, guide payouts, and promo codes.

## Common Use Cases

- Departures & Capacity
- Money & Channels
- Waivers & Check-In

## Dependencies for Openfront Tour Guide Hosting

The app needs a PostgreSQL database and S3-compatible object storage. Both are provisioned by this template.

### Deployment Dependencies

- [openfront-tour-guide on GitHub](https://github.com/openshiporg/openfront-tour-guide)
- [Full README and onboarding instructions](https://github.com/openshiporg/openfront-tour-guide#readme)
- [Documentation](https://docs.openship.org/docs/openfront/tour-guide)
- [Railway Buckets](https://docs.railway.com/guides/storage-buckets)

### Implementation Details

Next.js and Keystone 6 with a GraphQL API, Prisma, and PostgreSQL. Migrations run at start (`npm run migrate && next start`). Payments, email, and other external providers need their own operator configuration; this template does not activate them. For card payments, point a Stripe webhook at `/api/webhooks/payment/pp_stripe`.

## Why Deploy Openfront Tour Guide on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Openfront Tour Guide on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


## Similar templates

- [Openfront Gym](https://railway.com/deploy/openfront-gym) — Opensource Mindbody alternative based on Next.js and Keystone.js
- [open-excalidraw](https://railway.com/deploy/open-excalidraw) — Self-hostable collaborative drawing built on Excalidraw
- [Next.js + Prisma + PostgreSQL Starter](https://railway.com/deploy/nextjs-prisma-postgres) — Deploy a Next.js app with Prisma ORM and PostgreSQL in one click.

Open this page in a browser: https://railway.com/deploy/openfront-tour-guide
