Documentation

Golf Simulator Booking System

A complete, self-hosted booking and facility management system that ships pre-configured on a Raspberry Pi. Plug it in, run the wizard, and your facility is accepting online bookings in minutes. No monthly SaaS fees. Your data stays on your hardware.

What This Is

This is a turnkey booking system built specifically for golf simulator facilities. It handles everything from online booking and payments to membership management, automated hardware control, and customer notifications.

Unlike SaaS platforms that charge monthly fees and store your data on their servers, this system runs entirely on a small computer that sits at your facility. You own the hardware, you own the data, and there are no recurring platform fees.

The short version: You receive a Raspberry Pi 5 in the mail. You plug it into your network and run a setup wizard. Your customers can start booking online immediately. The system runs 24/7 on its own.

What Ships

You receive a Raspberry Pi 5 (4GB) pre-loaded with everything needed to run your facility's booking system. The Pi is a small, silent, low-power computer about the size of a deck of cards.

Hardware
Raspberry Pi 5 (4GB RAM), power supply, Ethernet cable, microSD card
Operating System
Raspberry Pi OS (Debian-based Linux), hardened and configured
Software
Node.js booking server, SQLite database, PM2 process manager, Cloudflare Tunnel
Power Draw
About 5 watts — costs roughly $5/year to run 24/7
Network
Connects to your existing router via Ethernet or WiFi. No static IP or port forwarding needed.
Updates
Security patches install automatically. Feature updates delivered via USB or remote support.

Setup Process

Step 1 — Unbox and Connect

Plug the Pi into power and connect it to your router with the included Ethernet cable. The Pi boots in about 30 seconds. No monitor, keyboard, or mouse needed — everything is managed through your web browser.

Step 2 — Run the Setup Wizard

Open a browser on any device on your network and navigate to the Pi's address. The setup wizard walks you through nine steps: business name, admin password, bays, operating hours, pricing, theme, SMS configuration, email notifications, and hardware setup. Takes about five minutes.

Step 3 — Point Your Domain

A Cloudflare Tunnel is pre-configured on the Pi. You add a single CNAME record to your domain's DNS settings (we walk you through it), and your booking site is live on the internet. Cloudflare handles SSL certificates automatically — your site is HTTPS from day one.

Step 4 — Accept Bookings

Your customers visit your domain, see your branded booking page, and can reserve a bay immediately. Payments process through Stripe. Confirmations go out via SMS and/or email. Door codes generate automatically. Equipment turns on before sessions and off after. The Pi handles everything.

Restoring From a Previous System

If you're setting up a replacement Pi or upgrading hardware, the setup wizard can detect a backup file on a connected USB drive and restore your entire system — bookings, members, settings, waivers, and images — with one click.

Features in Detail

Online Booking

Customers choose a bay, pick a date and time, select their session length (30 minutes to 4 hours in 30-minute increments), and pay with a credit card via Stripe. The system shows real-time availability per bay and prevents double-bookings. Booking confirmations are sent immediately via SMS and email.

Membership System

Create unlimited membership tiers with different pricing, hour limits, schedule restrictions, and guest policies. Members receive a PIN they enter at booking time to unlock their tier pricing. The system enforces daily, weekly, and monthly hour limits automatically — when a member exceeds their limit, they can still book at regular price.

Each tier can restrict booking to certain days (e.g., weekdays only), certain hours (e.g., 6am–5pm), and certain bays. You can also set per-tier booking windows (how far in advance members can book), guest pass limits, and guest pricing rules.

Member Self-Service Portal

Members log in with their name and PIN to see their usage stats (today, this week, this month), remaining hours against their limits, guest passes used and remaining, upcoming bookings, and recent history. All displayed with progress bars and tier-specific information.

Customer Booking Management

Customers who have booked can look up their sessions by phone number or email address. They receive a 6-digit verification code via SMS or email, then can view all their bookings, see their door codes, and cancel sessions that are more than 24 hours away. Cancellations within the 24-hour window are blocked. Stripe refunds process automatically for eligible cancellations.

Tiered Pricing

Set different rates for different times and days. For example: $15/half hour on weekday mornings, $22/half hour on weekday evenings, $25/half hour on weekends. The system calculates the correct price for each 30-minute block — a session that spans two pricing tiers is charged at both rates proportionally.

Discount Codes

Create codes that give percentage off, fixed dollar amounts off, or free minutes. Each code can have a total usage limit, a per-customer limit, and an expiration date. Discount codes stack with member pricing — a member can use their tier discount and a code on the same booking.

SMS Notifications (Twilio)

Five automated message types: booking confirmation, session reminder (configurable timing), door access code (15 minutes before), session ending warning (15 minutes before end, with different messages depending on whether another group follows), and cancellation notice. Every message template is fully customizable in the admin panel.

Email Notifications (Resend)

Mirrors the SMS notification flow via email. Booking confirmations, reminders, door codes, session ending notices, and cancellation emails. Configurable per notification type — you can enable email for confirmations but not reminders, for example. Works alongside SMS or as a standalone method for facilities that prefer email.

Smart Plug Control (Shelly)

Assign Shelly smart plugs to each bay. Each plug has its own schedule: turn on X minutes before the session starts, turn off X minutes after the session ends. Control bay lights, fans, signage, or any equipment plugged into a Shelly device. Manual on/off controls are available in the admin panel for walk-in situations.

