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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
The system is hardened at the operating system level, the network level, and the application level. Every Pi ships with these protections active.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Reach out to Bruce for pricing, questions, or to schedule a walkthrough of the live demo.