๐Ÿ›ก๏ธ Platform Health Console โ€” V12.17 (14-Layer Anti-Pause + Fleet + Doctor)

One page to confirm school portal is alive, backed up, within free-tier limits and secure. Owner/admin only. Enhanced from DramaConnect v14.2 โ€” monitors every layer against Supabase pausing.

โ† Dashboard
๐Ÿซ€ Keep-alive 14 Layers๐Ÿฉบ Schema Doctor๐Ÿ’พ Spaceโ˜๏ธ Backup & Archives๐Ÿ”‘ Licence๐Ÿ›ก๏ธ Security๐Ÿ›ฐ๏ธ Fleet Console๐Ÿ•ต๏ธ Login Audit๐Ÿงช CBT Advanced๐Ÿ“š Tutoring Features

Database

Checkingโ€ฆ

Schema โ€”

Heartbeat

Checkingโ€ฆ

โ€”

Schema packs

Checkingโ€ฆ

โ€”

Schema Doctor โ†’

Database space

Checkingโ€ฆ

โ€”

Verified backup

Checkingโ€ฆ

โ€”

Archives & Drive โ†’

License

Checkingโ€ฆ

โ€”

Licence detail โ†’

๐Ÿซ€ Keep-Alive (Anti-Pause) โ€” 14 Layers Monitoring (from DramaConnect) โ€” Where did last ping come from?

Supabase pauses free project after 7 days without database activity. Every layer below writes heartbeat via sc_keep_alive(src); this panel shows most recent one, who sent it, total pings, pause countdown, quorum, and all 14 layers including never-run โ€” each with specific fix. Reporting shows when these layers carry out their functions.

Last ping age
โ€”
โ€”
Came from (last source)
โ€”
โ€”
Total pings recorded
โ€”
across every layer
Pause countdown (168h window)
โ€”
of 7-day window
Fleet heartbeat (sc_keepalive)
โ€”
what HMG Fleet Console reads
Quorum
โ€”
โ‰ฅ2 fresh layers = safe

A layer is evidence of recent activity โ€” not guarantee against provider pause. External layers can reach sleeping service; internal pg_cron cannot wake paused DB. Automated layers protect idle project; human layers stop during holidays.

LayerKindStateLast pingAgeCountFix if never
Loading 14 layersโ€ฆ

๐Ÿฉบ Schema Doctor โ€” is every SQL pack installed?

Probing packsโ€ฆ

Checks every table, function, view and storage bucket each SQL pack creates. Missing object means pack not run (or older copy). Fix: run database/complete-schema.sql once in Supabase SQL Editor โ€” safe to re-run. Enhanced from DramaConnect โ€” probes every object.

PackFileStatusObjectsMissing
Checkingโ€ฆ

๐Ÿ’พ Database & File Space โ€” 500 MB DB + 1 GB Storage (Free Tier)

Supabase goes read-only when database full. Largest tables listed so you know what to archive first โ€” Storage Manager does archiving with Archive Vault (export โ†’ upload to private bucket โ†’ verify row count and SHA-256 โ†’ delete โ†’ restorable).

Database

File storage

Largest tables

Loadingโ€ฆ
Open Storage Manager โ†’

โ˜๏ธ Backup, Google Drive & Archive Health (V12.7 + V12.17)

Keeping project awake does not protect data. Verified independent backup does. Summarises last runs, Drive schedule, Archive Vault, with SHA-256 verification.

Last successful backup
โ€”
โ€”
Drive schedule
โ€”
โ€”
Failures (last 20)
โ€”
โ€”
Archive Vault
โ€”
archived batches
StartedDestinationTriggerStatusRowsSHA-256
Loadingโ€ฆ

๐Ÿ”‘ Licence โ€” What Members and Fleet Console See

Site licence stored in DB, and public sc_license_status answer that HMG Fleet Console reads with only anon key.

Model
โ€”
Status
โ€”
Expires
โ€”
Fleet probe says
โ€”
POST /rest/v1/rpc/sc_license_status

๐Ÿ›ก๏ธ Security State โ€” Lockdown + Idle + 2FA + Geofence (from Tutoring + DramaConnect)

Database-enforced lockdown plus browser idle sign-out. Admins bypass lockdown and licence denial so recovery controls remain reachable. 2FA email OTP, geofence for self check-in, accessibility controls managed in Settings.

๐Ÿ›ฐ๏ธ HMG Fleet Console โ€” One-Click Monitoring & Wake-up

Fleet Console watches every client project with only anon key: pings sc_keep_alive, reads sc_heartbeat + sc_keepalive_sources + sc_license_status and detects deploys from sw.js. This site speaks that contract; checks below prove it.

Contract checkResultDetail
Checkingโ€ฆ

Register this project in console

  1. Open HMG Fleet Console and sign in.
  2. Projects โ†’ Add project. Type: School Connect.
  3. Supabase URL: โ€”
  4. Anon key: use Copy project details. Never service_role โ€” console rejects it.
  5. Site URL: โ€” (enables deploy detection).
  6. Save, then Ping. Source above changes to HMG Fleet Console within seconds.
  7. Optional: add to FLEET_TARGETS secret so workflow pings every 2 days; appears as Fleet GitHub workflow.

cron-job.org / any scheduler (POST, not GET)

โ€”

PostgREST refuses GET on function that writes, so scheduler must POST. Body {"src":"cron-job-org"} labels ping.

