MK Head & Scalp Spa
Booking System
Complete User Manual
Version 1.0  ·  Chicago, IL  ·  mkhead.com

1System Overview

The MK Head & Scalp Spa Booking System is a complete, custom-built platform managing every aspect of spa operations — from online bookings and payments to therapist scheduling, customer records, a wall calendar display, and a walk-in kiosk.

1.1 Architecture

Booking Pagebook.html — customer-facing online booking wizard
Admin Paneladmin/index.html — full management dashboard
Calendar Displaycalendar.html — wall screen / TV display
Kiosk Screenkiosk.html — customer check-in touch screen
Manage Bookingmanage.html — customer self-service
BackendNode.js + Express, running on your Windows 11 machine
DatabaseMicrosoft SQL Server (MKHeadBooking database)
PaymentsSquare API
EmailResend transactional email
Public AccessCloudflare Tunnel routing mkhead.com to your local server

1.2 Local URLs

Booking Pagehttp://localhost:3300/book.html
Admin Panelhttp://localhost:3300/admin/
Calendar Screenhttp://localhost:3300/calendar.html
Kioskhttp://localhost:3300/kiosk.html
Manage Bookinghttp://localhost:3300/manage.html

2Daily Startup & Shutdown

2.1 Starting the System

Open two PowerShell windows each morning:

# Window 1 — Node.js Server
cd "C:\Users\algis\OneDrive\Desktop\bekeris.net\WEB Sites\MKSpa\mkhead-booking\server"
npm start
# Expected: Listening on http://localhost:3300
# Window 2 — Cloudflare Tunnel (public access)
cloudflared tunnel run mkhead-booking
# Expected: Registered tunnel connection
The auto-complete job starts automatically and runs every 5 minutes to mark past bookings as completed based on your Settings configuration.

2.2 Stopping

Press Ctrl+C in each PowerShell window to stop gracefully.

3Admin Panel

The admin panel is the central management interface. Navigate to http://localhost:3300/admin/ and sign in with your email and password.

Sessions last 7 days. You will not need to sign in after a browser refresh unless the session has expired or you explicitly logged out.

3.2 Dashboard

Auto-refreshes every 30 seconds. Contains:


3.3 Calendar

Two views toggled with buttons at the top:

Appointment color coding:

YellowScalp services
GreenHair services
PinkCouples services
BlueOther / uncategorized
PAID badgeCard payment — shown at lower right of block
👥 iconMulti-therapist booking
Click any appointment block to view details. Double-click to open the edit form.

3.4 Bookings

Four tabs: Confirmed, Completed, Cancelled, No-Shows. Use the + New Booking button to create admin-side bookings without requiring payment.

From each booking's detail modal you can: edit date/time/customer details, add admin notes, mark as no-show, complete, or cancel.


3.5 Reports

RevenueBar chart + table showing bookings, revenue, tips, cancellations. Daily / Weekly / Monthly. Export to CSV.
CustomersFull customer list with visit count, lifetime spend, and last visit. Export to CSV.
ServicesBooking count and revenue per service across all time.

3.6 Services

Name & CategoryCategory sets the calendar color and groups services on the booking page
DurationIn minutes — drives availability slot sizing
Base PriceIn dollars, before add-ons, fees, or tips
Therapists Required1 for solo, 2+ for couples or group services
Buffer BeforeMinutes blocked before start — for setup/prep (0 to disable)
Buffer AfterMinutes blocked after end — for cleanup (0 to disable)
Add-on ModifiersExtras like Hot Stones or Coconut Oil — added inline with the + Add button

3.7 Therapists


3.8 Payment Settings

Mandatory rulesAlways applied at checkout — customer cannot remove (e.g. Illinois Sales Tax 10.25%)
Optional rulesShown with a toggle — customer can turn off (e.g. processing fee)
Fixed amountA flat dollar fee, e.g. $5.00
PercentageCalculated on subtotal before tip, e.g. 8.75%
Tips15%, 18%, 20%, 25%, and custom — always shown, tracked separately per booking

3.9 Users & Permissions

RoleAccess
OwnerFull access — all pages including user management
ManagerAll pages except Users — services, payments, reports, customers, waivers
StaffDashboard, Calendar, Bookings only — for front desk use
Read-onlyDashboard and Reports only — for accountants or observers
After changing a user's role, they must log out and back in for the new permissions to take effect.

3.10 Settings

Booking Slot Interval10, 15, 20, 30, 45, or 60 minutes between available slots on the booking page
Minimum Lead TimeHours in advance a booking must be made (0 = same day allowed)
Max Days AheadHow far ahead customers can book (default 90 days)
Calendar RefreshAuto-refresh interval for the standalone calendar screen (30s – 300s)
Kiosk RefreshAuto-refresh interval for the kiosk screen
Auto-CompleteEnable/disable automatic completion of past bookings
Auto-Complete DelayMinutes after end time before marking confirmed → completed
Check-In WindowMinutes before appointment that kiosk check-in is available
Spa NameDisplayed on emails and the booking page
TimezoneUsed for scheduling calculations (default: America/Chicago)

3.11 Customers

Complete customer database merged from Setmore, Square, and online bookings. Features:

The merged CSV from Setmore + Square (customers_merged.csv) is ready to import directly. It contains 936 unique customers with transaction history from Square.

3.12 Waivers

View all health and consent waivers submitted via the kiosk. Each entry shows the customer name, email, submission date, booking reference (if linked), and whether a signature was captured. Click any row to view the full waiver including the digital signature image.

4Customer Booking Page

