← All projects
Session Handoff · 12 Days of Christmas

12 Days of Marketing Magic โ€” DFY Cleanup (2026-07-04)

Saved 2026-07-04

Paste it into a fresh Claude Code session and say “resume from this handoff.” It's briefing only — Claude will wait for your next instruction.

12 Days of Marketing Magic โ€” DFY Cleanup (2026-07-04)

๐Ÿ” CLONE-SAFETY AUDIT โ€” ALL Base44 apps (2026-07-05, Sondra's demand)

Question: does the 12-Days editor-vs-deployed mismatch affect her OTHER clone-me apps? Answer: NO. The mismatch exists in exactly one app โ€” 12 Days โ€” because it is the ONLY app where new code was deployed OVER an old editor-built app (her first app, Dec 2025). Every other Claude-built Base44 app was born code-first (no old editor version inside to clobber or leak into clones):

๐Ÿ† FINAL FINAL STATE (2026-07-05 ~00:05) โ€” FRESH CODE-FIRST MASTER

After Sondra's editor Publish restored the old app over the deploy (editor-born apps keep their old pages), the editor-born clones were ABANDONED. The real master is now a FRESH code-first app โ€” same birth pattern as ShortLinks/LinkHub, the two apps that passed real clone tests. No old editor version exists inside it; Publish-clobber is impossible.

โญ SUPERSEDED โ€” earlier DFY-clone state (2026-07-04 late night)

App 6a49c409b1d2d618b8c799bd โ€” "12 Days of Marketing Magic (DFY)" is the finished, verified master. Live: https://12-days-of-marketing-magic-dfy.base44.app ยท Editor: https://app.base44.com/apps/6a49c409b1d2d618b8c799bd/editor/workspace/overview The local code folder is linked to THIS app.

Lead-magnet flow (Sondra's spec, built + live-verified): the home page is PUBLIC โ€” anyone can browse the full page, greeting banner, and all 12 gifts with no login. A "๐ŸŽ Unwrap Day 1 Free โ€” Create Your Free Account" CTA + clicking ANY gift sends guests to signup. Verified end-to-end with a fresh user (srverva+dfytest@gmail.com): browse โ†’ click gift โ†’ signup โ†’ OTP โ†’ welcome popup โ†’ progress record created โ†’ Day 1 opened; user appears in the app user list (= lead captured, exportable via AdminExport); InvokeLLM verified on this app. Days 2-12 locked for guests and new users; direct-URL bypass closed.

App inventory (four apps exist โ€” don't mix them up): | App | ID ends | What it is | Keep? | |-----|---------|-----------|-------| | Original | โ€ฆ1ca0d8f | Her first app, untouched archive (has the latent RLS bug) | Keep as archive | | CLI copy | โ€ฆ8b34a02 | Created by eject; code-only, no editor preview | DELETE | | Clone "(Copy)" | โ€ฆf918e745 | First UI clone; has cleaned code but OLD login-required home + invite-only | Delete or keep as spare | | Clone "(DFY)" | โ€ฆ8c799bd | THE MASTER โ€” public browse + signup gate, fully verified | KEEP โ€” clone this for every use |

To run it for her own audience or hand to a vibe coder: clone the DFY master, then edit src/config/branding.js (+ days.js for different tools).

What this is

Sondra's first Base44 app ("12 Days of Marketing Magic", original id 692dd8080c8de14061ca0d8f) rebuilt as a clean done-for-you lead magnet template for her vibe coders.

The DFY master is SONDRA'S UI CLONE (id 6a49ab4b079c734cf918e745) โ€” she cloned it herself in the Base44 editor (2026-07-04 late) because the CLI-ejected copy (6a49994dโ€ฆ) is a code-only app with no editor preview/dashboard. The cleaned code + fixed entity rules are deployed to her clone. The original app is untouched (rollback). The CLI copy (6a49994dโ€ฆ) is now redundant โ€” she can delete it from her workspace.

โš ๏ธ One required toggle before giving it away: the clone is private_with_login (invite-only) โ€” new users hit "Request access". Sondra must set the app to public / anyone-can-sign-up in the Base44 dashboard settings (no CLI command exists for this). Also consider renaming the app (currently "12 Days of Marketing Magic (Copy)").

Note: on the UI clone, Base44's own hosted login page serves /login (signup + OTP + forgot-password, all platform-handled). The custom src/pages/Login.jsx stays dormant there โ€” it only activates on code-only apps (like the CLI copy) where the platform doesn't serve a login page. Harmless either way.

Decisions (Sondra, this session)

  1. No more 24-hour expiry โ€” days still unlock one per calendar day, but once unlocked stay usable forever.
  2. Branding is config-swappable โ€” vibe coders make it theirs by editing ONE file.
  3. The copy is the DFY master โ€” original app stays as-is.

The two files vibe coders edit

Run node check-config.mjs after editing days.js โ€” it catches missing fields and prompt placeholders that don't match the questions.

Bugs found & fixed

| Bug | Fix | |-----|-----| | Generate button enabled with blank fields โ†’ AI got literal {audience} text (11 of 12 days) | All fields now required before Generate enables | | AI errors were invisible (spinner just stopped) | Friendly error message + retry | | Typing /Day12 in the URL bypassed the daily drip; direct visits never recorded "opened" | Day pages enforce the unlock server-recorded start date and record opens | | Timezone bug โ€” day 2 could unlock hours early (UTC midnight math) | Calendar-day unlock in the user's local timezone | | serverUrl null โ€” ejected scaffold sent every API call to a broken /null/api/... URL | Client falls back to the SDK default (base44.app) | | No login page โ€” ejected scaffold ships without one; login redirect 404'd | Built branded login/signup/verify page (src/pages/Login.jsx) with Google + email/OTP | | Login session died on reload โ€” SDK keeps token in memory only | Token persisted to base44_access_token on login | | RLS never matched for real users (custom field without data. prefix) โ†’ 403 on first use. Original app has this same latent bug โ€” it only ever worked for Sondra because she's admin | Rules rewritten on built-in created_by per Base44 docs | | Invisible toast overlay blocked the welcome-popup button | Removed unused Toaster | | White-screen risk on crash | ErrorBoundary with a friendly refresh card | | 12 duplicate 185-line Day pages | One shared DayPage.jsx driven by days.js | | Unlimited regenerations burn owner's LLM credits | Client-side cap, 20/day per user (config) | | Browser tab said "Base44 APP" | Now the app name |

Verified end-to-end (live, 2026-07-04)

On the CLI copy (identical code): signup (srverva+magictest@gmail.com) โ†’ OTP email โ†’ verify โ†’ login โ†’ welcome popup + progress record created โ†’ Day 1 unlocked, Days 2โ€“12 locked โ†’ blank-field validation holds โ†’ real AI blog post generated โ†’ /Day12 direct URL bounces to home โ†’ /AdminExport as a regular user bounces home AND the underlying User-list API is denied server-side (403, "only collaborators") โ†’ no secrets in code โ†’ build + lint clean.

On her clone: site + entity rules deployed; platform signup/OTP flow verified (srverva+magictest2@gmail.com registered + verified, then hit the request-access wall โ€” expected while the app is invite-only); InvokeLLM smoke-tested OK via base44 exec. Remaining: after Sondra flips the app to public signup, one click-through as a fresh user confirms the full flow on the clone (test account creds in this handoff's session; or any new signup).

Open items

Generated for the CEO Dashboard · source: PROJECTS/12 Days of Christmas/handoffs/12-days-dfy-cleanup-2026-07-04.md ๐Ÿค