26 Oct 2025 // 8 min read
Webflow CloudAstroNeonMVP DevelopmentProgrammatic SEO technical

Scaling beyond Webflow CMS: a hybrid architecture

How I built a database-driven data platform inside a Webflow site using Webflow Cloud, Astro, and Neon Postgres.

Webflow’s CMS has a 10.000 item limit. For most sites, that’s plenty. But when a client asked if I could bring their financial data platform into Webflow, they had 10.000+ company records, complex relational data, and needed advanced filtering. The CMS was never going to work.

This is how I built a database-driven data product that lives inside a Webflow site, using Webflow Cloud, Astro, and Neon Postgres.

What you’ll learn:

  • How Webflow Cloud lets you run a full-stack app as a subfolder of an existing Webflow site
  • When to skip Webflow CMS entirely and use a real database
  • How to build programmatic SEO pages from database queries
  • Why I tried DevLink and abandoned it

The problem

Dialectica is an information services company. Their product, Origin, is a deal intelligence platform used by PE, VC, and corporate strategy professionals. They wanted a public-facing version: a free, searchable slice of their company database, accessible at dialectica.io/origin.

The requirements:

  • 10.000+ company records (starting with ~930, growing)
  • Complex data: companies, industries, financials, investors, competitors, team members
  • Advanced filtering: industry, location, ownership type, revenue range, YoY growth
  • Data masking: show enough to entice, hide enough to convert
  • Programmatic SEO: every company and industry needs its own indexable page
  • Must live as a subfolder of their existing Webflow marketing site

Webflow CMS caps at 10.000 items. Even at that limit, you can’t do relational queries, range filters, or dynamic masking. This needed custom web development, not CMS configuration.

Why Webflow Cloud

Webflow Cloud launched out of beta at exactly the right time. It does something no other Webflow feature does: lets you deploy a full-stack application, built with any framework, as a subfolder of an existing Webflow site.

Under the hood, it runs on Cloudflare Workers. You connect a GitHub repo, push code, and Webflow Cloud deploys it to the edge. The result: dialectica.io is a Webflow site. dialectica.io/origin is an Astro app. Same domain, same navigation, completely different stack underneath.

For Dialectica, this was critical. They didn’t want a separate subdomain. They didn’t want to rebuild their marketing site. They wanted Origin to feel like part of the same website. Webflow Cloud made that possible without any proxy hacks or DNS tricks.

The stack

Astro for the frontend. Server-side rendering on Cloudflare Workers, with React islands for interactive components. I chose Astro because it ships zero JavaScript by default and only hydrates what needs interactivity. For a data-heavy site with hundreds of pages, that matters.

Neon for the database. Serverless Postgres with an HTTP driver that works natively in Cloudflare Workers. No WebSocket workarounds, no connection pooling headaches. We started with Supabase but switched to Neon because database backups before data migrations were simpler.

Python for data migration. Dialectica doesn’t expose an API. They export JSON files with company data, and I run a Python script that cleans, structures, and imports everything into Neon. Two-pass process: core company data first, then relationships (industries, investors, financials, competitors).

React for interactive components. The filter system uses Radix UI primitives: combobox filters for industry, location, and ownership type, plus dual-handle range sliders for revenue and YoY growth. These dispatch custom events that Astro’s View Transitions router picks up to navigate with new URL parameters. The filtering feels instant, but every query hits the database at the edge.

I tried using Webflow DevLink to sync components from Dialectica’s existing site into Astro. The idea was to reuse their header, footer, and card components directly.

It didn’t work out. The main issue was their navigation. The header has custom JavaScript for submenu transitions that the original developer built. DevLink syncs the visual component but not the custom code attached to it. Same problem with several other components: they relied on Webflow custom code that doesn’t travel with DevLink exports.

I could have rebuilt the custom code to work with the DevLink components, but at that point I’d be recreating most of the logic anyway. So I went with Astro components styled with Tailwind CSS. Faster to build, easier to maintain, and I had full control over markup and behavior.

