Daily Note — March 27, 2026

Time: ~3:30 PM Mar 26 – ~12:30 AM Mar 27 ET Machine: local (MacBookPro) Projects: quik-nation-ai-boilerplate, quikaction

Completed (5 commits: 186be74 → 398e9b7)

  1. Chat History system — Claude-like conversation switching with Conversation type, localStorage migration from flat messages, auto-title from first message, auto-thumbnail from first render
  2. Visible History button — replaced subtle clock icon with pill button + conversation count badge
  3. Render thumbnail persistence — 3-layer fallback: renderUrls field → message renderUrl → renders array lookup
  4. renderUrl on ChatMessage — render image URL embedded directly in message data, survives localStorage clearing
  5. Inline render images in chat — renders show in chat bubbles, not just left panel
  6. GalleryView component (NEW) — 3-column grid, fullscreen lightbox with before/after slider, keyboard nav, detail sidebar, download/share/delete
  7. Gallery tab — added alongside 2D Render / 3D Model tabs in workspace
  8. Magic Patterns design export — full rendering studio mockup with QuikAction blue (#4AA3DF), saved to frontend/mockup/rendering-studio/
  9. rrweb fix — made optional in SessionReplay (fixed Amplify build)
  10. Slack notification — sent QuikAction update to Quik (DM + maat-discuss)

Session 34: QuikNation Swarm + GitHub Actions Deploy

Time: ~afternoon Mar 27 ET Machine: local + QCS1

Completed

  • 6 Cursor agents swarmed QuikNation on QCS1 in 12 minutes
  • All 6 PRs merged to develop, deployed via Amplify + GitHub Actions EC2
  • pnpm validate rule saved to memory

Session 35: QuikAction Blue Swap + QuikCarry Unified Frontend Design

Time: ~1:00 AM – ~3:30 AM Mar 28 ET (still Mar 27 session date) Machine: local (MacBookPro) Projects: quik-nation-ai-boilerplate, quikaction, quikcarry

QuikAction — Amber→Blue Brand Swap (commit a0f0469)

  • 9 files, 73 lines changed, zero amber remaining
  • Color map: amber-600→#3B8BC9, amber-500/400→#4AA3DF, amber-300→sky-300, amber-200→sky-200
  • Files: ChatPanel, RenderViewer, RenderGallery, PhotoUpload, ModelGallery, ThreeDViewer, SketchCanvas, workspace page, landing page
  • Pushed to develop, Amplify building

QuikCarry — UNIFIED FRONTEND DESIGN (MASSIVE)

Katherine Johnson (frontend architecture agent) led the entire design session with browser-based visual companion at localhost:57312.

Architecture Decision: Single unified Next.js 16 app with 7 route groups

  • (public), (rider), (driver), (admin), (corporate), (associate), (affiliate)
  • Clerk auth + RBAC determines portal routing
  • Clara voice button (LiveKit) on every single page

Design Spec (commit 822ee5c — 583 lines):

  • 112 Magic Patterns prompts: 44 web + 68 mobile
  • 12 service types: Rides, Luxury, Airport, NEMT, Group, Quik Delivers, Logistics, QCR, Golf Carts, Bikes, Tap to Pay, Tap to Tip
  • 3 mobile apps: Rider (30 screens), Driver (24 screens), Business (14 screens)
  • Business app = ONE app for admin + corporate + associate + affiliate (role-based)
  • AI-first: voice booking, Clara concierge, conversation over forms

Plan 1: Foundation (commit d775414 — 2,041 lines):

  • 11 tasks, 47 files, complete code in every step
  • Scaffolds: Next.js 16 app, design tokens (#FF00FF magenta, Basier Circle), Clerk auth, 7 portal route groups, Clara voice button, navigation components, LiveKit token endpoint

Critical Requirements Locked:

  1. Live driver tracking on pickup (#1 complaint)
  2. Auto-complete trip at destination (#2 complaint)
  3. Corporate invoicing for Sonesta/Integral (REVENUE LOSS)
  4. Driver notifications + payouts (solid push + Stripe)
  5. QuikInfluence integration with affiliate portal

Brand Confirmed:

  • Logo: Black circle Q with magenta C inside (from iCloud originals)
  • Primary: FF00FF | Dark: CC00CC
  • Font: Basier Circle
  • NOT copying Uber — AI-first identity

Remaining (Plans 2-7)

  1. Plan 2: Rider + Booking (live tracking, auto-complete, AI-first booking)
  2. Plan 3: Driver Portal (earnings, Tap to Pay/Tip, payouts)
  3. Plan 4: Admin Dashboard (rebuild 52 ugly pages)
  4. Plan 5: Partnership Portals (corporate invoicing, associate, affiliate + QuikInfluence)
  5. Plan 6-8: Mobile apps (rider 30 screens, driver 24, business 14)
  6. Dispatch Plan 1 to QCS1 Cursor agents
  7. Run Magic Patterns prompts W1-W4

Daily Note — March 27, 2026

Session 37: Seeking Talent + Site 962 Rebuild + Platform Decisions

Time: ~10:00 PM Mar 26 – ~3:00 AM Mar 27 ET Machine: local (MacBookPro) + QCS1 (Quik Cloud) Projects: quik-nation-ai-boilerplate, seeking-talent, site962

Seeking Talent — MVP DONE

  • CMS S3 persistence (Amplify-safe content storage)
  • Email notifications wired to AWS SES (not SendGrid)
  • Slack feedback notifier implemented
  • Family thread delivered to Kinah+Quik group DM via Stagecoach Mary

Stagecoach Mary — New Agent

  • Named after Mary Fields (1832-1914), first Black woman U.S. mail carrier
  • Handles all Slack communications for Quik Nation workspace
  • Delivered soulful family standup thread to Kinah — Quik said this won her $51K contract

Site 962 — 14 Agent Tasks, 3 Waves

  • Wave 1 (4 agents): Backend resolvers, frontend UI, mobile screens, QR tickets
  • Wave 2 (6 agents): Dashboard consolidation, event wizard, cleanup, approvals, docs, migration
  • Wave 3 (4 agents): LiveKit voice, multi-venue removal, DocuSign cleanup, Apollo Client
  • Total: +25,619/-8,574 lines across 6 commits
  • Deep audit revealed 3/10 score → rebuilt to ~6/10

7 Critical Site 962 Corrections from Mo

  1. Only Quik approves events (not Mo)
  2. No DocuSign — our own e-signature from QCR
  3. Real Apple Wallet .pkpass passes required
  4. Site 962 = ONE venue (remove multi-venue confusion)
  5. MongoDB→PostgreSQL is THE priority
  6. Mobile app is critical (pass scanning central)
  7. E-signature from QCR is reusable

6 Platform Decisions

  1. AWS SES + SNS standard (no SendGrid, no Twilio SMS)
  2. Technology Fee SEPARATE from platform fee ($1-1.50)
  3. NOTHING IS FREE — pass costs to customers
  4. Replace PassKit with own digital passes
  5. LiveKit for voice/video (not Vapi, not custom hack)
  6. Family Standup in every session-start

3 Architecture Plans Saved

  • aws-ses-sns-platform-feature.md
  • livekit-voice-video-platform.md
  • site962-mobile-app.md (9 stories, 17 hours)

Backstory Learned

  • Mo built Site 962 POC with MongoDB (intentionally temporary)
  • Hired developer extended the POC instead of rebuilding
  • /admin/ was Mo’s bandaid over the developer’s broken /dashboard/
  • Developer merged QuikEvents into Site 962 against Mo’s instructions

Session 39: Heru Feedback FULLY WORKING (Boilerplate + QCR + WCR + FMO)

Time: ~9:00 AM – ~12:30 PM ET Mar 27 Machine: local (MacBookPro) + QCS1

Completed

  1. 6 TestFlight builds submitted (2 rounds — first round had wrong feedback URLs)
    • QCR: 2 builds (build-1774618531235, build-1774626295155)
    • WCR: 2 builds (build-1774618156845, build-1774626637876)
    • FMO: 2 builds (build-1774618982516, build-1774627080674)
  2. Feedback modal fix: moved setModalVisible(true) BEFORE captureScreenshot() — modal was blocked by hanging screenshot capture
  3. Removed KeyboardAvoidingView — was pushing entire sheet off-screen. ScrollView alone handles keyboard.
  4. QCR web feedback widget: installed html2canvas + rrweb, removed duplicate sign-in/sign-up routes, added Amplify env vars
  5. EAS feedback URLs corrected:
    • QCR: was api-dev.quiknation.com/api/feedback → now api-dev.quikcarrental.com
    • FMO: was api-dev.fmofinegrooming.com → now api-dev.fmogrooming.com (nginx uses fmogrooming)
  6. FMO DNS: api-dev.fmofinegrooming.com A record added to Route53 (→ 98.83.4.34)
  7. QCR EC2 rogue process: Mo found root node process squatting port 3023 with SQLite fallback. Killed it, PM2 id 32 now owns port properly.
  8. FEEDBACK_SDK_API_KEY: Added to QCR backend/.env and backend/.env.develop on EC2
  9. ~/.zshrc aliases: feedback-qcr, feedback-wcr, feedback-fmo, feedback-all, feedback-check, qcs1
  10. All 3 verified working: feedback-qcr/wcr/fmo all return createFeedback success, feedback-check shows 15 federated items

Lessons Learned

  • Never run 3 EAS local builds simultaneously on QCS1 (Xcode fails at [CP] Embed Pods Frameworks)
  • FMO API domain is fmogrooming.com not fmofinegrooming.com (nginx config)
  • EC2 SSH key on local: ~/.ssh/quiknation-ec2-key.pem
  • xcrun altool API key: C2GS4G2364
  • Rogue root processes on EC2 can squat ports with wrong env — always check PID vs PM2
  • QCR backend loads .env from process.cwd() which is backend/ subdirectory, not project root

Remaining

  1. Dispatch QuikCarry Plan 1 to QCS1
  2. Deploy Site 962 backend to EC2
  3. Web feedback widget standardization → all Herus
  4. 4 days to April 1

Session 38: Site 962 MongoDB→PostgreSQL + Mary Bethune’s Five Pillars

Time: ~late night Mar 27 ET Machine: local (MacBookPro) Projects: quik-nation-ai-boilerplate, site962

Database Migration

  • Fixed database.ts to parse DATABASE_URL (was falling back to localhost due to ESM import hoisting)
  • Fixed migration runner with dynamic imports (dotenv must load BEFORE sequelize)
  • Made ADD COLUMN migrations idempotent (describeTable check)
  • Ran 5 original migrations on Neon dev (96 tables) + prod (56 tables), all 26 core tables verified
  • Port conflict: 3039 = QuikAction. Reassigned Site 962 → port 3050

Mary Bethune’s Five Pillars — 8-Task Agent Swarm

All 8 tasks completed across 3 waves of parallel agents:

Wave 1: DB Models (Staff, StaffShift, PromoterEarning, Payout + migration on all 3 DBs) | Event Wizard (8 files, 1,832 lines, 5 steps) Wave 2: GraphQL Schema (staff+payout typeDefs+resolvers, 9 queries, 11 mutations) | Stripe Connect (role-aware for staff/promoter) | Admin Dashboard (7 new pages: staff, shifts, payouts, promoters, POS launcher) Wave 3: Staff Portal (3 pages: home, shifts, earnings) | Promoter Dashboard (rewritten from 17-line stub) | Commission Engine (commission.ts + payout-processor.ts)

Promoter Payout Rules (PROPOSED — needs Mo confirmation)

  • 15% default commission, 48hr settlement, $10 minimum, platform fee first

Key Learnings

  • ES module imports are hoisted — use dynamic import() when env must load first
  • Neon dev DB has 44 legacy PascalCase tables from Events Genius alongside 52 new snake_case tables
  • EC2 SSH key: dreamihaircare-deploy.pem, user ec2-user (key name in AWS: dreamihaircare-deployment-key)

Next

  1. Deploy Site 962 backend to EC2 (port 3050)
  2. Wire GraphQL to admin pages (replace mock data)
  3. Push frontend to develop (Amplify auto-deploys)
  4. Install LiveKit on QCS1
  5. Site 962 mobile app (pass scanning)

Session 40: Site 962 Backend EC2 Deployment + GitHub Actions CI/CD

Time: ~3:30 PM – ~5:15 PM ET Mar 27 Machine: local (MacBookPro) Projects: quik-nation-ai-boilerplate, site962

Completed — Site 962 Backend LIVE on EC2

  1. EC2 deployment — Port 3050, PM2 site962-backend, nginx proxy at api-dev.site962.com
  2. 20+ commits fixing deployment blockers:
    • ecosystem.config.js (name, port, deploy config)
    • GraphQL: descriptions before extend type → comments (14 fixes, 7 files)
    • GraphQL: TicketEdge conflict → SupportTicketEdge
    • GraphQL: load schema from .ts + .graphql files
    • GraphQL: stripped to 8 core schemas (removed conflicting rbac/crm/financial/support/org/event-sessions)
    • database.ts: 60 models via directory scan + modelMatch (excludes index, Workspace, WorkspaceMember, SlackNotification)
    • Models barrel: moved to dist/models-exports.js outside models/ dir (scanner can’t see it)
    • auth.ts: UserRole/UserStatus enums defined locally, authenticate alias, roles.ts stub
    • Express 5: app.use('*')app.use() (path-to-regexp breaking change)
    • Clerk middleware: conditional on valid publishable key
    • routes/index.ts: simplified to core (GraphQL is primary API)
    • build-deploy.sh: post-build script for reflect-metadata, barrel move, model cleanup
  3. GitHub Actions CI/CD GREEN after 5 iterations:
    • Iteration 1: pnpm workspace pulled in frontend (@livekit/client 404)
    • Iteration 2: passkit-generator ^3.6.2 → ^3.5.7 (doesn’t exist on npm)
    • Iteration 3: missing type declarations (dataloader, @clerk/clerk-sdk-node, @graphql-tools/schema)
    • Iteration 4: tsconfig.runtime.json not in tar
    • Iteration 5: EC2 deploy missing runtime deps + build-deploy.sh + ecosystem.config → ALL GREEN
  4. EC2 disk cleaned — 2.4GB npm cache + 94MB PM2 logs + 450MB pnpm store freed
  5. EC2 SSH key added as GitHub secret EC2_SSH_KEY

Key Findings

  • Mary Bethune swarm work (Session 38) was NOT persisted to disk — needs to be recreated
  • 14 older swarm branches exist unmerged on site962 repo (food-ordering, passkit, stripe-connect, etc.)
  • Site 962 uses @/ path aliases that need tsconfig-paths at runtime (not compiled away by tsc)
  • sequelize-typescript model scanner is extremely brittle with barrel exports and non-decorator models

EC2 Backend Registry (Updated)

QCR:3023, Dreami:3025, FMO:3035, QuikAction:3039, WCR:3041, ST:3045, Site962:3050, Federation:4050, QuikNation x2

Next

  1. Add Clerk keys for Site 962 to SSM/EC2
  2. DNS: Route53 A record for api-dev.site962.com → 98.83.4.34
  3. Merge 14 swarm branches into develop
  4. Recreate Mary Bethune swarm features (staff, event wizard, promoter, commission)
  5. Wire frontend GraphQL + push to Amplify
  6. Site 962 mobile app (pass scanning)

Session 41: Site 962 Magic Patterns Design Spec (Katherine Johnson)

Time: ~6:00 PM Mar 27 – ~2:00 AM Mar 28 ET Machine: local (MacBookPro) Projects: quik-nation-ai-boilerplate, site962

Completed

  1. Browsed site962.com LIVE — Firecrawl branding extraction + Chrome screenshots of homepage, events listing, event detail (Art Cars and Cigars July 2026)
  2. Logo captured — SVG (181×60px, black geometric S icon + “SITE962” bold text) saved to docs/technical/site962-logo.svg
  3. Design system setup (437 lines) — site962/docs/superpowers/magic-patterns-design-system-setup.md: Poppins font (4 groups), 29 color tokens, Lucide icons, full brand Rules block, 16 reusable component prompts
  4. 60 Magic Patterns prompts (4,028 lines) — site962/docs/superpowers/magic-patterns-prompts-all-60.md: W1-W34 web + M1-M26 mobile, each with route + brand block inside code fence, Platform: WEB/MOBILE tags
  5. Mo’s money flow decisions:
    • Promoter reports to ORGANIZER (not Admin)
    • Organizer + promoter decide their own payment split
    • 48-hour hold on ALL money after event
    • Post-event settlement (Concessions = all non-ticket revenue)
    • Both organizers AND promoters need Stripe Connect
    • Site 962 = BANK, not REFEREE
  6. Updated 10 prompts + design system with money flow + “Concessions” terminology
  7. Memory saved: decision-site962-money-flow.md, MEMORY.md updated

Key Decisions

  • “Concessions” = Quik’s term for ALL non-ticket revenue (liquor, food, merch, vendor fees)
  • Organizer manages their own promoters, sets their own splits — platform stays out
  • 48-hour hold protects against chargebacks/disputes
  • Settlement categories: Ticket Revenue, Concessions, Platform Fees, Promoter Payouts

Prompt Counts (QuikCarry format)

  • Design system: 29 color tokens, 4 font groups, 16 components
  • Web prompts: 34 (W1-W34)
  • Mobile prompts: 26 (M1-M26 across Customer + Staff apps)
  • Total: 60 prompts, 4,465 lines across 2 files

Next

  1. Backend Track 1: Clerk keys, DNS, merge 14 branches
  2. Recreate models with new money flow
  3. Convert Magic Patterns screens to Next.js code
  4. Remaining Herus for April 1

Session 40: WCR Marketplace + Feedback SDK Standardization + Role-Based UX

Time: ~evening Mar 27 – ~midnight Mar 28 ET Machine: local (MacBookPro) + QCS1 (SSH) Projects: boilerplate, world-cup-ready, quikcarrental, fmo, quikaction

WCR Marketplace (4 PRs merged to develop)

  • PR #8: Vendor Onboarding — Stripe Connect Express, vendor directory, admin approval (Annie Malone, 14 files, ~3K lines)
  • PR #9: Product Catalog — search, filter, categories, S3 images, 7 components (Madam CJ, 21 files, ~3.4K lines)
  • PR #10: Checkout Flow — 3-way Stripe splits (vendor/WCR/platform), fee breakdown (Jesse Blayton, 20 files, ~2.3K lines)
  • PR #11: Order Management — tracking, vendor dashboard, SES emails (Maggie Walker, 22 files, ~3.8K lines)
  • Stripe architecture locked: Quik Dollars = platform, WCR = connected account (15% commission), Vendors = Express
  • Processing fee (2.9% + $0.30) always charged to customer

Feedback SDK Standardization (7,919 lines of drift eliminated)

  • QCR: -3,987 lines, 7 duplicate files deleted
  • WCR: -1,361 lines, custom FeedbackButton.tsx deleted
  • FMO: -2,571 lines, 3 drift files deleted
  • All 3 now use identical platform source from boilerplate

Role-Based Feedback UX (platform-level feature)

  • Mobile ShakeReporter: FAB visibility by Clerk role (user=hidden, beta_tester=subtle, staff/admin=full)
  • Mobile HelpSupportSection: settings-style rows for production users
  • Web FeedbackHelpMenu: navbar ”?” dropdown
  • Web FeedbackSDKInitializer: role-gated floating button
  • FeedbackModal extracted as shared component (web + mobile)
  • Synced to QCR, WCR, FMO, QuikAction
  • Memory saved: feedback-standardize-from-platform.md

Keyboard Fix

  • KeyboardAvoidingView + ScrollView on all modals
  • maxHeight: 85%, keyboardShouldPersistTaps: “handled”
  • Applied to platform source + all 3 Herus

Key Decisions

  • Cursor NOT installed on QCS1 — Claude Code agents SSH and code directly
  • VA contract ended March 28 — Heru revenue is existential
  • Feedback SDK = platform module, ONE source, /sync-herus deploys everywhere

Next

  1. Push boilerplate to QCS1 for HelpMenu components
  2. TestFlight builds (QCR, WCR, FMO)
  3. Site 962 backend → EC2 (port 3050)
  4. QuikCarry Plan 1 dispatch
  5. 3 days to April 1