๐Ÿ•ต๏ธ Recent Sign-in Activity (Login Audit) โ€” KPIs + Filtering + CSV (from DramaConnect)

Who signed in, when, device โ€” plus sign-outs, idle time-outs, denied access. Security trail; for operational trail open Activity Log.




WhenWhoEventDevice
Loadingโ€ฆ

๐Ÿงช CBT Advanced Features โ€” From hmgacademycbtsystem & cbtgen (V12.17)

Advanced, sophisticated features from HMG Academy CBT Pro & CBT Generator implemented robustly in School Connect.

โŒจ๏ธ Keyboard Shortcuts (JAMB-style)

A-D answer, N/โ†’ next, P/โ† prev, R flag, S submit. Speed practice for UTME. Implemented in cbt-exam.html + cbt-practice.js

โœ“ Implemented

๐Ÿšฉ Question Flagging

Flag uncertain, jump back before submit. Reduces careless mistakes. In cbt-exam + practice mode.

โœ“ Implemented

๐Ÿ’พ Auto-save + Emergency Backup

Draft auto-save in localStorage per exam code, offline queue, emergency result backup JSON, jittered retries, exponential backoff. 1000-student ready.

โœ“ Implemented

๐ŸŽ“ Certificates + Verification

Verifiable certificate codes per result, printable certificate, verify-certificate.html. Teacher can hold/release results.

โœ“ Implemented

๐Ÿ“Š Psychometric (KR-20, Discrimination)

ExamSoft-style report: KR-20 reliability, item difficulty, discrimination, distractor analysis. Rule-based, no AI API. In cbt-practice.js psychometricReport()

โœ“ Implemented

โฑ Extra-Time Accommodations

Per-candidate extra minutes (0-180) for SEN. Stored in cbt_accommodations, applied to deadline. In cbt-practice.js + cbt-exam.

โœ“ Implemented

๐Ÿ“จ Result Appeals

Students request script review, teacher approves/rejects with note. Table cbt_appeals. In cbt-practice.js fileAppeal()

โœ“ Implemented

๐Ÿ† Leaderboard + Practice Points & Streaks

Practice mode points + streak bonus, longest streak, leaderboard hideable. Table cbt_practice_streaks. In cbt-practice.js

โœ“ Implemented

๐Ÿ“ฆ Package Export/Import

Export entire exams as JSON packages for backup/sharing/re-use. Import emergency result backup JSON. In cbt.html exportPackage/importBackup.

โœ“ Implemented

๐Ÿงฎ STEM Keyboard + Calculator

Math & Science symbols 388 symbols searchable, scientific calculator with DEG/RAD, history. In cbt-exam + cbt-richtext + cbt-speech (21 languages).

โœ“ Implemented

๐Ÿ”— Combine Pre-existing CBTs One-Click

Select multiple existing CBTs โ†’ create multi-subject in one click. Handles single+multi, duplicate subject merge, breakdown. In cbt-multi.html V12.16.

โœ“ Implemented V12.16

๐Ÿ›ก๏ธ Anti-cheat & Proctoring

Face gate, audio monitor, tab-switch, dev-tools traps, violation overlays, camera snapshots, audio loudness. In proctor.js + cbt-engine startAntiCheat.

โœ“ Implemented

๐Ÿ“š Tutoring Connect & Adewale Classroom Features โ€” Implemented in School Connect (V12.17)

Advanced features from tutoring platforms implemented robustly for school portal.

โฑ Study Log / Timer

Start/stop timer per subject, log duration, total per subject, .ics export. Table study_logs. In study-log.js

โœ“ Implemented

๐Ÿ“… ICS Calendar Export

Export timetable, assignments, CBT exams as .ics for Google Calendar/Outlook/Apple โ€” TutorBird-style. In ics-export.js

โœ“ Implemented

๐Ÿ” Spaced Practice SM-2

SM-2 algorithm for weak questions: ease_factor, interval, repetitions, due_at. Table cbt_spaced_practice. In cbt-practice.js scheduleSpaced()

โœ“ Implemented

๐Ÿ… Streaks & Badges + Leaderboard

Practice streaks, longest, points, leaderboard hideable. From Adewale Classroom. In cbt-practice.js

โœ“ Implemented

๐Ÿ“ Learner Portfolio

Portfolio of certificates, projects, assignments, CBT results, other artifacts. Table learner_portfolios. Value-added, OLS prediction, at-risk board. In learner-portfolio.js

โœ“ Implemented

๐Ÿ“ˆ Value-Added & At-Risk Analytics

Value-added (first vs last term), OLS prediction, six at-risk rules (low avg, low attendance, few scores). From tutoring insights. In learner-portfolio.js valueAddedReport() + atRiskBoard()

โœ“ Implemented

๐Ÿ”— Links Not Uploads + Drive Previews

Media as Drive/YouTube/https links, not bytes in Postgres โ€” protects 500 MB free tier. Already in digital_library, assignments drive_link, etc.

โœ“ Implemented

๐Ÿ“‹ How Layers Protect Against Pausing (from DramaConnect)

Supabase free tier pauses after 7 days without DB activity. Configure 2-3 external automated layers, not every layer. Site visits stop during holidays, so automated layers (GitHub Actions, Vercel Cron, cron-job.org, Edge + UptimeRobot, Fleet Console workflow) keep project alive unattended. Manual button is for holidays. Auto-restore watchdog can un-pause via Management API if SUPABASE_ACCESS_TOKEN set. This page shows when each layer last carried out its function and its fix if never.