NF3L Software & Games
Mission Control

Operations Console

CHECKING SYSTEMS… next check --s Dashboard ... Jim Chookagian
Projects4live
Source of truthGitHub
Clock · UTC-
Clock · Local-

Deploy Drift

live version vs. current master

Reads each live site and compares its version to the master list. Sites that do not allow cross-origin reads show "check n/a".

Uptime History

from this browser's checks · newest right

Service Status

checking…
nf3l.compublic site & gameschecking…site
cfcsq.nf3l.commembership app · gatedchecking…site
wa.nf3l.commulti-school field-hockey plannerchecking…site
ops.nf3l.comthis dashboardchecking…site
CFCSQ databaseSupabase · unykweb…checking…supabase

Keep-alive · Pause Guard

checking…
CFCSQ · Productionlast database heartbeatchecking…7-day
wa-nf3llast database heartbeatchecking…7-day
Demo Membershiplast database heartbeatchecking…7-day

Green under 4 days · amber 4-6 · red at 6+ (free tier pauses after 7 days idle). Each project self-pings daily at 03:17 UTC.

CFCSQ Backups

connecting…
🗄️ Cloud (Supabase)
-
📦 Dropbox
-
💻 Local Download
-
Newest backup
-
Next auto-backup
-
Auto schedule
02:00 UTC daily

Members by Status · CFCSQ

Loading…

Recent Backups

Projects

version stamp shows on each live site - compare to your zip
CFCSQ
Membership DB · Coopersburg Fire Co. Social Quarters - ~1,500 members
reading...
Repocfcsq-membership
Supabaseunykwebzlmvadvnutgvi
AuthAccess gate · 3 emailsRLS · 24 policiesRecovery kit
NF3L
nf3l.com - Public site & web games
reading...
Livenf3l.com + www
Reponf3l-site
Supabasewspnyfiljtdckmarzbsl · demo
GamesAuthBackendGate
WA
Field Hockey Sub Planner - multi-school (wa-nf3l)
reading...
Livewa.nf3l.com
Repowa-nf3l
Supabasejwrsghrqcfrglpwwkrvo
Backup fndaily-backup (edge) - Dropbox /wa-nf3l
SchoolsPennridge · Pine-Richland · State College · Oley Valley
AuthCloud syncDropbox backupKeep-aliveRestoreRLS
PFH
Pennridge Field Hockey - Sub Planner · standby, retiring when wa is complete
not monitoredstandby
Livepfh.nf3l.com
Repopfh-sub-planner
Supabasecucdovxsnhhjisdbcasm
AuthCloud syncBackupsKeep-aliveRLS

Consoles

jump to the tools

Games · nf3l.com

opens in a new tab

Field Hockey Sub Planner

backup health for every school · sign in required

Loading the board...

Cloudflare Access controls who reaches this page. The sign-in above is separate: it proves to the database who you are, and the database decides which schools you can see. The same board runs at wa.nf3l.com/admin.html.

nf3l.com Traffic

last 30 days · loading…
Page views
-
Visits
-
Busiest day
-
Daily average
-

Daily Trend

page views per day

Top Pages

by views

Top Countries

by views

Data comes from Cloudflare Web Analytics through a private worker; the API token is never exposed on this page. Cloudflare rounds these figures, so treat them as trend indicators rather than exact counts. Open Cloudflare analytics

Incident Notes

saved in this browser

Recovery & Versioning

CFCSQ Recovery Kit

Three layers - files alone won't rebuild it. All captured.

App files · repo cfcsq-membership
Access gate · access app + policy JSON
Supabase RLS · cfcsq-rls-2026-06-27.sql
Index · CFCSQ-RECOVERY-KIT.md

Versioning Rule

Bump on every change. Name it PROJECT_vX.Y.Z_YYYY-MM-DD

PATCHv1.0.1 - a small fix or copy tweak (last digit +1).
MINORv1.1.0 - a new feature added (middle digit +1).
MAJORv2.0.0 - a big overhaul (first digit +1).

Current Masters

