ROADMAP β€” FLA Event & Awards Platform

Living plan. Status: βœ… done Β· 🚧 in progress Β· βœ… planned.
Browse in-app at /docs/roadmap. Spec: docs/SRS.md. Handoff: TODO.md.

Vision

A modular, plain-PHP platform at https://event.production1.jugaar.ai for running events whose centerpiece is public-voted, AI-assessed awards β€” branded entirely from an admin control panel, auditable end-to-end, and shareable by design (everyone gets cards + links worth posting).

Milestones

Status 2026-09-07: v4.2.0 live β€” all gap-closure + visual-audit rounds done
(v0.1.0 β†’ v4.2.0); verified by bin/qa.sh (37 checks) + bin/qa-e2e.sh (266 checks) β€” both green (first perfect run).

v4.2.0 β€” Completion round βœ… (delivered 2026-09-07)

  • Recurring events (weekly/monthly, repeat-until, auto-drafted next occurrence via queue cron).
  • Guided tour (4-step spotlight on admin overview, per-user, dismissible).
  • Judges transparency panel on public results (post-lock).
  • Fixed: vote-change reason silently dropped (rechain() bug β€” the "flaky" E2E test);

event-create INSERT regression. E2E 266/266.

  • Opt-in persistent PDO pooling; full a11y sweep (alt text everywhere, focusable mains).

v4.1.0 β€” Visual/UX audit round βœ… (delivered 2026-09-06)

  • Root cause: every /media/ image 404 β€” nginx static-cache intercepted before PHP; bypass added.
  • Missing uploads serve graceful placeholders (no broken-image icons ever).
  • Admin shell was JS-less: app.js (toasts/theme), burger drawer on mobile.
  • Hall of fame paginated (mobile page 36,526px β†’ 8,157px); touch-target + contrast fixes;

WebP backgrounds (78–96% smaller); HTTP/2.

v4.0.0 β€” Gap-closure βœ… (delivered 2026-09-06)

  • Vote management (soft-delete + /admin/votes, audited, reversible) Β· event templates Β·

admin onboarding checklist Β· public /speakers GoH directory Β· candidate compare Β· event package JSON export Β· hall-of-fame search Β· .ics calendar export Β· Telegram ops alerts Β· async job queue (bin/queue.php, cron) Β· structured login_attempts.

v3.5.0 – v3.9.0 β€” UX, trust & imagery βœ… (delivered 2026-09-03 β†’ 2026-09-05)

  • Dark mode, toasts, notification badges, mobile tabs, skeletons, breadcrumbs, countdown.
  • Vote-abuse intervention (auto-hold bursts), sponsor ROI dashboard, alumni network, email digest.
  • MiniMax M3 live (interviews, assistant, briefs, insights); AI-generated hero/category art

(WebP), share cards (GD + Brainiall driver ready, quota resets monthly).

v3.4.0 β€” Event-day readiness & trust βœ… (delivered 2026-09-02)

  • Ceremony media upload UI on /admin/ceremony/setup (anthem video, fanfare audio, custom slides).
  • One-click backup button on /admin/system.
  • Printable name badges (/badges) with check-in QR; run-sheet already present.
  • Post-event feedback survey (/survey) β†’ engagement score.
  • Public /about-scoring transparency hub (weights, rubric, hash-chain verify, lock metadata).
  • Data-retention jobs (/admin/retention): page_views rollup, audit_log archive, mail-log hygiene.
  • CSP hardening: removed 'unsafe-inline' from script-src, nonce-based inline scripts.
  • E2E extended to 266 checks (all green); surface QA 37 checks (all green).

v0.1.0 β€” Docs & Scaffold βœ…

  • Plain-PHP modular scaffold (Core + 14 Modules), views, config, composer (autoload only).
  • Living docs: SRS, 7 workflows, TODO, ROADMAP, CHANGELOG, WORKFLOW, HELP, AGENTS.
  • Docs viewer: every .md rendered as organized webpages at /docs.
  • Core services: AI gateway (MiniMax m3 driver + mock), LinkedIn (+mock), WhatsApp (null), GD cards.
  • DB migrations 001–009 + seed (settings, toggles).
  • Git baseline + tag.

