Daily Note — March 27, 2026
Session 32: QuikAction Rendering Studio — Chat History + Gallery (Boilerplate + QuikAction)
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)
- 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
- Visible History button — replaced subtle clock icon with pill button + conversation count badge
- Render thumbnail persistence — 3-layer fallback: renderUrls field → message renderUrl → renders array lookup
- renderUrl on ChatMessage — render image URL embedded directly in message data, survives localStorage clearing
- Inline render images in chat — renders show in chat bubbles, not just left panel
- GalleryView component (NEW) — 3-column grid, fullscreen lightbox with before/after slider, keyboard nav, detail sidebar, download/share/delete
- Gallery tab — added alongside 2D Render / 3D Model tabs in workspace
- Magic Patterns design export — full rendering studio mockup with QuikAction blue (#4AA3DF), saved to frontend/mockup/rendering-studio/
- rrweb fix — made optional in SessionReplay (fixed Amplify build)
- 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:
- Live driver tracking on pickup (#1 complaint)
- Auto-complete trip at destination (#2 complaint)
- Corporate invoicing for Sonesta/Integral (REVENUE LOSS)
- Driver notifications + payouts (solid push + Stripe)
- 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)
- Plan 2: Rider + Booking (live tracking, auto-complete, AI-first booking)
- Plan 3: Driver Portal (earnings, Tap to Pay/Tip, payouts)
- Plan 4: Admin Dashboard (rebuild 52 ugly pages)
- Plan 5: Partnership Portals (corporate invoicing, associate, affiliate + QuikInfluence)
- Plan 6-8: Mobile apps (rider 30 screens, driver 24, business 14)
- Dispatch Plan 1 to QCS1 Cursor agents
- 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
- Only Quik approves events (not Mo)
- No DocuSign — our own e-signature from QCR
- Real Apple Wallet .pkpass passes required
- Site 962 = ONE venue (remove multi-venue confusion)
- MongoDB→PostgreSQL is THE priority
- Mobile app is critical (pass scanning central)
- E-signature from QCR is reusable
6 Platform Decisions
- AWS SES + SNS standard (no SendGrid, no Twilio SMS)
- Technology Fee SEPARATE from platform fee ($1-1.50)
- NOTHING IS FREE — pass costs to customers
- Replace PassKit with own digital passes
- LiveKit for voice/video (not Vapi, not custom hack)
- 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
- 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)
- Feedback modal fix: moved setModalVisible(true) BEFORE captureScreenshot() — modal was blocked by hanging screenshot capture
- Removed KeyboardAvoidingView — was pushing entire sheet off-screen. ScrollView alone handles keyboard.
- QCR web feedback widget: installed html2canvas + rrweb, removed duplicate sign-in/sign-up routes, added Amplify env vars
- 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)
- FMO DNS: api-dev.fmofinegrooming.com A record added to Route53 (→ 98.83.4.34)
- QCR EC2 rogue process: Mo found root node process squatting port 3023 with SQLite fallback. Killed it, PM2 id 32 now owns port properly.
- FEEDBACK_SDK_API_KEY: Added to QCR backend/.env and backend/.env.develop on EC2
- ~/.zshrc aliases: feedback-qcr, feedback-wcr, feedback-fmo, feedback-all, feedback-check, qcs1
- 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
- Dispatch QuikCarry Plan 1 to QCS1
- Deploy Site 962 backend to EC2
- Web feedback widget standardization → all Herus
- 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
- Deploy Site 962 backend to EC2 (port 3050)
- Wire GraphQL to admin pages (replace mock data)
- Push frontend to develop (Amplify auto-deploys)
- Install LiveKit on QCS1
- 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
- EC2 deployment — Port 3050, PM2
site962-backend, nginx proxy at api-dev.site962.com - 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
- 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
- EC2 disk cleaned — 2.4GB npm cache + 94MB PM2 logs + 450MB pnpm store freed
- 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
- Add Clerk keys for Site 962 to SSM/EC2
- DNS: Route53 A record for api-dev.site962.com → 98.83.4.34
- Merge 14 swarm branches into develop
- Recreate Mary Bethune swarm features (staff, event wizard, promoter, commission)
- Wire frontend GraphQL + push to Amplify
- 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
- Browsed site962.com LIVE — Firecrawl branding extraction + Chrome screenshots of homepage, events listing, event detail (Art Cars and Cigars July 2026)
- Logo captured — SVG (181×60px, black geometric S icon + “SITE962” bold text) saved to docs/technical/site962-logo.svg
- 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
- 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
- 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
- Updated 10 prompts + design system with money flow + “Concessions” terminology
- 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
- Backend Track 1: Clerk keys, DNS, merge 14 branches
- Recreate models with new money flow
- Convert Magic Patterns screens to Next.js code
- 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
- Push boilerplate to QCS1 for HelpMenu components
- TestFlight builds (QCR, WCR, FMO)
- Site 962 backend → EC2 (port 3050)
- QuikCarry Plan 1 dispatch
- 3 days to April 1