Live Shipping Log

Intentional chaos. Full receipts. Every ship ever.

48
Shipped
0
In Flight
48
Total
7
Oops

Tuesday, 3 March 2026 9 ships

#53 Persona section overhaul — editorial gap-px grid + fresh photography Shipped

Sticky stacking cards, shadow depth (no border gap), flexbox stretch, scenario personas, cinematic photography

#52 Site-wide in-app browser conversion fixes — session, Turnstile, Stripe 3DS, form UX, Google Places Shipped

7 conversion killers fixed across WP+Laravel checkout funnel for 13 in-app browsers

#51 World-class hero image + web image optimization (all 20 images) Shipped

13.6MB -> 2.1MB images (85% cut), 52KB WebP hero, sharp 10x faster pipeline

#50 Stunning dark editorial hero — typography + documentary photo + stat strip Shipped

3 sections → 1 cinematic hero, 3 brand signature patterns used, 0 violations

#49 Brand identity overhaul — every page matches BRAND-IDENTITY.md Shipped

52 brand assets in repo, BRAND.md as single source of truth, 0 violations in live HTML

#48 Complete brand identity system — psychology-driven, 33 assets generated Shipped

1 brand identity doc + 32 visual assets in 116 seconds (8x parallel Gemini 3 Pro)

#47 AI photography for all landing pages — Gemini 3 Pro (Nano Banana Pro) Shipped

20 AI-generated images across 5 pages, zero placeholders remaining

#46 Sharp flat redesign across all landing pages + replace donors with organisations persona Shipped

5 pages redesigned: sharp flat typography-driven, image placeholders, donors→organisations

#45 4-persona landing pages + main page rewrite — CRO-obsessed premium conversion machine Shipped

5 pages: 1 rewritten main + 4 new persona pages, every section earns its place or it's gone

Monday, 2 March 2026 32 ships

#44 Bulletproof consent: Gift Aid (HMRC), email opt-in, WhatsApp opt-in with audit trail Shipped

3 legally-compliant consents with immutable audit trail, 6 new DB columns, sends gated on opt-in

#43 Replace PNPL abbreviation with full name everywhere Shipped

4 user-facing PNPL references → "Pledge Now, Pay Later"

#42 Simplify to Zakat toggle per campaign + external payment tracking Shipped

5 fund types → 1 Zakat boolean, removed org-level toggle, added "I've Donated" button for external pledges

#41 Full terminology overhaul: events→campaigns, QR→pledge links, broader use cases Shipped

Events→Campaigns, QR→Pledge Links, 4 use cases, share via WhatsApp/email/social/QR

#40 Zakat fund types, fund allocation, landing page overhaul Shipped

5 fund types, fund allocation per campaign, charity+fundraiser external URLs

#39 Fundraiser mode: external platforms, role-aware onboarding, show-don't-gate dashboard Shipped

2 user types, 5 platforms, role-aware onboarding, dashboard never blocked

#38 Auth0 integration: Google login, social auth, passwordless Shipped

Auth0 app created via API, Google+Apple+Email enabled, auto-provisioning on first social login

#37 Insanely simple onboarding: 1-screen signup → instant dashboard Shipped

Signup reduced from 8 screens to 2. Onboarding checklist replaces wizard.

#36 Demo login, super admin view, password reset Shipped

Demo 1-click login, super admin with 3 orgs/3 users visible, passwords reset

#35 Last 10 Nights, Zakat toggle, One Eats One Waits £150/year copy Shipped

Last 10 Nights live, Zakat toggle ON, One Eats One Waits £150/year copy updated

#31 PNPL Production: auth, multi-tenant, signup, QR fix, landing page Shipped

Auth + signup + landing page live. 3 test orgs created. Dashboard protected. WAHA QR shows in settings.

#30 Pillars Landing Page v2 Draft Shipped

Pillars main page updated: gold #FFBC91, new copy, heavier amount box borders

#29 PNPL Production: reminder cron, dashboard overhaul, shadcn components, onboarding Shipped

+14 new files, cron running every 15min, 12 test pledges created including installment plans

#28 PNPL: Deferred payments & installment plans — pledge = promise to pay on a date Shipped

Core product shift: pledge = promise to pay on a date. Schedule step, installment plans (2-12mo), date-aware reminders. +676 lines.

#27 PNPL v2: Premium UI, AI nano models, WAHA WhatsApp integration Shipped

Premium UI + AI + WAHA WhatsApp. 1463 new lines, 5 new API routes, 2 new libs. Live at pledge.quikcue.com

#26 Match Funding Widget + Charity Name Fix Shipped

Last 10 Nights widget + full match funding donation widget takeover + contrast fix

#25 PNPL persona-driven feature update — remove FPX, close UK charity gaps Shipped

Removed FPX, added 6 new pages/APIs for 4 UK charity personas. +2293 lines, -494 lines. Live at pledge.quikcue.com

#24 Fix Board Decision Summary table alignment on JustVitamin proposal page Shipped

Board Decision Summary — text alignment fixed, readability improved

#23 Deploy Pledge Now Pay Later micro-SaaS Shipped

PNPL live at pledge.quikcue.com — Next.js 14 + Postgres 16, Prisma 7 schema (10 tables), Traefik SSL, seeded with demo org + event.

