Why Migrate a Niche Portal?

When we first launched AiSalonHub — a niche portal connecting nail salon owners with AI-powered tech tools — we used Lovable.dev. It was fast to prototype, and we got a landing page up in hours. But as the vision grew from a simple landing page into a full CMS with service comparisons, product listings, and dynamic blog content, the limitations became impossible to ignore.

AiSalonHub needed to be more than a brochure. It needed to be a living platform where salon owners could compare tools, read reviews, and discover AI solutions for their business. Lovable.dev is excellent for MVPs, but for a data-driven niche portal, we needed: custom schema design, dynamic content management, server-side rendering for SEO, and zero-cost scaling. EmDash on Cloudflare Workers delivered all of that.

The decision to migrate wasn't driven by dissatisfaction with Lovable.dev — it was driven by ambition. We wanted the ability to define our own data types, manage content through a real admin interface, and serve pages at edge-level speed. Those requirements pointed directly to EmDash.

The Migration Playbook

Step 1: Schema-First Design

Before writing a single line of code, we designed the data model. AiSalonHub's core value is comparison — helping salon owners decide between tools like scheduling software, POS systems, and AI booking assistants. That meant we needed:

- A **services** collection for salon tech categories

- A **products** collection for individual tools with pricing, features, and ratings

- A **comparisons** collection to surface side-by-side breakdowns

- A **posts** collection for SEO blog content

- A **pages** collection for static content (about, contact, FAQ)

EmDash's seed file system made this trivial. We defined all five collections in `seed/seed.json`, complete with field types, taxonomies, and demo content. The `repeater` field type handled simple string arrays like feature lists and tech stacks, while `json` fields handled complex nested comparison data. This schema-first approach meant the data model was locked in before any UI work began.

Step 2: D1 as the Backbone

Cloudflare D1 is the SQLite-compatible database that powers AiSalonHub. With D1, every query runs at the edge — there's no cold-start database connection, no connection pooling to manage, and no regional latency. For a niche portal targeting local businesses (nail salons), edge-speed matters for SEO. Google Core Web Vitals reward fast server response times, and D1 delivers sub-10ms queries for simple lookups.

```

D1 Query Performance on AiSalonHub:

- Single service lookup: 0.3ms

- Comparison with JOINs: 1.2ms

- Blog listing with pagination: 0.8ms

- Full-text search across products: 4.5ms

- Average query across all endpoints: 1.1ms

```

D1 also eliminated operational overhead. No database server to manage, no connection pooling, no read replicas. The data lives at the edge and the Workers runtime handles the rest. For a bootstrapped project, this is a game-changer.

Step 3: From workers.dev to Custom Domain

The trickiest part was the DNS migration. AiSalonHub's custom domain (`aisalonhub.com`) originally pointed to Lovable.dev's infrastructure. Cloudflare's wrangler CLI detected the externally managed DNS records and refused to route traffic. The fix was straightforward once we understood it:

1. Remove the external DNS records (A, CNAME) from the domain registrar

2. Add the domain to Cloudflare's DNS management

3. Deploy with `npx wrangler deploy`

4. The worker automatically provisions a custom certificate via Cloudflare's edge network

After the migration, the site loaded in under 400ms total — including D1 initialization, page rendering, and response delivery. Server-timing headers showed just 26ms for database init and 3ms for page render. The worker startup time clocked in at 109ms, well within acceptable thresholds.

Marketing Win: Niche Positioning

The migration from Lovable.dev to EmDash wasn't just a technical upgrade — it was a marketing decision. Here's the breakdown:

| Factor | Lovable.dev | EmDash + Cloudflare Workers |

|--------|-------------|---------------------------|

| Content management | Static pages only | Full CMS with admin UI |

| SEO capability | Client-side rendering | SSR with proper meta tags |

| Schema flexibility | Fixed templates | Custom collections and fields |

| Scaling cost | Per-user pricing | Pay-per-use (D1 + Workers) |

| Speed at edge | Region-limited CDN | Global edge network |

| Content types | Pages only | Collections, taxonomies, widgets |

For a niche portal targeting a specific vertical (nail salon tech), owning your content infrastructure is a competitive advantage. You can iterate faster, optimize for niche keywords, and build custom features that general-purpose tools can't match. The ability to add a new collection type — comparisons, for example — and have it immediately available across the entire site is something no template-based platform offers.

What's Next for AiSalonHub

The migration is live. Now we're building out the comparison engine — allowing salon owners to filter tools by pricing model, integration capabilities, and user ratings. Each comparison page is a structured-data goldmine for local SEO, and EmDash's Portable Text rendering makes it easy to generate rich, linkable content that Google rewards.

If you're running a niche portal and hitting Lovable's limits, the EmDash + Cloudflare Workers stack is your next step. Full CMS capabilities, edge-speed delivery, and zero operational cost — the same infrastructure that powers ai-kit.net now powers aislonhub.com. The migration took one evening and cost exactly $0 in platform fees.