My takeaway: DevLink makes sense when your Webflow components are self-contained. No custom code, no complex interactions. For anything beyond that, building framework-native components is less work in the long run.

Data masking for freemium

This was Dialectica’s idea and one of the more interesting technical challenges. They wanted to show enough data to demonstrate value, but mask the specifics so users would need to sign up for the full product.

I built two layers:

Server-side masking runs before any data reaches the browser. Revenue figures like $565M become $5••M. Investor names get character-replaced. Dates get obscured. The masking preserves the format so the page still looks like real data, but the actual values are hidden. Scrapers and LLMs reading the HTML only see masked content.

CSS blur adds a visual layer on top. The server-side masking is the real protection; the blur is the visual signal that says “this data is locked.”

A lead capture form triggers based on engagement: scroll past 50-75% of the page or spend 45-60 seconds reading. The thresholds are randomized per session, with a 24-hour cooldown via localStorage so returning visitors aren’t spammed.

Programmatic SEO at scale

This was the part that made the MVP worthwhile from a business perspective. Every company record generates its own page with proper meta tags, JSON-LD structured data, and canonical URLs. Every industry gets a landing page. Then I generate combination pages: industry + location (e.g., /industry/enterprise-software/location/usa) and industry + ownership type.

Each programmatic page includes the full filter UI, so users can keep exploring from any entry point. A dynamic XML sitemap lists every URL. The result is hundreds of indexable pages, all generated from database queries.

Google has indexed the pages and some Origin URLs are already ranking on the first page. For a platform that didn’t exist six months ago, that’s the SEO strategy working as designed.

AI made this possible

I’ll be direct about this: I had never built an Astro site before this project. Never used Webflow Cloud. Never set up a serverless Postgres database. And I built the whole thing solo, part-time, alongside my regular maintenance retainer with the same client.

The first version shipped in under two months. That timeline only happened because I used Claude Code throughout the entire build. It helped me write TypeScript logic for edge-compatible database queries, Python scripts for data migration, React components with Radix UI, and debug the quirks of running Postgres in a Cloudflare Workers environment.

AI didn’t design the architecture or make the product decisions. But it let me execute at a speed and across a breadth of technologies that would have been impossible otherwise. For a solo developer offering MVP development services, that changes what you can promise a client.

What I’d do differently

Skip DevLink earlier. I spent time trying to make it work when the signs were clear. If a Webflow site uses significant custom JavaScript in its components, plan for framework-native components from the start.

Start with Neon. The Supabase-to-Neon migration wasn’t painful, but it was an unnecessary step. Neon’s serverless driver and backup workflow are a better fit for Cloudflare Workers projects.

Build an admin interface sooner. Right now, adding companies means running a Python script. It works, but a simple admin panel would make the ongoing data updates smoother. That’s next on the roadmap.

Key takeaways

  • Webflow Cloud is real hybrid architecture. Keep the marketing site in Webflow, run a full-stack app on the same domain. No subdomains, no proxy hacks.
  • Skip the CMS when the data is complex. Webflow CMS works for blogs and portfolios. For relational data with filtering, sorting, and dynamic pages, use a database.
  • DevLink has limits. If your Webflow components depend on custom code, you’ll rebuild them in your framework anyway. Budget for that.
  • Programmatic SEO needs a database. You can’t generate hundreds of optimized pages from Webflow CMS. Server-side rendering from a real database makes it straightforward.
  • AI extends what a solo developer can deliver. This project spanned Astro, React, Python, PostgreSQL, and Cloudflare Workers. AI tooling made it possible to work across all of them without being an expert in each one.

Read the full Dialectica case study for the project overview and business results.

Frederico Leonardo
Frederico Leonardo
Founder & Lead Developer

25+ years building for the web. Specialises in hybrid architectures and pushing platforms beyond their limits.