#22 JustVitamin dynamic data + API-driven charts Shipped

7 dynamic insights recalculate per date range. Offer charts + hero stats + ROI calculator all API-driven. Zero hardcoded data arrays.

#21 JustVitamin conversion audit — 23 claims verified, 10 fixes Shipped

23 data claims verified against raw DB. 10 conversion fixes — zero broken CTAs, zero unverified numbers. Every stat source-linked.

#20 JustVitamin AI image gen + conversion PDP output Shipped

3 live AI demos powered by Gemini. Image-to-image from real product photos. PDP renders as real ecommerce page not text cards.

#19 JustVitamin PostgreSQL dashboard backend Shipped

17 tables, 20,735 rows from 728K orders. Dashboard loads in 0.2-0.4s (was stuck loading 4MB JSON forever).

#17 Simple auth gate for JustVitamin site Shipped

Every route now gated behind password login. Session persists 30 days. Login page styled to match site theme.

#15 Fix WAHA migration - Core to Plus upgrade Shipped

WAHA upgraded Core to Plus, 2 WhatsApp sessions restored (sahibah + omair), external HTTPS live at waha.charityright.org.uk

#14 Fix CharityRight Chatwoot restart loop Shipped

Chatwoot restored - stale PID file caused restart loop, now serving HTTP 200 at chat.charityright.org.uk

#13 Calvana DB-backed shipping log — PostgreSQL + API Shipped

Shipped! /live page now fetches from PostgreSQL. 13 ships + 3 oops in DB. Auto-refreshes every 30s.

#12 Dokploy staging health check — WordPress + Laravel Shipped

Fixed 2 critical issues — WP malware removal + Laravel 500 to 200 (59 migrations, DB seeded)

#11 JustVitamin app deployed Shipped

JustVitamin Python app + PostgreSQL — live on Dokploy/Docker Swarm

#10 Separate QuikCue + CharityRight git servers Shipped

2 separate git servers: Gitea (QuikCue) + GitLab (CharityRight), SSH over port 443 via HAProxy

#9 Calvana application microsite Shipped

calvana.quikcue.com — manifesto, live shipping log, hire page. nginx:alpine on Docker Swarm

#8 QuikCue Hub app + worker Shipped

Hub v2 app (healthy) + background worker — B2B operations platform on Docker Swarm

Sunday, 1 March 2026 7 ships

#7 QuikCue comms stack — Chatwoot + n8n + WAHA Shipped

Full comms infra — Chatwoot (rails + sidekiq), n8n automation, WAHA WhatsApp gateway

#6 CharityRight Laravel staging Shipped

staging.charityright.org.uk — Laravel + Filament + Livewire, MySQL, Redis, Dockerfile from Git

#5 CharityRight analytics Shipped

analytics.charityright.org.uk — analytics dashboard on Dokploy

#4 CharityRight checkout v2 Shipped

v2-checkout.charityright.org.uk — Next.js checkout flow, Dockerfile from Git

#3 CharityRight WordPress marketing staging Shipped

marketing-staging.charityright.org.uk — WordPress + MySQL on Dokploy, Lets Encrypt TLS

#2 CharityRight Metabase dashboard Shipped

dashboard-v2.charityright.org.uk — Metabase + PostgreSQL for data analytics

#1 Dokploy server migration — Coolify to Dokploy on Incus Shipped

Full infra migration — 2 Incus containers, HAProxy TLS passthrough, 14 databases migrated, Docker Swarm. 63GB backup.

Rules I broke today

  • Didn't ask permission
  • Didn't wait for alignment
  • Didn't write a PRD
  • Didn't submit a normal application

Rules I refuse to break

  • No silent failures
  • No unbounded AI spend
  • No hallucinations shipped to users
  • No deploy without rollback path

Oops Log

If it's not here, I haven't broken it yet.

#1 WordPress HACKED — Trojanized plugin with webshells + rogue user via xmlrpc brute force. Fixed: malware deleted, user purged, xmlrpc blocked.
#2 Laravel 500 on all routes — 59 pending migrations + empty database tables. Fixed: migrations run, seeders executed.
#3 laravel.log permission denied — Truncated log as root during debugging, broke www-data write access. Fixed: chown + chmod.
#4 WAHA migration used Core (free) image instead of Plus. Core only supports 1 session but CharityRight needs multiple WhatsApp sessions. Fixed by transferring waha-plus image from old root Docker and recreating container with correct env vars and volume mounts. Fixed in 25 min.
#5 JustVitamin dead CTAs — both /offer and /proposal had href="mailto:" with NO email address. Visitors clicking "Start Today" got an empty email compose. Fixed: added omair@quikcue.com with subject+body. Fixed in 3 min. → commit
#6 JustVitamin wrong 97.4% channel dependency claim — unverifiable from any data combination. Actual 2025: Organic 56.6% + Google Ads 28.8% = 85.4%. Even including Bing+Webgains = 95.2%. Corrected to 85% across 4 occurrences on /offer page. Fixed in 5 min. → commit
#7 JustVitamin scraper (Demo A + C) completely broken — 'Could not find product' on every URL. Root cause: Accept-Encoding header included 'br' (brotli) but container had no brotli decoder. Server sent compressed binary → garbled HTML → empty title → error. Fix: removed 'br' from Accept-Encoding. Fixed in 8 min. → commit