From 28abaea39b7114c889d7d4e108a0e9f25975ca11 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Fri, 6 Mar 2026 02:19:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20scrub=20infra=20details=20=E2=80=94=20no?= =?UTF-8?q?=20server=20topology,=20tool=20names,=20or=20shared=20hosting?= =?UTF-8?q?=20references?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/index.html | 18 +++++++++--------- html/live/index.html | 8 ++++---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/html/index.html b/html/index.html index a39e1a7..4520902 100644 --- a/html/index.html +++ b/html/index.html @@ -91,7 +91,7 @@
🔒
Yours, not ours. - Self-hosted. Open source where possible. You own every line, every server, every byte. + Your infrastructure. Your data. You own every line, every server, every byte.
@@ -106,7 +106,7 @@

We build autonomous operations.

Payment systems. AI products. Communication automation. Analytics pipelines. - Self-hosted infrastructure. It sounds like five different things. + Owned infrastructure. It sounds like five different things. It's not. It's one discipline: engineering the operational backbone that lets a small team do the work of fifty.

@@ -151,7 +151,7 @@

Independence

Your infrastructure. Your data. Your control.

In production: - Two organizations. One server. Full comms stacks. Complete autonomy. + Multi-tenant architecture. Full comms stacks. Complete autonomy.
@@ -238,7 +238,7 @@

End-to-end digital infrastructure for one of the UK's fastest-growing charities. Donation processing, checkout systems, analytics dashboards, CRM integrations, - and a full self-hosted comms stack — all built, deployed, and maintained by QuikCue. + and a full comms stack — all built, deployed, and maintained by QuikCue.

£4M+ donations processed @@ -263,7 +263,7 @@

Pledge Now, Pay Later — a micro-SaaS that lets charities accept pledges with - deferred payment. Next.js, Postgres, multi-gateway. Built as reusable + deferred payment. Modern web stack, multi-gateway. Built as reusable infrastructure, not a one-off project.

