---
title: "Deploy Openfront Gym"
description: "Opensource Mindbody alternative based on Next.js and Keystone.js"
category: "Starters"
url: https://railway.com/deploy/openfront-gym
---

# Deploy Openfront Gym

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

**[Deploy Openfront Gym on Railway](https://railway.com/template/openfront-gym)**

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

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

## Template content

### openfront-gym

- **Source:** https://github.com/openshiporg/openfront-gym
- **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 Gym with Railway

Openfront Gym is a self-hostable platform for gyms and fitness studios. It combines a public membership and class-booking site with member accounts and a staff dashboard for schedules, rosters, check-in, billing, personal training, retail sales, and facility operations.

## About Hosting Openfront Gym

This template provisions the application from [its GitHub repository](https://github.com/openshiporg/openfront-gym), PostgreSQL, and a private native Railway Bucket named `Storage`. The database starts empty; no demo records or reusable credentials are included. Initialize the application using the repository's onboarding instructions after deployment.

`DATABASE_URL` references Postgres and the five `S3_*` variables reference the Storage bucket. Generated per deployment: `QR_CODE_SECRET`, `SESSION_SECRET`. Other references: `NEXTAUTH_URL`. Defaults: `MAIL_ENABLED=false`, `NODE_ENV=production`, `PUBLIC_MEMBER_SIGNUPS_ALLOWED=true`, `PUBLIC_MEMBER_SIGNUP_ORGANIZATION_ID=gym_default_organization`, `PUBLIC_SIGNUPS_ALLOWED=false`, `STOREFRONT_ORGANIZATION_ID=gym_default_organization`, `STRIPE_ENABLED=false`.

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

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

### Admin Dashboard
Manage members, membership plans, class catalogs, instructors, locations, schedules, rosters, and billing. Staff work from dedicated check-in, training, retail, import, operations, and reporting screens.

### Storefront
Visitors can browse memberships, classes, schedules, instructors, facilities, and club policies. Members can review bookings, membership details, profile information, participation terms, and training in their account.

### Memberships & Billing
Membership tiers, subscriptions, payment records, and class-credit ledgers support membership administration. The Stripe integration includes membership checkout, billing-portal access, subscription changes, refunds, and signed payment webhooks. New Stripe charges and email delivery require their respective configuration.

### Classes, Check-In & Training
- Class types, recurring schedules, individual sessions, capacity checks, bookings, cancellations, and waitlists.
- Staff rosters and attendance records.
- Member QR codes, front-desk check-in, and a staff-unlocked kiosk.
- Trainer availability, appointments, coaching assignments, workout logs, and training-credit records.
- Staff-managed training packages issued from recorded settled purchases or verified counter card payments.

### Retail & Facility Operations
Record retail sales, returns, stock entries, and drawer closes. Manage locations, resources, operational notices, and participation policies alongside member operations.

## Common Use Cases

- Memberships & Billing
- Classes, Check-In & Training
- Retail & Facility Operations

## Dependencies for Openfront Gym Hosting

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

### Deployment Dependencies

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

### Implementation Details

Next.js and Keystone 6 with a GraphQL API, Prisma, and PostgreSQL. Payments, email, and other external providers need their own operator configuration; this template does not activate them.

## Why Deploy Openfront Gym 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 Gym 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

- [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.
- [caring-vibrancy](https://railway.com/deploy/caring-vibrancy) — Deploy and Host caring-vibrancy with Railway

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