STLW Website - Admin Manual

Quick Reference Guide

1. AGE GATE (index.html)

Location: Root page - visitors enter here


2. INTRO VIDEO

Location: Plays automatically after age gate passes


3. COURTYARD (courtyarddoors.html)

Location: /Courtyard/courtyarddoors.html

Admin Features:

Door Setup:


4. DUNGEONS (dungeon001-056)

Location: /Dungeons/dungeon###/

Configuration (products-clean.json):

{
    "id": "product-handle-1",
    "title": "Product Title",
    "price": "49.99",
    "imageUrl": "https://...",
    "door_id": "door005"
}

Visual Elements:


PRODUCT PRICE COMPARISON FEATURE

Overview

Optional competitive pricing display on product pages. Only appears when price comparison data is added to a product.

How It Works

When viewing a product page, if price comparison data exists, a "📊 Price Comparison" section appears below the product description showing:

Adding Price Comparison Data

In products-clean.json, add this field to any product:

{
  "id": "leather-harness",
  "title": "Master Harness",
  "price": "49.99",
  "priceComparison": {
    "competitors": [
      {
        "name": "Mr. S Leather",
        "price": "69.99",
        "currency": "USD",
        "url": "https://www.mr-s-leather.com/product-page",
        "notes": "Standard sizes only",
        "verified": "2026-01"
      },
      {
        "name": "Northbound Leather",
        "price": "64.95",
        "currency": "CAD",
        "url": "https://www.northbound.ca/product",
        "notes": "Standard sizes, machine-stitched",
        "verified": "2026-01"
      }
    ],
    "advantages": [
      "Custom-sized to your measurements",
      "Hand-stitched with bonded nylon thread",
      "Made in Canada with top-grain leather"
    ]
  }
}

Field Definitions

priceComparison (object, optional)

competitors (array, required if priceComparison exists)

Each competitor object:

advantages (array, optional)

Best Practices

DO:

DON'T:

Example: When to Use

✓ Good candidates:

✗ Skip comparison for:

Maintenance Schedule


KEYBOARD SHORTCUTS

Action Keys Where
Submit age Enter Age gate
Reveal admin controls Ctrl+Shift+D Courtyard
High Contrast Doors Click button (after Ctrl+Shift+D) Courtyard (admin only)

FILES REFERENCE

Root Pages:

Courtyard:

Dungeons:

Products:

Assets:

Stripe Server:


CSV CATEGORY UPLOAD

  1. Open Completed Pages/admin-editor.html
  2. Upload CSV with headers: id,categories
  3. Click Preview CSV then Apply Categories
  4. Click Save to File (or enable Auto-save)

CUSTOMER DISCOUNTS

  1. Open Completed Pages/customers-admin.html
  2. Enter your ADMIN_TOKEN
  3. Set Wholesale or Discount %
  4. Click Save Updates

CHECKOUT SETUP (STRIPE)

  1. Copy squareup-server/.env.example to .env
  2. Fill SQUARE_ACCESS_TOKEN, SQUARE_LOCATION_ID, optional SQUARE_ENVIRONMENT, ADMIN_TOKEN, PORT (4242)
  3. First time only: from squareup-server run npm install
  4. Start server: from squareup-server run npm start (or node server.js)
  5. Restart server any time you change .env
  6. Checkout page lives at Completed Pages/checkout.html

WEBHOOK LISTEN (STRIPE CLI)

  1. In squareup-server, run stripe login (one-time)
  2. Configure your Square webhook endpoint to post to http://localhost:4242/webhook during local testing
  3. Use your Square Developer Dashboard webhook settings for event subscriptions and verification details
  4. Restart the server after updating the secret
  5. Use the same listen command whenever you restart your machine

ORDERS ADMIN + LOGS

  1. Open Completed Pages/orders-admin.html
  2. Set API base to http://localhost:4242 and enter ADMIN_TOKEN
  3. Click Load orders to view payments, refunds, disputes
  4. Use search/type/date filters, then Export table CSV for bookkeeping
  5. Daily CSV button pulls squareup-server/exports/daily-YYYY-MM-DD.csv; raw log is squareup-server/data/orders.json

WHOLESALE DISCOUNT (30%)

  1. Open Completed Pages/wholesale-admin.html
  2. Enter your ADMIN_TOKEN
  3. Add customer email and set wholesale to true

TROUBLESHOOTING

Video not playing?

Shields not showing?

Door links not working?

Admin toggle not appearing?

Price comparison not showing?


Last Updated: March 09, 2026