How We Run SaaS With Zero Hosting Costs Using Cloudflare Workers

By Jay DurangoMarch 7, 202612 min read

People ask us the same question every time we tell them our software is one-time purchase: "How do you keep the lights on?"

The answer is stupid simple: there are no lights to keep on. Our entire backend infrastructure runs on Cloudflare Workers' free tier. Our monthly hosting bill is $0. Not "almost zero" — literally zero dollars.

This post is a full technical breakdown of the architecture that makes one-time purchase software economically viable. If you're a developer thinking about building products, this is the playbook.

The Problem With Traditional SaaS Infrastructure

Most SaaS companies run on AWS, GCP, or Azure. Here's what that typically costs for a small-to-medium application:

ComponentAWS/GCP/Azure CostOur Cost
Compute (EC2/App Engine/VMs)$50-500/mo$0
Database (RDS/Cloud SQL)$30-200/mo$0
CDN/Static Assets$10-50/mo$0
Load Balancer$18-25/mo$0
SSL Certificates$0-10/mo$0
Monitoring/Logging$10-50/mo$0
Email (SES/SendGrid)$10-30/mo$0
Total$138-865/mo$0/mo

Those costs are why SaaS companies charge monthly. They have to — their infrastructure bills are recurring, so their revenue must be too. The subscription model isn't a business innovation; it's a cost structure consequence.

Eliminate the recurring costs and you eliminate the need for recurring revenue. That's the entire thesis behind JRD Connect's pricing model.

The Cloudflare Workers Architecture

Here's the stack, component by component:

1. Frontend: Electron Desktop Apps

Our products — Scan0tron, JRD Garage, SiteSweep — are desktop applications built with Electron. They run natively on Windows and macOS.

Why desktop? Because desktop apps don't need a server to render UI. The application lives on the user's machine. There's no server-side rendering cost, no bandwidth charges for serving pages, and no scaling challenges during traffic spikes — because there are no traffic spikes. Each user runs their own instance locally.

Desktop-first also means offline capability. Your tools work even when the internet doesn't.

2. Backend: Cloudflare Workers

When our apps need to talk to a server — license validation, payment processing, email delivery — they hit Cloudflare Workers.

Cloudflare Workers run on Cloudflare's edge network across 300+ data centers worldwide. They're serverless functions written in JavaScript that execute in under 10ms. And on the free tier, you get:

100,000 requests per day is an enormous amount for a desktop software business. Each user might make 10-20 API calls per day (license check on launch, occasional sync, payment processing). That means the free tier supports roughly 5,000-10,000 daily active users before we'd need to upgrade.

3. Database: Workers KV + D1

We use Cloudflare Workers KV for key-value data (license keys, configuration, feature flags) and D1 for relational data when needed. Both are included in the free tier.

Workers KV is eventually consistent with global replication — meaning a license key activated in New York is readable from Tokyo within seconds. For our use case, eventual consistency is perfectly fine. We're not running a stock exchange.

Most data lives locally on the user's machine. The cloud backend only stores what's absolutely necessary — license info, anonymized analytics, and payment records. This is a privacy advantage too: we don't have your business data on our servers because we don't need it.

4. Payments: CardPointe

Payment processing goes through CardPointe's hosted payment page. The payment form is served by CardPointe (not us), processed by CardPointe (not us), and the card data is stored by CardPointe (not us). We receive a webhook confirming the transaction and activate the license.

Our role in the payment flow is essentially: receive confirmation, write license key to KV, send activation email. Three operations. Microseconds of compute.

5. Email: MailChannels via Workers

Transactional emails — purchase confirmations, license delivery, password resets — are sent through MailChannels via a Cloudflare Worker. MailChannels offers free email sending for Cloudflare Workers users. No SendGrid subscription, no AWS SES costs.

We send maybe 20-50 emails per day. The free tier handles millions.

6. Static Site: Cloudflare Pages

This website — jrdconnect.com — is a static HTML site hosted on Cloudflare Pages. Free. Unlimited bandwidth. Unlimited requests. Global CDN. Automatic deployments from git.

No WordPress. No CMS. No database-backed dynamic pages. Just HTML, CSS, and JavaScript served at the edge. The site loads in under 1 second from anywhere in the world.

Why This Works (And Why Others Don't Do It)

The reason most companies don't run this architecture isn't technical — it's incentive misalignment.

  1. VC-backed companies need MRR metrics. Investors want to see Monthly Recurring Revenue because it makes valuations predictable. One-time purchase revenue is "lumpy" and harder to model. VCs hate lumpy.
  2. Cloud-native architectures create cloud dependency. If your product is a web app, you need servers 24/7. Desktop apps shift compute to the user's machine, eliminating that dependency.
  3. Most developers don't know about edge computing free tiers. The Cloudflare Workers free tier is absurdly generous. Most developers default to AWS because that's what they know, then charge subscriptions to cover the bill.
  4. One-time pricing requires capital efficiency. You can't burn money on marketing and make it back over 24 months of subscription revenue. Every sale has to be profitable on day one. That's actually a feature, not a bug — it forces discipline.

The dirty secret of SaaS: most of your subscription fee goes to infrastructure, investor returns, and sales teams — not product development. When you eliminate all three, a one-time $49-99 price point is not just viable, it's profitable.

The Math: Traditional SaaS vs Our Model

MetricTraditional SaaSJRD Connect Model
Monthly infrastructure$200-1,000/mo$0/mo
Revenue per customer$30-100/mo recurring$49-99 one-time
Months to profit per customer3-12 monthsImmediately
Customer churn impactRevenue lossNone — already paid
Server scaling costsGrows with usersStays at $0
Breakeven users20-100+ users1 user

We're profitable from customer number one. There's no "scale to survive" pressure, no runway clock ticking, no pivot-to-enterprise-to-raise-prices desperation move. Sell a product, make money, repeat.

Can This Scale?

The most common pushback: "This only works while you're small."

Let's do the math. If we outgrow the Cloudflare Workers free tier (100,000 requests/day), the paid plan is $5/month for 10 million requests. Ten million. Per month. For five dollars.

To hit 10 million requests/month, we'd need roughly 15,000-20,000 daily active users. At $49-99 per sale, that's $735,000 to $1,980,000 in revenue generated by those customers. The incremental cost to serve them? Five dollars a month.

Even at scale, the hosting cost is a rounding error. The architecture doesn't just work while we're small — it gets more economically efficient as we grow.

The Takeaway for Builders

If you're building a software product and defaulting to a subscription model because "that's how SaaS works," take a step back and ask why.

The answers might surprise you. The technology exists to build profitable software businesses with zero recurring infrastructure costs. Most people just don't realize it yet.

See the products built on this stack

Scan0tron, JRD Garage, and SiteSweep — all one-time purchase, all running on $0/month infrastructure.

Browse Products

Read more about our approach: Why We Don't Charge Monthly Fees covers the business philosophy, and How SiteSweep Scores Locations shows one of these products in action.

— Jay Durango, JRD Connect