deployed versions read live from each site · games and demos still manual
ops.nf3l.comthis dashboard
Deployedreading...
nf3l.compublic site & games · one version covers the bundle
Deployedreading...
cfcsq.nf3l.commembership app
Deployedreading...
wa.nf3l.commulti-school planner
Deployedreading...
Backup fndaily-backup edge fn · 2026-08-15

Quick Reference

the things you re-ask

Supabase Projects

CFCSQunykwebzlmvadvnutgvi
PFHcucdovxsnhhjisdbcasm
NF3L demowspnyfiljtdckmarzbsl

Deploy Method

ops.nf3l.comGitHub → Pages
nf3l.comDirect Upload
cfcsq.nf3l.comDirect Upload

Not Monitored

Reachable, but deliberately left out of the checks above: neither is a live production program, so a warning from either would be noise.

pfh.nf3l.comstandby fallback · retiring
pitchmanager.nf3l.comcolor experiment · moves into wa later

Changelog

newest first · lives in the deployed file
2026-08-29ops v3.8.0 - Edit Values removed entirely, along with its note and the edit-mode wiring: versions are read from each site and the changelog now lives in the deployed file, so nothing here should be typed over by hand. Values already saved in a browser still load, so no previous edit is lost. Golden Rules card removed from the Playbook tab. All headings put into Title Case, and spelling corrected to American English.
2026-08-29ops v3.7.0 - Development tab: open items, to do and wish list, ordered by criticality. Changelog moved out of browser storage and into the deployed file, so it is the same on every device and travels with the release; entries added for everything since 2026-08-27. Project card versions now read live like the masters, and edit mode can no longer alter a version by hand.
2026-08-29ops v3.6.0 - cfcsq version now read from Supabase. Cloudflare Access intercepts a cross-origin fetch of its version.json and answers with the login page, even with a Bypass policy scoped to that path and the application's own CORS settings configured; a navigation succeeds, a background fetch does not. The cfcsq app writes the version it read from version.json into a public app_version table and ops reads that row, showing when the app last reported. cfcsq v1.1.2 - publishes its version on load.
2026-08-29ops v3.5.0 - pfh and pitchmanager removed from monitoring: neither is a live production program, so warnings from them were noise. pfh lost its site, database and keepalive checks, its masters group and its deploy-method line; both remain reachable under Quick links. The seven game entries (Blackstone, Inversion, Weave, Cascade, Solstice, Leap, Membership Demo) removed from the nf3l.com masters - they ship with the site bundle, so one version covers them, and they return when each has its own repo. nf3l.com starts at v1.0.0.
2026-08-29wa v1.4.0 - undo rebuilt. It had kept ONE snapshot, taken only by Generate Rotation and the two quarter-copy buttons, so every hand edit recorded nothing and pressing Undo discarded all manual work since the last generation. Now every change records a step, capped at 25, with a Redo button beside it. Load plan added to the sub sheet. Varsity games can create the matching JV fixture in one action.
2026-08-28ops v3.4.0 / v3.3.0 - deployed versions read live from each site instead of hardcoded values held in one browser's localStorage, which went stale the moment anything shipped (wa read v1.0.8 while live was v1.3.1). A site that will not report shows amber and counts toward the status at the top. The dashboard version reduced from four displayed places to one.
2026-08-28cfcsq v1.1.1 - fixes a failed v1.1.0 deploy. An await was placed inside a function that was not async, which is a syntax error, so main.js failed to parse and the app did not load at all. The pre-deploy check used a parser that does not enforce that rule and reported the file clean; it now parses each file as a real ES module. The version fetch is no longer awaited, so it can never delay startup.
2026-08-28cfcsq v1.1.0 - Member Modification Request Form added (four requests per printed page, tick-box issues, details line). The Membership Application was made reachable: it had been built and registered with the router, but had no feature flag, no nav-section entry and no button anywhere, so it could not be opened. Both forms now appear in the topbar, the sidebar under Reports, and as cards inside the Reports panel.
2026-08-27ops v3.2.0 - Field Hockey tab: the wa backup board, showing every school's backup health, destinations, schedule and history. Logic shared with wa.nf3l.com/admin.html from one file so a fix is never made twice.
2026-08-27wa v1.3.1 - a saved rotation now loads when its game is selected. Saving said "Rotation saved to game" and the sheet then came back blank, which was indistinguishable from losing the work; the rotation was always safe, it simply was not being loaded. v1.3.0 - quarter-independent editing (editing one quarter had been changing the others), half-minute snapping, quarter copy tools.
2026-08-26wa-nf3l backup hardening after the Pine-Richland data loss. The nightly backup had not run since 2026-08-15: the cron called a display name rather than the function slug, and email secrets were missing. Now three destinations per run, twice daily, read-back verification, tiered retention, size-drop and identity checks, and a dead-man's switch so silence raises an alarm.
2026-08-15ops v2.4.1 - dashboard version made non-editable (always reflects the deployed file); wa ordered ahead of pfh throughout.
2026-08-15wa-nf3l: daily Dropbox backup and keepalive live (10pm ET cron); operator-only restore with passphrase, preview and pre-restore copy verified.
2026-08-15wa-nf3l: three school coaches added (Pine-Richland, State College, Oley Valley) alongside Chris's logins; per-school isolation via RLS. Pennridge cutover done, pfh kept as fallback.

