Deployment check
Eggbox Investor Showcase · stub app · 7 Oct 2026
If this page has styling and colour, static files are serving correctly
(Problem 3 solved). An unstyled wall of black text means the symlink is missing.
The four known failure modes
PASS
1 · Passenger is running the right Python
Running
3.12.2 from /usr/bin/python3.12.
Flask 3.1.2. If this page rendered at all, the interpreter is correct.
PASS
2 · Logs are being written
This request was logged to
logs/app.log. Startup goes to
logs/passenger_stderr.log. Duplicate-handler guard is in place,
so Passenger reloads won't multiply log lines.
PASS
3 · Static files resolve
Serving from
/home/broody/qr_app/static — an absolute path pinned to
app.py, not the working directory.
TESTING
4 · Nested routes reach Flask
Checking
/check/routing/deep. In the program manager, Apache passed
/ through untouched but mangled every path with segments, so every
page except the dashboard returned 500. This is the probe for that.
Can this app store data?
PASS
Disk writes to
data/
Appended a line to a
.jsonl file, read it back and verified it parsed —
the exact pattern responses.jsonl will use.
Path: /home/broody/qr_app/data
Environment
Public host
www.event.broodylondon.comScheme
https
Server
Apache/2.4.68 (cPanel) OpenSSL/3.5.5 mod_bwlimited/1.4 Phusion_Passenger/6.1.8Under Passenger
yes
App directory
/home/broody/qr_appWorking directory
/home/broody/qr_appServer time (UTC)
2026-09-22T13:05:04+00:00
Server time (local)
2026-09-22T14:05:04 BST
Uptime
2282s since last restart
Server clock matters more than it looks. Responses are timestamped, and the
two-step form relies on ordering events correctly across the break. If local time above is
wrong, timestamps go in
UTC only.
Live probes
TESTING
POST round-trip
Submitting to
/api/echo — the interest form is a POST.
TESTING
Write via POST
Calling
/api/write-test the way a real submission would.
Once every check above passes, this URL is locked — every QR code
printed on a badge points here permanently. Confirm the subdomain is the one we want
before the first badge is printed.