v0.2.0 β€” Admin Core & Branding βœ… (delivered in v1.0.0 drop)

  • Admin auth + first admin (seeded, forced password change).
  • Branding control panel (name, logo upload, colors, tagline, campaign texts).
  • Feature toggles UI; audit writer wired in.
  • Admin home starter: KPI cards + first chart (registrations over time) using Chart.js.

v0.3.0 β€” Events & Categories βœ…

  • Event CRUD + status lifecycle; category CRUD, show/hide, ordering.
  • Public event pages (details, categories list).

v0.4.0 β€” Registration βœ…

  • Visitor, Award, Guest-of-Honor flows (LinkedIn OAuth + basic + WhatsApp).
  • Photo upload; staff manual entry; BR-001/002/007 enforced.
  • "I am visiting / I have applied" cards wired to success pages.

v0.5.0 β€” AI Interview βœ…

  • Admin question bank per category; randomized session; progressing UI.
  • MiniMax m3 marking (score + feedback); session stats; fallback to mock.

v0.6.0 β€” Public Voting & Cards βœ…

  • Share links, candidate pages (OG tags), LinkedIn voter auth, restriction modes,

optional voter reason, 70/30 engine, veto UI.

  • Public cards polished (better templates/fonts); AI card driver pluggable.

v0.7.0 β€” Judges Panel βœ…

  • Judge accounts + assignments; review board; decisions + notes; admin report.

v0.8.0 β€” Dashboards, Tickets, Comms βœ…

  • Admin dashboard full: graphs (votes-over-time, funnel, per-category shares, top candidates, AI score distribution), KPI cards with 7d/30d trends, audit-log tab with filters, drill-down lists.
  • AI insights (FR-0407): weekly event summary, judge-ready applicant briefs, vote-anomaly flags β€” mock-compatible until MiniMax key.
  • Applicant (own votes chart/voters/AI stats/tickets/cards), staff queue.
  • Ticketing system; mass comms (email + WhatsApp simulatedβ†’live); notifications + reminders.

v0.9.0 β€” Winners & Audit βœ…

  • Finalize (blend, veto, approve & lock), public results, winner badges/cards.
  • Audit log viewer (filter/search).

v1.0.0 β€” Launch Polish βœ…

  • Full responsive pass; accessibility; rate limiting; backups verified; perf pass;

owner walkthrough + go-live checklist.

Post-1.0 releases

v1.1.0 β€” Duplicate candidate detection βœ…

  • BR-011 repeat-candidate surveillance: email/LinkedIn/CNIC-hash/name+WhatsApp signals +

same-account repeat detection; flag + alert admin (never auto-block).

  • Admin review queue /admin/duplicates (confirm β†’ auto-veto / dismiss), badges + KPI.
  • CNIC mandatory on award forms (hash-only storage). Judges anchoring fix (SRS A2).
  • E2E: bin/qa-e2e.sh extended to 50 checks (all green).

v1.2.0 β€” Release-control completions βœ…

  • Winner un-lock flow (retract results, revert statuses, eventβ†’judging, audited) β€” FR-1005.
  • Team password reset by admin (temp pass re-issue + forced change) β€” FR-0705.
  • E2E extended to 63 checks (all green).

v1.3.0 β€” Polish pack βœ…

  • Email verification for non-LinkedIn signups (log mailer mock-safe) β€” FR-0309/0310.
  • Per-event vote-change policy toggle β€” FR-0509 (audited vote.changed).
  • ?ref= share-link attribution β†’ applicant channel breakdown β€” FR-0510.
  • Finalist certificate cards β€” FR-0604. Security headers incl. HSTS β€” NFR-11.
  • E2E extended to 76 checks (all green).

