Files
CydandClaude Opus 4.8 f9f1dd2d13 Document verified XAMPP Lite 8.5 deployment + add launcher
- install/DEPLOYMENT-WALKTHROUGH.md: full verified runbook (operator + headless
  methods) from an actual deploy — PHP 8.5.5 + MariaDB 11.4.10 + Apache,
  app at www/pqs, DB provisioned via installer, registration/commit verified,
  zero PHP 8.5 warnings from app code.
- install/start-pqs.bat: one-command launcher (starts MariaDB + Apache, sets the
  XAMPP_LITE_ROOT/SRVROOT placeholders, provisions the DB on first run).
- install/README.md: aligned to this stack's layout (apps/, www/, control panel);
  corrected the installer 'safe to re-run' note (seed inserts are not idempotent).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 15:34:09 -05:00
..

Deploying PQS on XAMPP Lite 8.5 (on-demand)

PQS runs from a portable XAMPP Lite 8.5 stack (PHP 8.5 + MariaDB 11.4 + Apache) so the whole system can be stood up on demand at a venue with no internet. This folder holds the one-shot database installer.

For the full, verified step-by-step (including the headless/scripted method and validation results), see DEPLOYMENT-WALKTHROUGH.md. This page is the short version.

Stack layout (this XAMPP Lite build)

xampp_lite_8_5\
  XL-Control-Panel.x64.exe   <- start/stop Apache + MySQL here
  apps\apache\               <- Apache (serves PHP 8.5 as a module)
  apps\mysql\                <- MariaDB 11.4 (root, no password)
  apps\php\                  <- PHP 8.5
  www\                       <- document root  (http://localhost/ -> www\)

Quick start

  1. Drop the app into the web root, named pqs:

    xampp_lite_8_5\www\pqs\
    

    (The app uses /pqs/... URLs, so the folder must be pqs.)

  2. Start Apache + MySQL from XL-Control-Panel.x64.exe.

  3. Create the database (one time). From apps\mysql\bin:

    mysql.exe -u root < ..\..\..\www\pqs\install\pqs_install.sql
    

    Or import install\pqs_install.sql via phpMyAdmin (http://localhost/phpmyadmin). This creates the pqs database, the pqs/pqs user, every table (all InnoDB) and the static seed (mechs, maps, game types, default config, pods).

  4. Open the app:

    Screen URL
    Registration kiosk http://localhost/pqs/callsign.php
    Registration console http://localhost/pqs/registration.php
    Game/ops console http://localhost/pqs/console.php
    Queue wall http://localhost/pqs/combinedqueue.php

No build step, no internet.

Notes

  • Credentials. The app connects as pqs/pqs on localhost (see includes/db.php) — a formality on an air-gapped LAN.
  • Timezone. Set once in includes/db.php (PQS_TIMEZONE, default America/Chicago).
  • PHP target. Code targets PHP 7.4+; verified on XAMPP Lite's PHP 8.5.5 with zero warnings/deprecations from app code.
  • time.php (optional clock sync). Uses PowerShell Set-Date on Windows, which only works if Apache runs as administrator. Skip it if the host clock is already correct.

Re-running / resetting

The installer is not idempotent for the seed data — re-running it duplicates rows and fails on the gameconfig unique key. To reset to a clean database:

DROP DATABASE pqs;

then load pqs_install.sql again. (The CREATE DATABASE/USER ... IF NOT EXISTS lines are harmless on their own; it's the seed INSERTs that must not run twice.)

Fresh install vs. upgrading an existing DB

  • Fresh XAMPP deploy → use install/pqs_install.sql (this folder). Every table is created as InnoDB, so no migrations are needed.
  • Upgrading a pre-existing (older MyISAM) database → run the incremental dev/migrations/001-*.sql and 002-*.sql instead, which convert the affected tables to InnoDB in place.