TV and Projector Automation (BroadLink RM Mini)

A BroadLink RM Mini (or RM4) sits near each bay's TV or projector and sends infrared signals — the same signals your existing remote sends. You teach it the ON and OFF codes using the admin panel's "Learn" button, set the timing, and the system handles the rest. TVs turn on before each session and off after, completely automatically.

Door Access Codes (RemoteLock)

If your facility uses RemoteLock smart locks, the system generates a unique door code for each booking. The code is texted to the customer 15 minutes before their session and automatically revoked 20 minutes after the session ends. No keys, no staff needed for access.

Simulator PC Shutdown

The Pi sends a shutdown command to each bay's Windows PC when the session is about to end. The customer sees a message on screen with a countdown timer. They can dismiss it and keep playing until the timer runs out. If another booking follows immediately (back-to-back), the shutdown is skipped entirely so the next customer walks into a running simulator.

Waivers

Upload a liability waiver PDF in the admin panel. When a waiver is active, customers must agree to it and type their full name before completing a booking. Signed waivers are recorded with the customer's name, IP address, and timestamp. The admin panel shows a log of all signed waivers.

Announcement Banner

Display a message at the top of the booking page — holiday hours, special events, maintenance notices, or promotions. Toggle it on and off from the admin panel without touching any code.

Themes

Six built-in color themes that change the entire look of the booking page, admin panel, and all customer-facing pages with one click: Dark Gold, Midnight Blue, Forest Green, Warm Ember, Slate Steel, and Classic.

Backup and Restore

Download a complete backup of your system from the admin panel — database, config, waivers, uploaded images, everything in one zip file. Save it to a USB drive or your computer. If you ever need to set up a new Pi, the setup wizard can restore from a USB backup with one click.

Security

The system is hardened at the operating system level, the network level, and the application level. Every Pi ships with these protections active.

Data and Privacy

Where Data is Stored

All data is stored locally on the Pi's microSD card in an SQLite database file. Bookings, members, waivers, usage records, admin logs — everything lives on your hardware at your facility. Nothing is sent to a cloud database.

What Data is Collected

The system stores customer names, phone numbers, email addresses, booking details (dates, times, bays, amounts), membership information (tier, PIN, usage history), and signed waiver records. Credit card information is never stored — all payment processing happens through Stripe's servers.

What Leaves Your Network

The only data that leaves your network is what you explicitly configure:

If you don't configure these integrations, no data leaves your network at all. The system works without them — you just won't have payments, SMS, email, or smart lock features.

SMS Compliance

The system includes a built-in SMS Terms and Privacy Policy page that auto-populates with your business information. Customers must consent to SMS notifications during the booking process. They can reply STOP to any message to opt out and START to re-subscribe. This is required by mobile carriers for any business sending automated text messages.

Technical Details

Application
Node.js (Express) — single server process managed by PM2
Database
SQLite via sql.js — single file, zero configuration, no separate database server
Process Manager
PM2 — auto-restart on crash, auto-start on boot, log management
Tunnel
Cloudflare Tunnel (cloudflared) — outbound-only, no port forwarding
Scheduler
node-cron — checks every 60 seconds for SMS, door codes, hardware triggers, and shutdowns
IR Bridge
Python 3 Flask service on port 3002 (localhost only) using the broadlink library
Smart Plugs
Direct HTTP calls to Shelly devices on the local network (Gen 1 and Gen 2+ supported)
PC Shutdown
net rpc shutdown via Samba — sends shutdown commands to Windows PCs on the local network
Payments
Stripe Payment Intents API — PCI-compliant, card data never touches your server

Common Questions

What happens if the Pi loses power?

When power is restored, the Pi boots automatically, PM2 restarts the booking server, and the Cloudflare Tunnel reconnects. Bookings already in the database are preserved. No data is lost. The system is typically back online within 60 seconds of power returning.

What happens if my internet goes down?

The booking site becomes unreachable from the internet, but the Pi itself continues running. Already-scheduled hardware automations (Shelly, BroadLink, PC shutdowns) continue to fire on schedule because they operate on the local network. When internet returns, the Cloudflare Tunnel reconnects automatically.

Can I have more than two bays?

Yes. The system supports any number of bays. Add them in the setup wizard or the admin panel. Each bay gets its own availability calendar, hardware assignments, and pricing.

Do I need technical skills to run this?

No. Day-to-day management is done entirely through the admin panel in your browser. The setup wizard handles initial configuration. The Pi runs unattended after that.

Can someone hack into my network through the booking site?

No. The Cloudflare Tunnel is a one-way outbound connection from the Pi to Cloudflare. There are no open inbound ports on your router. Someone visiting your booking site can only interact with the booking application — they cannot access your router, other devices on your network, or anything else on the Pi beyond the web application.

What if I need to move or replace the Pi?

Download a backup from the admin panel, save it to a USB drive, plug the USB into the new Pi, and run the setup wizard. It detects the backup and restores everything — bookings, members, settings, waivers, images — in one click.

Questions? Ready to Order?

Reach out to Bruce for pricing, questions, or to schedule a walkthrough of the live demo.

Back to the Live Demo