@@ -393,17 +393,17 @@ const FALLBACK_STATS = { total: 92, shipped: 89, oops: 19 }; const FALLBACK_SHIPS = [ { id: 98, title: "Milestone Recognition: n8n → Mailchimp via donation_warehouse", status: "shipped" }, - { id: 97, title: "QuikCue site — Git + Dokploy proper deployment", status: "shipped" }, + { id: 97, title: "QuikCue site deployed to production pipeline", status: "shipped" }, { id: 96, title: "QuikCue Homepage — Autonomous Systems Studio", status: "shipped" }, { id: 84, title: "Supporter Care: Full refund/cancel/edit across Donations & Giving", status: "shipped" }, { id: 71, title: "CharityRight Admin v4 — Command center redesign", status: "shipped" }, { id: 52, title: "In-app browser fixes — session, Turnstile, Stripe 3DS, Google Places", status: "shipped" }, { id: 44, title: "Bulletproof consent: Gift Aid (HMRC), email + WhatsApp opt-in", status: "shipped" }, { id: 22, title: "JustVitamin dynamic data + API-driven charts", status: "shipped" }, - { id: 13, title: "Calvana DB-backed shipping log — PostgreSQL + API", status: "shipped" }, + { id: 13, title: "Database-backed shipping log with live API", status: "shipped" }, { id: 7, title: "QuikCue comms stack — Chatwoot + n8n + WAHA", status: "shipped" }, { id: 4, title: "CharityRight checkout v2", status: "shipped" }, - { id: 1, title: "Dokploy server migration — Coolify to Dokploy on Incus", status: "shipped" }, + { id: 1, title: "Full server migration — 14 databases, zero downtime", status: "shipped" }, ]; function renderStats(stats) { diff --git a/html/live/index.html b/html/live/index.html index 3ddd3da..05e279e 100644 --- a/html/live/index.html +++ b/html/live/index.html @@ -40,7 +40,7 @@ 95 systems shipped.

- This isn't a portfolio. It's our production database — every deployment, + This isn't a portfolio. It's a live feed — every deployment, every fix, pulled in real time. Unedited. Unfakeable.

@@ -141,7 +141,7 @@

This is what shipping looks like.

-

Most agencies show a portfolio.
We show the production database.

+

Most agencies show a portfolio.
We show the live feed.

Talk to us →
@@ -173,7 +173,7 @@ const API = 'https://calvana.quikcue.com/api'; // ══════════════════════════════════════════ // DISPLAY MAP — visitor-friendly // ══════════════════════════════════════════ -const DISPLAY={100:{p:'quikcue',t:'Live build log — UI overhaul and visitor-friendly entries'},99:{p:'quikcue',t:'Build log page added to quikcue.com',s:'Full shipping history with filters, stats, and incident log — all pulled live from the production database.'},98:{p:'charityright',t:'Automated milestone emails for 40,000+ supporters',s:'Recognises donation milestones (first gift through to £1,000) and sends personalised emails via Mailchimp — fully automated.'},97:{p:'quikcue',t:'QuikCue site deployed to Git + production pipeline',s:'Source code on Gitea, Docker Swarm service with automatic SSL across 3 domains.'},96:{p:'quikcue',t:'QuikCue company homepage launched',s:'Full company site with live engineering feed, client showcase, and dark premium design.'},95:{p:'pnpl',t:'Dashboard redesign — header, sidebar, and onboarding',s:'New layout with contextual upsell prompts and a lead capture flow.'},94:{p:'pnpl',t:'Embeddable mini widget for charity websites',s:'Compact 160px widget that expands on click — charities embed on any page.'},93:{p:'pnpl',t:'WhatsApp notification redesign + quick-add appeal picker'},92:{p:'pnpl',t:'Conditional and match funding pledges',s:'Supporters can pledge conditionally or match others — tracked across the entire product.'},91:{p:'charityright',t:'Seasonal giving data audit and dashboard overhaul',s:'Audited all giving data. Built seasonal view with Ramadan 2026 campaign performance.'},90:{p:'pnpl',t:'Complete redesign of fundraiser link creation',s:'3-step wizard: choose fundraiser → payment method → name your link.'},89:{p:'infra',t:'Git organisation cleanup across platforms'},88:{p:'pnpl',t:'Full-width landing page design across all dashboard pages'},87:{p:'charityright',t:'Seasonal giving dashboard with campaign analytics',s:'Per-campaign analytics, seasonal vs daily navigation, subscriber progress tracking.'},86:{p:'pnpl',t:'Education-first UX overhaul for automation and collection pages'},85:{p:'pnpl',t:'Every dashboard page redesigned as a landing page',s:'7 pages overhauled with brand photography and human language.'},84:{p:'charityright',t:'Full supporter care — refunds, cancellations, and edits',s:'Admins can refund, cancel, or edit any donation with Stripe sync.'},83:{p:'pnpl',t:'World-class WhatsApp message templates with A/B testing'},82:{p:'pnpl',t:'Universal payment call-to-action system',s:'Smart CTAs that adapt based on payment method.'},81:{p:'pnpl',t:'AI message generation with quality enforcement'},80:{p:'pnpl',t:'Brand photography integrated into the dashboard'},79:{p:'pnpl',t:'AI-powered message optimisation — fully automated',s:'One button starts AI optimisation. Generates challengers, tests, picks winners.'},78:{p:'pnpl',t:'Automation page rebuilt as a single conversation view',s:'Removed 15 UI panels. Now one WhatsApp conversation thread.'},77:{p:'pnpl',t:'Switched AI model — costs reduced to ~£0.08/1M messages'},76:{p:'pnpl',t:'AI provider switch to Gemini Flash (free tier)'},75:{p:'pnpl',t:'AI-native A/B testing — messages that improve themselves',s:'One-click AI challengers. Statistical winner detection. Continuous improvement.'},74:{p:'pnpl',t:'Message design studio with WhatsApp preview',s:'Phone mockup previews for WhatsApp, email, and SMS with A/B tracking.'},73:{p:'pnpl',t:'Multi-channel messaging engine — WhatsApp, SMS, email',s:'Waterfall delivery: WhatsApp → SMS → email. Channel status dashboard.'},72:{p:'pnpl',t:'Settings page redesigned as a guided checklist'},71:{p:'charityright',t:'Admin panel v4 — command centre redesign',s:'Sidebar reorganised. Every page uses tabs with live counts.'},70:{p:'pnpl',t:'Stripe integration — charities connect their own account',s:'Each charity pastes their Stripe key. Webhook auto-confirms payments.'},69:{p:'pnpl',t:'Removed 716 lines of dead payment code'},68:{p:'pnpl',t:'Settings page redesign with readiness tracking'},67:{p:'pnpl',t:'Team management with role-based access control'},66:{p:'pnpl',t:'Payment reconciliation embedded in the Money page'},65:{p:'pnpl',t:'Context-aware Money and Reports pages'},64:{p:'pnpl',t:'Fundraiser collection page — flattened, zero extra clicks'},63:{p:'charityright',t:'Admin panel v3 — persona-driven operational design',s:'Donor lookup in one search. Major donor identification. Payment investigation.'},62:{p:'charityright',t:'Admin panel v2 — AI-powered approval engine',s:'AI auto-approved 44% of stale reviews. Queue reduced from 151 to 84.'},61:{p:'pnpl',t:'Complete dashboard UX overhaul — welcome flow to sharing',s:'Signup to shareable link in 90 seconds.'},60:{p:'pnpl',t:'Smart timing, duplicate detection, and bank presets'},59:{p:'charityright',t:'Admin panel — full audit and major rebuild',s:'Dashboard widgets, global search, internal notes, sidebar navigation.'},58:{p:'pnpl',t:'36 product improvements deployed in one sprint'},57:{p:'pnpl',t:'Product gap analysis v2 — revised for WhatsApp-first reality'},56:{p:'pnpl',t:'Product gap analysis — landing pages vs actual product',s:'43 gaps identified. 28 hidden needs. 10 AI features specced.'},55:{p:'charityright',t:'Stacking card scroll effect on the marketing site'},53:{p:'charityright',t:'Persona section rebuilt with editorial photography grid'},52:{p:'charityright',t:'Fixed 7 conversion killers across in-app browsers',s:'Session handling, bot protection, 3D Secure, form UX — all fixed.'},51:{p:'charityright',t:'Hero image + full site image optimisation',s:'Images cut 85% (13.6MB → 2.1MB). 10x faster loads.'},50:{p:'charityright',t:'New cinematic hero section'},49:{p:'charityright',t:'Brand identity applied across every page'},48:{p:'charityright',t:'Complete brand identity system generated in 116 seconds',s:'1 brand doc + 32 visual assets via 8 parallel AI sessions.'},47:{p:'charityright',t:'AI-generated photography for all landing pages'},46:{p:'charityright',t:'All landing pages redesigned with sharp flat typography'},45:{p:'charityright',t:'4 persona landing pages + main page rewrite',s:'5 pages total — every section earns its place.'},44:{p:'charityright',t:'Bulletproof consent system — Gift Aid, email, WhatsApp',s:'HMRC-compliant declarations with immutable audit trail.'},43:{p:'pnpl',t:'Replaced internal abbreviations with full product name'},42:{p:'pnpl',t:'Simplified fund types + external payment tracking'},41:{p:'pnpl',t:'Terminology overhaul — clearer language throughout'},40:{p:'pnpl',t:'Zakat fund types and campaign fund allocation'},39:{p:'pnpl',t:'Fundraiser mode — role-aware onboarding',s:'2 user types, 5 platforms, dashboard never blocks access.'},38:{p:'pnpl',t:'Social login — Google, Apple, passwordless auth'},37:{p:'pnpl',t:'Onboarding cut from 8 screens to 2'},36:{p:'pnpl',t:'Demo login, admin view, and password recovery'},35:{p:'charityright',t:'Last 10 Nights campaign + Zakat toggle live'},31:{p:'pnpl',t:'Production launch — auth, multi-tenant, signup',s:'Auth + signup live. Dashboard protected. WhatsApp QR in settings.'},30:{p:'pnpl',t:'Landing page v2 with updated design language'},29:{p:'pnpl',t:'Automated reminder system + dashboard rebuild',s:'Reminder cron running every 15 minutes.'},28:{p:'pnpl',t:'Deferred payments and instalment plans',s:'A pledge is a promise to pay on a date. 2–12 month plans.'},27:{p:'pnpl',t:'Premium UI + AI messaging + WhatsApp integration',s:'Live at pledge.quikcue.com.'},26:{p:'charityright',t:'Match funding donation widget for Last 10 Nights'},25:{p:'pnpl',t:'Persona-driven features for UK charity market'},24:{p:'justvitamin',t:'Board decision summary layout fix'},23:{p:'pnpl',t:'Pledge Now Pay Later deployed to production',s:'Next.js + PostgreSQL with 10 tables. Seeded with demo org.'},22:{p:'justvitamin',t:'Dynamic analytics dashboard with API-driven charts',s:'7 insights that recalculate per date range — all live data.'},21:{p:'justvitamin',t:'Conversion audit — 23 data claims verified',s:'Every number checked against raw database. 10 fixes applied.'},20:{p:'justvitamin',t:'AI image generation + product page builder',s:'3 live AI demos. Image-to-image from real product photos.'},19:{p:'justvitamin',t:'PostgreSQL analytics backend',s:'17 tables, 20,735 rows. Dashboard loads in 0.2 seconds.'},17:{p:'justvitamin',t:'Password-protected analytics site'},15:{p:'comms',t:'WhatsApp gateway upgraded — multi-session support',s:'Upgraded to Plus tier. 2 WhatsApp sessions restored.'},14:{p:'comms',t:'Live chat system restored after restart loop'},13:{p:'infra',t:'Database-backed build log with live API',s:'This page. PostgreSQL + API serving data in real time.'},12:{p:'infra',t:'Staging health check — WordPress + Laravel'},11:{p:'justvitamin',t:'Analytics app deployed to production'},10:{p:'infra',t:'Separate Git servers for each organisation'},9:{p:'quikcue',t:'Calvana microsite launched'},8:{p:'quikcue',t:'QuikCue operations hub deployed'},7:{p:'comms',t:'Full communications stack deployed',s:'Live chat, workflow automation, WhatsApp gateway — all self-hosted.'},6:{p:'charityright',t:'Laravel admin staging environment'},5:{p:'charityright',t:'Analytics dashboard deployed'},4:{p:'charityright',t:'Checkout flow v2 deployed'},3:{p:'charityright',t:'WordPress marketing site (staging)'},2:{p:'charityright',t:'Data analytics dashboard with Metabase'},1:{p:'infra',t:'Full server migration — 14 databases, zero downtime',s:'2 containers, load balancer, 14 databases migrated, Docker Swarm. 63GB backup.'}}; +const DISPLAY={100:{p:'quikcue',t:'Live build log — UI overhaul and visitor-friendly entries'},99:{p:'quikcue',t:'Build log page added to quikcue.com',s:'Full shipping history with filters, stats, and incident log — all pulled live.'},98:{p:'charityright',t:'Automated milestone emails for 40,000+ supporters',s:'Recognises donation milestones (first gift through to £1,000) and sends personalised emails via Mailchimp — fully automated.'},97:{p:'quikcue',t:'QuikCue site deployed to production pipeline',s:'Source code version-controlled, automatic SSL across 3 domains.'},96:{p:'quikcue',t:'QuikCue company homepage launched',s:'Full company site with live engineering feed, client showcase, and dark premium design.'},95:{p:'pnpl',t:'Dashboard redesign — header, sidebar, and onboarding',s:'New layout with contextual upsell prompts and a lead capture flow.'},94:{p:'pnpl',t:'Embeddable mini widget for charity websites',s:'Compact 160px widget that expands on click — charities embed on any page.'},93:{p:'pnpl',t:'WhatsApp notification redesign + quick-add appeal picker'},92:{p:'pnpl',t:'Conditional and match funding pledges',s:'Supporters can pledge conditionally or match others — tracked across the entire product.'},91:{p:'charityright',t:'Seasonal giving data audit and dashboard overhaul',s:'Audited all giving data. Built seasonal view with Ramadan 2026 campaign performance.'},90:{p:'pnpl',t:'Complete redesign of fundraiser link creation',s:'3-step wizard: choose fundraiser → payment method → name your link.'},89:{p:'infra',t:'Git organisation cleanup across platforms'},88:{p:'pnpl',t:'Full-width landing page design across all dashboard pages'},87:{p:'charityright',t:'Seasonal giving dashboard with campaign analytics',s:'Per-campaign analytics, seasonal vs daily navigation, subscriber progress tracking.'},86:{p:'pnpl',t:'Education-first UX overhaul for automation and collection pages'},85:{p:'pnpl',t:'Every dashboard page redesigned as a landing page',s:'7 pages overhauled with brand photography and human language.'},84:{p:'charityright',t:'Full supporter care — refunds, cancellations, and edits',s:'Admins can refund, cancel, or edit any donation with Stripe sync.'},83:{p:'pnpl',t:'World-class WhatsApp message templates with A/B testing'},82:{p:'pnpl',t:'Universal payment call-to-action system',s:'Smart CTAs that adapt based on payment method.'},81:{p:'pnpl',t:'AI message generation with quality enforcement'},80:{p:'pnpl',t:'Brand photography integrated into the dashboard'},79:{p:'pnpl',t:'AI-powered message optimisation — fully automated',s:'One button starts AI optimisation. Generates challengers, tests, picks winners.'},78:{p:'pnpl',t:'Automation page rebuilt as a single conversation view',s:'Removed 15 UI panels. Now one WhatsApp conversation thread.'},77:{p:'pnpl',t:'Switched AI model — costs reduced to ~£0.08/1M messages'},76:{p:'pnpl',t:'AI provider switch to Gemini Flash (free tier)'},75:{p:'pnpl',t:'AI-native A/B testing — messages that improve themselves',s:'One-click AI challengers. Statistical winner detection. Continuous improvement.'},74:{p:'pnpl',t:'Message design studio with WhatsApp preview',s:'Phone mockup previews for WhatsApp, email, and SMS with A/B tracking.'},73:{p:'pnpl',t:'Multi-channel messaging engine — WhatsApp, SMS, email',s:'Waterfall delivery: WhatsApp → SMS → email. Channel status dashboard.'},72:{p:'pnpl',t:'Settings page redesigned as a guided checklist'},71:{p:'charityright',t:'Admin panel v4 — command centre redesign',s:'Sidebar reorganised. Every page uses tabs with live counts.'},70:{p:'pnpl',t:'Stripe integration — charities connect their own account',s:'Each charity pastes their Stripe key. Webhook auto-confirms payments.'},69:{p:'pnpl',t:'Removed 716 lines of dead payment code'},68:{p:'pnpl',t:'Settings page redesign with readiness tracking'},67:{p:'pnpl',t:'Team management with role-based access control'},66:{p:'pnpl',t:'Payment reconciliation embedded in the Money page'},65:{p:'pnpl',t:'Context-aware Money and Reports pages'},64:{p:'pnpl',t:'Fundraiser collection page — flattened, zero extra clicks'},63:{p:'charityright',t:'Admin panel v3 — persona-driven operational design',s:'Donor lookup in one search. Major donor identification. Payment investigation.'},62:{p:'charityright',t:'Admin panel v2 — AI-powered approval engine',s:'AI auto-approved 44% of stale reviews. Queue reduced from 151 to 84.'},61:{p:'pnpl',t:'Complete dashboard UX overhaul — welcome flow to sharing',s:'Signup to shareable link in 90 seconds.'},60:{p:'pnpl',t:'Smart timing, duplicate detection, and bank presets'},59:{p:'charityright',t:'Admin panel — full audit and major rebuild',s:'Dashboard widgets, global search, internal notes, sidebar navigation.'},58:{p:'pnpl',t:'36 product improvements deployed in one sprint'},57:{p:'pnpl',t:'Product gap analysis v2 — revised for WhatsApp-first reality'},56:{p:'pnpl',t:'Product gap analysis — landing pages vs actual product',s:'43 gaps identified. 28 hidden needs. 10 AI features specced.'},55:{p:'charityright',t:'Stacking card scroll effect on the marketing site'},53:{p:'charityright',t:'Persona section rebuilt with editorial photography grid'},52:{p:'charityright',t:'Fixed 7 conversion killers across in-app browsers',s:'Session handling, bot protection, 3D Secure, form UX — all fixed.'},51:{p:'charityright',t:'Hero image + full site image optimisation',s:'Images cut 85% (13.6MB → 2.1MB). 10x faster loads.'},50:{p:'charityright',t:'New cinematic hero section'},49:{p:'charityright',t:'Brand identity applied across every page'},48:{p:'charityright',t:'Complete brand identity system generated in 116 seconds',s:'1 brand doc + 32 visual assets via 8 parallel AI sessions.'},47:{p:'charityright',t:'AI-generated photography for all landing pages'},46:{p:'charityright',t:'All landing pages redesigned with sharp flat typography'},45:{p:'charityright',t:'4 persona landing pages + main page rewrite',s:'5 pages total — every section earns its place.'},44:{p:'charityright',t:'Bulletproof consent system — Gift Aid, email, WhatsApp',s:'HMRC-compliant declarations with immutable audit trail.'},43:{p:'pnpl',t:'Replaced internal abbreviations with full product name'},42:{p:'pnpl',t:'Simplified fund types + external payment tracking'},41:{p:'pnpl',t:'Terminology overhaul — clearer language throughout'},40:{p:'pnpl',t:'Zakat fund types and campaign fund allocation'},39:{p:'pnpl',t:'Fundraiser mode — role-aware onboarding',s:'2 user types, 5 platforms, dashboard never blocks access.'},38:{p:'pnpl',t:'Social login — Google, Apple, passwordless auth'},37:{p:'pnpl',t:'Onboarding cut from 8 screens to 2'},36:{p:'pnpl',t:'Demo login, admin view, and password recovery'},35:{p:'charityright',t:'Last 10 Nights campaign + Zakat toggle live'},31:{p:'pnpl',t:'Production launch — auth, multi-tenant, signup',s:'Auth + signup live. Dashboard protected. WhatsApp QR in settings.'},30:{p:'pnpl',t:'Landing page v2 with updated design language'},29:{p:'pnpl',t:'Automated reminder system + dashboard rebuild',s:'Reminder cron running every 15 minutes.'},28:{p:'pnpl',t:'Deferred payments and instalment plans',s:'A pledge is a promise to pay on a date. 2–12 month plans.'},27:{p:'pnpl',t:'Premium UI + AI messaging + WhatsApp integration',s:'Live at pledge.quikcue.com.'},26:{p:'charityright',t:'Match funding donation widget for Last 10 Nights'},25:{p:'pnpl',t:'Persona-driven features for UK charity market'},24:{p:'justvitamin',t:'Board decision summary layout fix'},23:{p:'pnpl',t:'Pledge Now Pay Later deployed to production',s:'Modern web stack with 10 database tables. Seeded with demo org.'},22:{p:'justvitamin',t:'Dynamic analytics dashboard with API-driven charts',s:'7 insights that recalculate per date range — all live data.'},21:{p:'justvitamin',t:'Conversion audit — 23 data claims verified',s:'Every number checked against raw database. 10 fixes applied.'},20:{p:'justvitamin',t:'AI image generation + product page builder',s:'3 live AI demos. Image-to-image from real product photos.'},19:{p:'justvitamin',t:'Analytics backend',s:'17 tables, 20,735 rows from 728K orders. Dashboard loads in 0.2 seconds.'},17:{p:'justvitamin',t:'Password-protected analytics site'},15:{p:'comms',t:'WhatsApp gateway upgraded — multi-session support',s:'Upgraded tier. Multiple WhatsApp sessions restored.'},14:{p:'comms',t:'Live chat system restored after restart loop'},13:{p:'infra',t:'Database-backed build log with live API',s:'This page. Database + API serving data in real time.'},12:{p:'infra',t:'Staging health check — WordPress + Laravel'},11:{p:'justvitamin',t:'Analytics app deployed to production'},10:{p:'infra',t:'Separate Git servers per organisation'},9:{p:'quikcue',t:'Calvana microsite launched'},8:{p:'quikcue',t:'QuikCue operations hub deployed'},7:{p:'comms',t:'Full communications stack deployed',s:'Live chat, workflow automation, and WhatsApp gateway.'},6:{p:'charityright',t:'Laravel admin staging environment'},5:{p:'charityright',t:'Analytics dashboard deployed'},4:{p:'charityright',t:'Checkout flow v2 deployed'},3:{p:'charityright',t:'WordPress marketing site (staging)'},2:{p:'charityright',t:'Data analytics dashboard with Metabase'},1:{p:'infra',t:'Full server migration — 14 databases, zero downtime',s:'Complete infrastructure migration. 14 databases moved with zero downtime.'}}; const OOPS_DISPLAY={19:{t:'Deployment script overwrote API server config',f:'Restored in 3 min'},18:{t:'Routing config couldn\'t reach application container',f:'Fixed in 15 min'},17:{t:'Database data lost during deployment path change',f:'Restored in 4 min'},16:{t:'Admin panel crashed after deploy — null references',f:'Fixed in 8 min'},15:{t:'Navigation group name collision in admin panel',f:'Fixed in 5 min'},14:{t:'Deploy script missed a required variable',f:'Fixed in 12 min'},13:{t:'Admin filter crashed before data was ready',f:'Fixed in 25 min'},12:{t:'Wrong database syntax + missing code import',f:'Fixed in 6 min'},11:{t:'Dashboard widgets invisible — registration issue',f:'Fixed in 5 min'},10:{t:'AI review failed — messages too long for column',f:'Fixed in 3 min'},9:{t:'Widget property incompatible with framework',f:'Fixed in 2 min'},8:{t:'Deploy script corrupted files with dollar signs',f:'Fixed in 8 min'},7:{t:'Product scraper broken — garbled server responses',f:'Fixed in 8 min'},6:{t:'Analytics claim unverifiable — 97.4% had no source',f:'Fixed in 5 min'},5:{t:'Email buttons had no email address',f:'Fixed in 3 min'},4:{t:'WhatsApp gateway only supported 1 session',f:'Fixed in 25 min'},3:{t:'Log file permissions broken after debugging',f:'Fixed'},2:{t:'App errors on every page — 59 pending DB updates',f:'Fixed'},1:{t:'WordPress hacked via malicious plugin',f:'Malware removed, vector blocked'}}; @@ -186,7 +186,7 @@ const PROJECTS={ quikcue:{label:'QuikCue',color:'#00ff9f',icon:'⚡',desc:'Company site & internal tools'}, }; -function detectProject(title){const t=title.toLowerCase();if(t.includes('charityright')||t.includes('scheduled giving')||t.includes('supporter care')||t.includes('admin panel')||t.includes('admin v')||t.includes('gift aid')||t.includes('persona')||t.includes('consent'))return'charityright';if(t.includes('pnpl')||t.includes('pledge')||t.includes('collect')||t.includes('fundrais'))return'pnpl';if(t.includes('justvitamin'))return'justvitamin';if(t.includes('comms')||t.includes('chatwoot')||t.includes('waha'))return'comms';if(t.includes('dokploy')||t.includes('git ')||t.includes('migration')||t.includes('staging'))return'infra';if(t.includes('quikcue')||t.includes('calvana')||t.includes('hub'))return'quikcue';return'infra';} +function detectProject(title){const t=title.toLowerCase();if(t.includes('charityright')||t.includes('scheduled giving')||t.includes('supporter care')||t.includes('admin panel')||t.includes('admin v')||t.includes('gift aid')||t.includes('persona')||t.includes('consent'))return'charityright';if(t.includes('pnpl')||t.includes('pledge')||t.includes('collect')||t.includes('fundrais'))return'pnpl';if(t.includes('justvitamin'))return'justvitamin';if(t.includes('comms')||t.includes('chatwoot')||t.includes('waha'))return'comms';if(t.includes('git ')||t.includes('migration')||t.includes('staging')||t.includes('server'))return'infra';if(t.includes('quikcue')||t.includes('calvana')||t.includes('hub'))return'quikcue';return'infra';} async function init(){ const[ships,oops,stats]=await Promise.all([