๐ก๏ธ 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.
Database
Checkingโฆ
Schema โ
Heartbeat
Checkingโฆ
โ
Database space
Checkingโฆ
โ
๐ซ 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.
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.
| Layer | Kind | State | Last ping | Age | Count | Fix if never |
|---|---|---|---|---|---|---|
| Loading 14 layersโฆ | ||||||
๐ฉบ Schema Doctor โ is every SQL pack installed?
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.
| Pack | File | Status | Objects | Missing |
|---|---|---|---|---|
| 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
โ๏ธ 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.
| Started | Destination | Trigger | Status | Rows | SHA-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.
๐ก๏ธ 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 check | Result | Detail |
|---|---|---|
| Checkingโฆ | ||
Register this project in console
- Open HMG Fleet Console and sign in.
- Projects โ Add project. Type: School Connect.
- Supabase URL: โ
- Anon key: use Copy project details. Never service_role โ console rejects it.
- Site URL: โ (enables deploy detection).
- Save, then Ping. Source above changes to HMG Fleet Console within seconds.
- 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.
| When | Who | Event | Device |
|---|---|---|---|
| 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.