The Problem: Niche Market, Zero Discoverability

When we started building tools for the nail salon industry, we hit a wall that has nothing to do with code: **discoverability**. Our Nail Try-On AR product was solid. The Playable Ad Studio was polished. But salon owners don't search for "AR nail try-on" — they search for "salon booking software" or "nail salon marketing tools."

We needed a hub that could:

- Rank for salon-related keywords

- Showcase our AI products in context

- Compare us against the market leaders (Booksy, Vagaro, Square)

- Generate leads without a sales team

- Cost less than $10/month to operate

The answer: **AiSalonHub.com** — a niche portal built entirely on EmDash CMS, running on Cloudflare Workers with D1 storage and zero monthly infrastructure costs.

Architecture at a Glance

```

User -> Cloudflare CDN -> Astro 6 SSR (Workers) -> EmDash CMS -> D1 Database

|

Auto Blog SEO Plugin

|

R2 Media Storage

```

Every page is server-side rendered at the edge. Content is managed via EmDash collections — not hard-coded HTML. Blog posts are generated through our Auto Blog SEO pipeline, the same one powering ai-kit.net.

Why EmDash CMS Was the Right Call

Building AiSalonHub as a static site would have meant manual HTML updates for every new service comparison, pricing change, or blog post. Instead, we used EmDash CMS with four core collections:

```json

{

"collections": [

{"name": "services", "fields": [

{"key": "name", "type": "string"},

{"key": "price_range", "type": "string"},

{"key": "features", "type": "repeater"},

{"key": "pros", "type": "repeater"},

{"key": "cons", "type": "repeater"}

]},

{"name": "products", "fields": [

{"key": "name", "type": "string"},

{"key": "tech_stack", "type": "repeater"},

{"key": "platforms", "type": "repeater"}

]},

{"name": "comparisons", "fields": [

{"key": "items", "type": "json"}

]},

{"name": "posts", "fields": [

{"key": "title", "type": "string"},

{"key": "content", "type": "portableText"}

]}

]

}

```

The result: a single developer can manage the entire content strategy — no CMS admin panel needed for the initial seed, no database migrations, no deploy cycles for content changes.

The Hybrid Dev+Marketing Payoff

Here is where the "hybrid" strategy pays off. Instead of writing a marketing brief and handing it to a developer, we:

1. **Built the comparison tool** — a dynamic table that pulls from D1 and renders service-to-product mappings. This is the highest-converting page on the site.

2. **Used the Auto Blog SEO plugin** — same pipeline as ai-kit.net. Two sites, one content engine. Blog posts about "salon marketing" rank and cross-link to our product pages.

3. **Leveraged Cloudflare Workers data locality** — D1 queries run at the edge. A visitor from Tokyo gets the same sub-50ms page load as someone in Chicago.

```python

The comparison engine -- runs at the edge, no cold starts

def get_comparison_matrix(db):

services = db.prepare("SELECT * FROM services").all()

products = db.prepare("SELECT * FROM products").all()

matrix = []

for service in services.results:

row = {"service": service["name"]}

for product in products.results:

row[product["name"]] = score_compatibility(service, product)

matrix.append(row)

return matrix

```

Results After 2 Weeks

| Metric | Value |

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

| Build time from zero to deploy | ~4 hours |

| Monthly infrastructure cost | $0 (free tier Workers + D1) |

| Pages indexed by Google | 14 (all seed pages) |

| Blog posts published | 5 (via Auto Blog pipeline) |

| Cross-links to AIKit products | Built into every comparison page |

What We Would Do Differently

If we were starting over, three things:

1. **Seed with more data upfront.** Our initial 18KB seed file got us live, but we should have pre-loaded 5+ blog posts and 10+ service entries to look established from day one.

2. **Set up analytics before launch.** We deployed without tracking and spent 3 days wondering if anyone was visiting. Cloudflare Web Analytics is free and takes 5 minutes to add.

3. **Write the developer story first.** The "how we built this" post (this one!) should have been the first blog post, not the fifth. People love infrastructure stories, and they rank for "Cloudflare Workers CMS" keywords that bring in the exact audience we want.

Takeaway

AiSalonHub proves that a single developer can build, deploy, and maintain a niche content portal for **free** using modern edge infrastructure. The hybrid dev+marketing approach — building tools that double as marketing assets — turns engineering work into lead generation without a separate sales team.

If you run a niche SaaS product, ask yourself: *Could a content portal built with your own tools outperform a paid ad campaign?*

Try It Yourself

Want to build your own niche portal? The stack is entirely open and accessible:

1. **EmDash CMS** — Free and open-source, runs on any Cloudflare Workers project

2. **Cloudflare D1** — Serverless SQL database, 5GB storage on free tier

3. **Auto Blog SEO plugin** — Same publishing pipeline used in this article

4. **Wrangler CLI** — One command to deploy to the edge

The entire AiSalonHub codebase, minus the seed data, is under 500 lines of Astro components and TypeScript. The most complex part is the comparison matrix, which is a single 60-line SQL query wrapped in a Worker endpoint.

The Bottom Line

Hybrid dev+marketing is not a buzzword. It is a cost structure decision. When your infrastructure costs $0/month and your publishing pipeline is automated, you can afford to experiment with 10 content portals where a traditional startup would budget for one.

AiSalonHub runs on the same D1 database pattern as ai-kit.net, the same Auto Blog SEO plugin, and the same wrangler deploy workflow. The only difference is the seed data and the domain. That repeatability is the real superpower.