A 5-step wizard accessible at mkhead.com/book.html. Customers can book from any device.

Step 1 — Choose a Service

Services grouped by category. Each card shows the service name, description, duration, therapist count, and starting price. If add-ons are available, a checkbox list appears below the selected service.

Step 2 — Choose Therapist(s)

Solo services require one therapist; couples services require two. Customers select their preferred therapist(s) by name.

Step 3 — Pick a Date & Time

Available slots are shown based on the therapist's schedule, buffer times, and existing bookings. Today is selectable; past time slots are automatically filtered out. The slot interval is configurable in Settings.

Step 4 — Your Details

Customer enters name, email, phone number, and any special notes (allergies, preferences).

Step 5 — Payment

Full order summary with live recalculation as the customer selects tips and toggles optional fees. Two payment methods:

A confirmation email is sent automatically after booking. The confirmation screen shows the booking reference (e.g. MK-A1B2C3).

5Customer Self-Service

Customers can reschedule or cancel their own bookings at mkhead.com/manage.html — no account required, just their booking reference and email.

Reschedule

Customer picks a new date and time for the same service and therapist(s). The system checks live availability. Must be done at least 24 hours before the appointment.

Cancel

Customer cancels with an optional reason. Must be done at least 24 hours in advance. Both the customer and admin@mkhead.com receive email notifications, and an alert appears on the admin dashboard.

Cancellation or reschedule requests within 24 hours are blocked online. Handle these directly from the admin panel → Bookings page.

6Standalone Calendar Screen

Designed for a wall-mounted TV or dedicated tablet in the spa. Open http://localhost:3300/calendar.html.

Features

Setup

7Customer Kiosk

A touch-screen check-in station for the waiting area. Open http://localhost:3300/kiosk.html on a tablet or touchscreen.

Check-In Flow

  1. Customer taps Check In for Appointment
  2. Enters booking reference (e.g. MK-A1B2C3) and email address
  3. Appointment details are displayed for confirmation
  4. Customer taps I'm Here — Check Me In
  5. Admin dashboard shows a check-in notification alert
  6. Customer is prompted to complete the health waiver (optional)
  7. Screen returns to home after 15 seconds

Walk-In Waiver Flow

  1. Customer taps Fill Out Waiver (Walk-In)
  2. Enters name and email
  3. Completes the full health and consent form
  4. Draws a digital signature with their finger
  5. Waiver saved to database — visible in Admin → Waivers

Waiver Fields

Personal InfoName, date of birth, email, phone
Emergency ContactName and phone number
Medical ConditionsAny conditions the therapist should be aware of
Scalp ConditionsPsoriasis, eczema, open wounds, recent chemical treatments
MedicationsCurrent medications that may affect treatment
AllergiesProduct, chemical, or other allergies
Recent TreatmentsColor, relaxer, keratin, etc. in the last 30 days
ConsentFour consent statements — all must be checked to proceed
Digital SignatureDrawn with finger or stylus, saved as image

Recommended Setup

8Square Payment Configuration

8.1 Sandbox (Testing)

Test card: 4111 1111 1111 1111 · Any future expiry · Any 3-digit CVV · Any ZIP

View sandbox transactions at squareupsandbox.com/dashboard

8.2 Going Live

  1. In Square Developer Dashboard, switch to Production and copy the Production Access Token
  2. Update server\.env: set SQUARE_ENV=production, update SQUARE_ACCESS_TOKEN and SQUARE_LOCATION_ID
  3. In public\book.html, change the script tag from sandbox.web.squarecdn.com to web.squarecdn.com
  4. Update SQUARE_APP_ID constant in book.html to your production App ID
  5. Restart the server

9Troubleshooting

"Cannot connect to SQL Server"Open SQL Server Configuration Manager → Enable TCP/IP → Restart the SQL Server service
"Login failed" on admin panelCheck that ADMIN_KEY in .env matches what you are typing. Log out and back in after any .env change.
Port already in use (EADDRINUSE)Run: netstat -ano | findstr :3300 then taskkill /PID <number> /F
Emails not sendingCheck RESEND_API_KEY in .env. Verify mkhead.com domain is confirmed in the Resend dashboard.
Square card form missingEnsure SQUARE_APP_ID in book.html matches your environment (sandbox vs production)
Calendar shows no eventsLog in to the admin panel on that device first — the calendar uses the stored session token
No available time slotsCheck the therapist's weekly schedule is set in Admin → Therapists → Schedule
Import CSV fails (too large)The server body limit is 10MB. If your file is larger, split it and import in batches.
doLogin is not definedJavaScript syntax error in admin.html — check browser console for the error line and replace the file

10Maintenance & Data

10.1 Backing Up

In SQL Server Management Studio: right-click MKHeadBooking → Tasks → Back Up. Schedule weekly backups to an external drive or cloud location.

10.2 Sample Data

# Insert 12 months of realistic sample data
node src/seed-sample.js
# Remove sample data when done presenting
node src/seed-sample.js --remove

10.3 Database Migrations

When updating to a new version, run migrations in order:

node src/migrate-payments.js
node src/migrate-v2.js
node src/migrate-v3.js
node src/migrate-v4.js
node src/migrate-v5.js
node src/migrate-v6.js
Each migration is safe to run multiple times — it checks for existing tables and columns before making changes.

10.4 Configuration Files

server\.envAll secrets and environment variables — never share or commit this file
cloudflared\config.ymlCloudflare Tunnel routing configuration
public\book.htmlContains SQUARE_APP_ID and SQUARE_LOCATION_ID constants that must be updated for production