v1.4.0 β€” Public discovery & ops βœ…

  • Events directory /events (live + archive) β€” FR-0204 Β· Hall of fame /hall-of-fame β€” FR-1006.
  • Printable winner/finalist certificates β€” FR-0605 Β· Public read-only JSON API v1 β€” FR-1500.
  • robots.txt + dynamic sitemap.xml Β· vote rate limiting per IP (NFR-12) Β·

bin/backup.sh (DB+storage, 14-day retention).

  • E2E extended to 91 checks (all green).

v1.5.0 β€” Integrations & experience βœ…

  • Webhooks (signed JSON POSTs, subscriptions, delivery log, test ping) β€” FR-1601.
  • Venue leaderboard screen /screen/{slug} β€” FR-1602 Β· CSV exports β€” FR-1603.
  • Admin 2FA (TOTP, RFC 6238) β€” FR-1604 Β· PWA installable (manifest/icons/SW) β€” NFR-13.
  • E2E extended to 110 checks (all green).

v1.6.0 β€” Scale & polish βœ…

  • Maintenance mode (503 + admin bypass, toggle in /admin/toggles) β€” FR-0106.
  • Bulk approve/reject for registrations β€” FR-1604 Β· Audit CSV export β€” FR-1103.
  • System health dashboard /admin/system β€” NFR-15 (DB/storage/queues/backups).
  • Hardened: toggles no longer clear on maintenance-only posts; vote guards + audit.
  • E2E extended to 119 checks (all green).

v1.7.0 β€” Photo flexibility βœ…

  • B: Award/GoH photo optional at signup, upload/change via POST /dashboard/photo on member dashboard (Pakistan UX).
  • Approval (single + bulk) blocked until photo exists β€” audited, UI shows ?err=nophoto / ?skipped.
  • Docs: SRS FR-0304/0305/0308 + UC-04/05 updated; E2E 119/119 + 33/33 green.

v1.8.0 β€” Search & verification βœ…

  • Global admin search /admin/search + header box β€” FR-1606.
  • SMS comms channel (log transport, Pakistan-ready) β€” FR-0906.
  • QR verification on printable certificates + public verify page β€” FR-0606.
  • E2E extended to 131 checks (all green).

v2.0.0 β€” Program growth & ops βœ… (Aβ†’M, one release)

  • Nominations (inviteβ†’convert) Β· AI Assistant (context-aware, multi-chat) Β· Judge rubric.
  • Cert numbers Β· Ceremony reveal Β· Capacity+waitlist Β· Scheduled comms Β· Embed widget.
  • Data rights Β· Auditor role Β· Event cloning Β· wa.me links Β· Public caching.
  • E2E extended to 169 checks (all green) + surface 33/33.

v2.1.0 β€” Reach βœ…

  • Web Push end-to-end (pure PHP VAPID+RFC8291, admin broadcast, winner auto-push) β€” FR-1820.
  • CSV bulk import β€” FR-0311 Β· waitlist UI chip Β· nomination throttle setting.
  • E2E extended to 178 checks (all green).

v2.2.0 β€” Section 2 core βœ…

  • GoH decision emails/SMS + submit confirmation β€” FR-0305b Β· GoH card β€” FR-0608.
  • GoH event-page listing Β· ratings + roster β€” FR-0620 Β· public profiles + socials β€” FR-1701.
  • E2E extended to 190 checks (all green).

v2.3.0 β€” Engage βœ…

  • Magic-link member login β€” FR-0180 Β· messaging team↔members β€” FR-1830.
  • AI drafting (composer + bulk per-GoH) β€” FR-1840 Β· scheduling both directions β€” FR-1850.
  • E2E extended to 211 checks (all green).

v2.4.0 β€” Track & Trust βœ…

  • People tracking + engagement + timelines β€” FR-1860 Β· anonymous page views (hashed).
  • Vote receipts + hash chain + public verification β€” FR-1870.
  • AI category fit β€” FR-1880 Β· share-link click analytics β€” FR-1890.
  • E2E extended to 223 checks (all green).

v2.5.0 β€” Section 3: Day of Event βœ…

  • QR check-in Β· presenters + printable run-sheet Β· media gallery (both phases) Β· ceremony ops.