Open Items

most critical first
CRITICALCFCSQ: no email if the nightly backup dies at the Dropbox step. getDropboxAccessToken() runs before the try block, so an expired or revoked refresh token throws before any report is sent. No backup, no alert, complete silence. The most likely real failure of that system, and currently invisible.
CRITICALCFCSQ: nothing watches for silence. The only signal that the nightly backup ran is an email, from a sender that has landed in spam once. There is no dead-man's switch as there is on wa.
HIGHCFCSQ: protect the January renewal batch. Unpaid members are archived across several sessions in January, so a mistake in an early session may not surface for days, and Supabase Storage keeps only 30 days. Needs a named snapshot before each session and a count-drop alarm, so a large fall in active members is announced rather than reported as a success.
HIGHCFCSQ: verification is circular. The backup checks the file against the same array it just fetched, not against the database. A short fetch would produce a short file that still passes and still emails a green tick.
MEDIUMCFCSQ: unordered pagination. fetchAll() pages with .range() and no .order(), so rows can be duplicated or skipped between pages. Low risk in practice - 1,498 members over two pages, one writer, run at night - but it is one line to fix.
MEDIUMCFCSQ: Dropbox is never verified or pruned. The email's Backup Verification line covers the Supabase copy only. Dropbox is uploaded and never read back, and grows without limit, which also makes it the only copy older than 30 days.
MEDIUMwa: drag and drop in the sub sheet. Requested by Chris and deliberately deferred: a drag gesture competes with scrolling on a tablet, so it needs its own release and a scrimmage before a match.
LOWwa: the full-platform rebuild runbook is out of date. It predates the shared board, the preview logging and the version work.

To Do

planned, not started
HIGHPractice the rollback. When cfcsq went down, neither the Cloudflare deployment rollback nor the GitHub revert could be found under pressure. Fifteen minutes locating both on a calm day is worth ten bad minutes later.
MEDIUMWhen Cloudflare Access is enabled on wa.nf3l.com, bypass TWO paths: /version.json, or ops cannot read the version, and /board.js, or the Field Hockey tab here stops loading. Expect the same interception cfcsq hit, so wa will likely need the Supabase route as well.
MEDIUMRetire pfh deliberately. Export its data, then close its Cloudflare Pages project, its Access application and its Supabase project, rather than simply ceasing to mention it.
LOWMove the remaining programs to their own Git repos. Several are done. The ones still deployed by direct upload have no history and no rollback.
LOWGive each game its own repo - Blackstone, Inversion, Weave, Cascade, Solstice, Leap, Membership Demo. They then report their own versions and return to the masters section.

Wish List

wanted, no date
LOWBranded About box, consistent across every program, reading its version from version.json rather than holding a copy.
LOWMove the Pitch Manager color scheme into wa, once the season is over and the app has settled.
Copied