Base44 escape to Next.js — 12 agency client apps migrated in 63 days, $68k/yr saved
Base44 escape to Next.js for Bluefinch Studio, a 14-person marketing agency with 12 client apps on Base44 — lead-capture widgets, internal dashboards, campaign portals. Base44 announced a 3x price hike, the agency's credit bills were misfiring across three clients, and client retention was at stake. Afterbuild Labs ran a 10-week Platform Escape retainer and migrated all 12 apps to Next.js 16 + Supabase on Bluefinch's own infrastructure. Net savings: $68,400/year. Zero client churn. Less than 9 minutes total downtime across 12 cutovers.
- 12 / 12
- Client apps migrated
- 0
- Client churn during migration
- $14,400 (Vercel + Supabase + Clerk)
- Annual platform cost
- 0 (auditable infra invoices)
- Billing disputes with clients
About Digital marketing agency (B2B services) client
Bluefinch Studio (name changed) is a digital marketing agency (b2b services) team at the 14 staff · 9 active clients · 12 deployed apps stage. They built their product with Base44 and shipped it to pilot users before discovering that the generated scaffolding masked a set of production-grade failures. The engagement that followed was scoped as Platform Escape / Migration (retainer × 12) ($9,999 per app · scoped multi-app retainer).
Audit findings on day zero
What the first production-readiness pass uncovered before a single line of code was changed. Each finding is a specific Base44failure mode we’ve seen repeat across engagements.
- F01
Base44 has no meaningful code export
The export feature produced a ZIP of JSON definitions — not runnable code. The agency could back up configurations but could not deploy a single app anywhere else without a rewrite. This is the documented Base44 lock-in pattern founders flag across Trustpilot and Reddit. When the agency director investigated the export ZIP for the first time, he discovered that even the JSON references were keyed against Base44's internal data model — the schema names, the action handlers, the field IDs were all platform-internal identifiers with no public documentation. There was no third-party tool that could ingest the export and produce something runnable; the export was effectively a backup the agency could not restore from anywhere except Base44 itself.
- F02
Credit billing misfired across three clients
Two clients received invoices triple what their usage justified; one was under-billed for two months and then back-billed in a single correction. The agency absorbed the reputational damage. There was no line-item ledger clients could audit.
- F03
A 3x platform price hike was announced with 90 days' notice
At the new rate, four of the 12 apps would become loss-making on the agency's fixed per-client retainer. Passing the cost through risked two of the three largest-account contracts.
- F04
Authentication was shared-tenant
Users of client A's app could, in theory, be reassigned to client B's app through a Base44 admin flow the agency didn't control. No client had signed a contract aware of this.
- F05
No git, no staging, no rollback
Changes were made in Base44's UI on production. A director had once broken a client's lead-capture page for six hours at 11pm before finding a Base44 support rep who could restore it.
Root cause of the Base44 failure mode
The agency's core problem wasn't Base44's feature set — it was that every client app the agency 'owned' was actually co-owned by Base44. The platform had done the job it was hired to do (ship 12 working client tools fast, without the agency hiring engineers) but had made every app an obligation instead of an asset. The causal chain: no-code platform convenience → zero portability by design → agency's margin and client relationships depend on the platform's pricing and uptime → platform announces price hike, credits misfire, agency has no exit. The fix wasn't a single migration; it was 12 migrations run as a coordinated programme, sequenced by client risk, on a shared architecture the agency could operate in-house afterwards. The strategic insight that justified the engagement budget was that the agency's real business asset was the relationships and the operational know-how, not the tooling — and as long as the tooling sat on Base44, that asset was hostage to a vendor with no contractual obligation to the agency. Every month spent on the old platform was rent paid on a depreciating lease. Migration was not a cost; it was a balance-sheet conversion from rented to owned.
How we fixed the Base44 rescue stack
Each step below is one remediation workstream from the engagement. In cases where the underlying data includes before/after code vignettes, those render inline; otherwise we describe the change in prose.
- 01
Week 0: Audit and architecture. Mapped all 12 apps by feature surface, authentication pattern, data volume, and client SLA. Grouped them into three archetypes (lead-capture, internal dashboard, campaign portal). Designed one reusable Next.js template per archetype to avoid per-app bespoke work.
- 02
Week 1: Built the shared platform. A Vercel team, a GitHub mono-repo with per-app deployments, a Supabase project template (one project per client for data isolation), a Clerk organisation per client for auth tenancy, Sentry + Resend at the agency level. Ran the first app end-to-end as the template proof.
- 03
Weeks 2–4: Migrated the four lead-capture widgets (fastest archetype). Each took 3–4 working days: data export via Base44 admin + Supabase import, form-endpoint reimplementation, domain DNS cutover at midnight, 48-hour monitoring. Zero client-visible downtime across all four.
- 04
Weeks 4–7: Migrated the five internal dashboards (medium complexity). Reimplemented role-based access, CSV exports, and two custom reporting flows. Built a shared `@bluefinch/dashboard-kit` package so future clients inherit the work.
- 05
Weeks 7–9: Migrated the three campaign portals (highest complexity — multi-user, file uploads, per-campaign branding). Used Supabase Storage for assets, Clerk organisations for per-campaign user pools, and a per-tenant theming system that preserved each client's visual identity.
- 06
Week 9: Cancelled Base44. Ran a two-week overlap where DNS continued to resolve Base44 endpoints as a safety net. Took down the last Base44 app on day 63.
- 07
Week 10: Handoff. Documented the mono-repo, the three archetypes, the per-client project template, the on-call runbook, and a two-day workshop for the agency's two internal technical staff. Wrote a pricing model for future client apps based on real infrastructure cost ($18–$45/month per app on Vercel + Supabase) plus agency margin.
- 08
Bonus week: built a one-page client communication template the account managers could use to explain the migration without alarming the client. The template framed the move as a security and reliability upgrade ('moving from a multi-tenant platform to dedicated infrastructure for your data') rather than a vendor escape. Six clients responded positively to the proactive note; two asked about extending their retainer to cover quarterly upgrades on the new stack.
- 09
Bonus week: documented a 'reverse migration' rollback plan for the first three apps just in case a client objected after cutover. The plan was never invoked, but having it in writing let the directors approve cutovers with materially less anxiety, which kept the project moving on schedule.
“We'd built a real agency business on a platform we didn't own. When the price-hike email arrived I realised we had 90 days to stop renting our entire book. Afterbuild Labs gave us back our clients' apps and a template we now use on every new engagement. We don't build on someone else's platform anymore.”
Outcome after the escaped rescue
Every metric below was measured directly — RLS coverage via pgTAP, webhook success via Stripe dashboards, response times via production APM, MRR via Stripe billing.
| Metric | Before | After |
|---|---|---|
| Client apps migrated | 0 / 12 | 12 / 12 |
| Client churn during migration | — | 0 |
| Downtime across 12 cutovers | — | < 9 minutes total |
| Annual platform cost | $82,800 (Base44, post-hike) | $14,400 (Vercel + Supabase + Clerk) |
| Billing disputes with clients | 3 in 18 months | 0 (auditable infra invoices) |
| Tenant isolation on auth | Shared, not guaranteed | Per-client Clerk org, contractually isolated |
| Time from kick-off to Base44 cancellation | — | 63 days |
| Net annual savings, year 1 | — | $68,400 |
“We'd run the three-archetype clustering in week zero, not week one. The agency and our team spent part of week one relitigating which apps 'belonged together'; that could have been one half-day workshop before the engagement started.”
- →We'd involve the agency's account managers in the cutover schedule from day one. On two cutovers we scheduled DNS changes that overlapped a client's scheduled campaign launch — caught in time, but only because an AM happened to mention it in a standup.
- →We'd productise the per-client Supabase + Clerk scaffold as a `create-bluefinch-client-app` CLI before the engagement ended, not after. The agency's internal staff used hand-written setup notes for their first post-engagement client; a CLI would have prevented a naming-convention drift we had to clean up later.
- →We'd negotiate the Vercel team plan billing migration through the agency's accounting workflow before the engagement started. Bluefinch's bookkeeper had to retroactively categorise three months of invoices because the new infrastructure spend hit a different cost-of-goods line than the old Base44 lump sum. A pre-engagement chat with the bookkeeper would have saved her a half day in March.
- →We'd produce a written client-by-client risk score for each migration before scheduling. We did this informally and our judgement was correct in 11 of 12 cases — the twelfth (a campaign portal with nine concurrent active campaigns) needed an extra week we hadn't budgeted, and we ate the cost. A formal scoring rubric would have let us flag that one in week zero.
How to replicate this Base44 rescue
The same engagement path runs across every digital marketing agency (b2b services) rescue we take on. Start with the diagnostic, then route into the service tier that matches the breakage surface.
Similar digital marketing agency (b2b services) rescues
Browse the full archive of Base44 and adjacent AI-builder rescue write-ups.
Related industry deep-dive
Agency client portals, internal dashboards, and lead-capture widgets share the same multi-tenant and auth-isolation concerns as any B2B SaaS. The vertical page walks the production-readiness checklist we apply across per-client deployments, Clerk organisations, and Supabase tenancy — the same scaffold Bluefinch now reuses on every new engagement.
Got a broken Base44 app that looks like this one?
Send the repo. We'll tell you what it takes to ship — in 48 hours, fixed fee. Free diagnostic, no obligation.
Book free diagnostic →