v2.6.0 β€” Growth βœ…

  • Sponsor wall Β· season report. E2E final: 239 checks (all green).

v3.0.0 β€” Ceremony Production System βœ…

  • MC Dashboard /mc (dedicated role, full show control) β€” FR-3000.
  • Stage Screen /stage/{slug} (polling, multi-GoH, anthem) β€” FR-3010.
  • Award Team /award-team (shield confirmation) β€” FR-3030.
  • Winner Queue + Shields + Admin Override β€” FR-3020/3040.
  • GoH Substitution + Self Check-in + Multi-GoH Presenters β€” FR-3050/3060/3070.
  • Ceremony Auto-generate from event data β€” FR-3080. Migration 027.
  • E2E extended to 260 checks (all green).

v3.1.1 β€” Security hotfix (audit) βœ…

  • Pre-auth account-takeover closed (forms never auto-login; magic-link defer).
  • Veto absoluteness (BR-005) before any UPDATE; forced password change enforced.
  • Check-in secret split from public share token; LinkedIn account linking;

2FA/login per-account throttling; judge recusal withdraws scores; ops docs gated.

v3.1.2 β€” Integrity milestone (audit) βœ…

  • DB::transaction() + transactions around winner lock/unlock, vote cast,

magic-link consume, ceremony generate, queue reorder; advisory locks for vote-chain tail and cert sequence.

  • Deterministic vote hash chain (recomputable chainVerified()); finalist

runner-up promotion (certs/cards live); vote races closed; card cache fixed.

  • Comms scheduling honored on send + retry-failed; profile vote-count gating;

MC cross-event slide guard; event FSM; version from config.

v3.2.0 β€” Event-Day UX βœ…

  • Stage screen start gate (sound/fullscreen), heartbeat, live sponsor slide,

real pre-flight checklist; MC keyboard shortcuts; award-team auto-refresh.

  • Old-input forms, a11y pass, category rosters, sidebar completeness, favicon

upload, 500 page, asset cache-busting, OG tags, bug fixes across admin views.

  • E2E extended to 266 checks (all green).

Feature / enhancement backlog (post-1.0 ideas)

Event-day readiness (from the 2026-08-31 audit, ordered by value)

  • Media upload UI on /admin/ceremony/setup (anthem video, fanfare, slide images).
  • One-click backup button on /admin/system; quick "all attendees" push/comms preset.
  • Printable name badges with the dedicated check-in QR; day-of runbook page.
  • Post-event feedback survey (1–5 + comment) feeding the engagement score.
  • Ticket upgrades: attachments, internal staff notes, escalation flags + mail.

Trust & growth (mission-aligned, from the audit)

  • Public /about-scoring transparency hub (weights, rubric, hash-chain verify, lock metadata).
  • Vote-abuse intervention loop (auto-hold bursts, LinkedIn re-verify, clean-vote % KPI).
  • Sponsor ROI dashboard (impressions/clicks from page_views, per-tier CSV export).
  • Per-applicant judge-ready AI brief on the review page (FR-0407 completion).
  • Jury transparency post-lock (judge counts, rubric distributions, recusal register).
  • Season/alumni network (cross-season hall-of-fame profiles, finalist priority list).
  • Bilingual UI (EN/UR) + RTL for the Pakistani audience.

Engineering

  • Pagination UI for big admin lists (registrations/people/audit).
  • CSP hardening β€” remove 'unsafe-inline' (needs inline script/style extraction).
  • Data-retention jobs (page_views rollup, audit_log archive, log-mailer cleanup).
  • More OAuth providers for voters (X, Google). Referral tracking (done v1.3.0).
  • AI-generated share cards (cards.driver=ai) once an image API key is provided.
  • Multi-event homepage, leaderboard, PWA, REST API, webhooks (v1.4–1.5).
  • SMS channel (v1.6.0).

Workflow

Per feature: SRS use-case β†’ workflow doc β†’ code β†’ CHANGELOG/ROADMAP/TODO β†’ conventional commit β†’ tag (details in WORKFLOW.md).