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.