Toggle Theme

A Solo Founder's Deployment Stack: Cloudflare, Vercel, or Railway?

Easton editorial illustration: central rounded deployment switchboard with four clearly separated runtime lanes, four distinct endpoint modules: static page, lightning function, browser app window, container worker

"Cloudflare's official Pages limits document lists current build counts, concurrent builds, file limits, asset size, custom domains, and the rule that Pages Functions consume Workers quotas."

The deployment dashboard shows four services: blog, tool-api, dashboard, and worker-daily-report. The first two run on Cloudflare, the third on Vercel, and the last is still caught between Railway and Workers. Each one fails at a different boundary: the blog is nearing its build quota, the API exceeds Workers CPU time, the dashboard has triggered a Vercel billing alert, and the daily report needs a choice between a container and a function.

A solo business rarely has only one workload. Content sites, browser tools, SaaS dashboards, and scheduled jobs do not naturally fit one runtime. The useful comparison is therefore not which vendor “wins,” but which platform fits each service and where its cost and maintenance thresholds sit.

1. Four services, four different deployment constraints

blog is an Astro static site on Cloudflare Pages. It is approaching the Free plan’s 500 builds per month because every content, style, or configuration change can trigger a deployment. The 20,000-file ceiling is still distant, but comments and search implemented with Pages Functions already consume Workers quotas, so static and dynamic limits must be tracked separately.

tool-api is a small API on Workers that handles sign-in and persistence. As traffic grows, 100,000 requests per day may be insufficient, and compute-heavy requests can exceed the Free plan’s 10 ms CPU allowance. Moving to Workers Paid starts with a $5 monthly subscription, and its request and CPU model is different from static hosting.

dashboard is a full-stack Next.js app on Vercel. Preview deployments are convenient, but the usage page separates Functions, Images, Builds, Analytics, and other products. Additional paid team seats cost $20 per month each. Hobby includes 4 hours of Active CPU, 360 GB-hours of provisioned memory, and 1 million invocations, so actual cost depends on runtime and image usage.

worker-daily-report creates and emails a report every day. Workers can run scheduled code, but a long or compute-heavy job may not fit its CPU and memory boundaries. Railway can run a Node process or scheduled service, but RAM, CPU, egress, and volume usage become operational responsibilities. Hobby costs $5 per month and includes $5 of resource usage; consumption above that amount is billed separately.

The shared lesson is simple: workload shape determines platform fit. Splitting static content, light functions, full applications, and long-running jobs is often more reliable than forcing them into one provider.

2. The core constraints of all four platforms

2.1 Cloudflare Pages: free static assets, Workers quotas for functions

Cloudflare Pages is primarily static asset hosting with global delivery. Current Free plan limits include:

  • 500 builds per month; Git pushes and manual builds consume the allowance.
  • 20,000 files per site; image-heavy or programmatically generated sites must watch the total.
  • A 25 MiB maximum for a single asset; large video or data files belong in object storage.
  • 100 custom domains per project on Free.
  • A 20-minute build timeout.

Pages Functions requests and CPU usage count toward the Workers plan rather than the static Pages allowance. In practice:

  • Static assets are delivered without metered transfer within Pages limits.
  • Comments, search, API proxies, and other functions use Workers quotas and pricing.
  • Astro or Hugo static sites fit naturally; Next.js projects require a check of current adapter and runtime support.

Pages is a strong default for content sites and static tools. Add a few functions when the limits work, but evaluate a dynamic or compute-heavy backend as a separate Workers workload.

2.2 Cloudflare Workers: lightweight functions with request and CPU boundaries

Workers is Cloudflare’s dynamic runtime for light APIs, edge logic, and tool backends. The current Free and Standard boundaries include:

  • 100,000 requests per day on Free.
  • 10 ms of CPU time per HTTP request on Free; waiting for network I/O does not itself consume CPU time.
  • A $5 monthly subscription for Workers Paid.
  • 10 million requests included per month on Standard.
  • 30 million CPU milliseconds included per month on Standard.
  • 128 MB of memory per isolate on both Free and Paid.

Good fits include:

  • Lightweight APIs for authentication, lookups, and simple business rules.
  • Dynamic Pages Functions such as comments and search.
  • API proxies that add caching, routing, or authorization.

Poor fits include:

  • Long-running report generation and batch processing.
  • Heavy computation, large in-memory data processing, or ML inference.
  • Traditional connection-pool assumptions that do not match an isolate runtime.

Workers is a sensible backend for a small tool, but growth should be modeled in requests and CPU. Persistent processes and resource-heavy jobs should move to a runtime designed for them.

2.3 Vercel: excellent for Next.js, with more than a seat on the bill

Vercel provides the most integrated Next.js workflow and strong preview deployments. Hobby currently includes several function resources, while other usage can be billed separately:

  • 4 hours of Active CPU.
  • 360 GB-hours of provisioned memory.
  • 1 million function invocations.
  • Build usage at $0.0035 per CPU minute when on-demand concurrency or Elastic build machines apply.
  • Additional paid team seats at $20 per month.
  • Deployment rate limits of 100 per day on Free and 6,000 per day on Pro.
  • Upload rate limits of 5,000 per day on Free and 40,000 per day on Pro.

A Vercel bill can contain several categories:

  • Functions: CPU, memory, and invocations.
  • Images: transformations plus cache reads and writes.
  • Builds: CPU usage under billable build configurations.
  • Analytics: Web Analytics and Speed Insights.
  • Observability: event-based monitoring and related add-ons.

The main warning signs are:

  • Frequent previews increase build usage and deployment counts; billable build machines or concurrency can add cost.
  • Image optimization has its own included usage and on-demand rates.
  • Analytics and Observability have separate usage or add-on pricing.

Vercel is a practical first choice for a full-stack Next.js product, but the plan price is not a complete estimate. Watch each usage category and team seat independently.

2.4 Railway: a container runtime with resource-based billing

Railway is a PaaS for services, workers, and databases. It offers a fuller runtime than an edge function, while charging subscription and resource usage separately:

  • Hobby costs $5 per month; Pro costs $20 per month.
  • Hobby includes $5 of monthly resource usage.
  • Pro includes $20 of monthly resource usage.
  • RAM is priced at $10 per GB-month.
  • CPU is priced at $20 per vCPU-month.
  • Network egress is $0.05 per GB.
  • Volume storage is $0.15 per GB-month.
  • Free allows up to 0.5 GB RAM, 1 vCPU, and a 0.5 GB volume per service under its current default limits.

Railway still requires operational decisions:

  • Monitor actual RAM, CPU, egress, and volume usage.
  • Configure resource and log alerts.
  • Understand image-retention windows for rollback and rebuilds.
  • Define health checks, restart behavior, and backups.

The cost warning signs are:

  • Usage above the included $5 or $20 credit is charged as a delta.
  • Running services continue consuming RAM, CPU, and storage until stopped.
  • Egress and persistent volumes are separate billable resources.

Railway fits Node services, background jobs, and databases better than a short-lived edge function. It reduces infrastructure work, but it does not remove service ownership.

3. Workload-to-platform decision table

3.1 Content sites: blogs and documentation

Content sites are usually a solo founder’s first deployment. Most bytes are static, with only a few dynamic features.

WorkloadRecommended startMain threshold
Astro or Hugo static siteCloudflare Pages500 builds/month; 20,000 files
Next.js SSGCloudflare Pages or Verceladapter support, build time, build configuration
Comments or searchPages Functionsrequests and CPU count toward Workers

For Astro or Hugo, Pages provides global static delivery with limits that are normally sufficient for an early site. See the Cloudflare Pages deployment guide and Cloudflare Free limits for operational detail.

For Next.js SSG, verify current framework support and build behavior rather than relying on an old “supported” or “unsupported” claim. Vercel has the native workflow; Cloudflare may be attractive when the output is mainly static.

Comments and search can use Pages Functions, but their requests and CPU belong to Workers. Treat static delivery and dynamic execution as separate cost models.

3.2 Tool sites: static and dynamic

A small generator, converter, or single-page utility can be purely static; sign-in and persisted data make it a dynamic product.

WorkloadRecommended startMain threshold
Browser-only toolCloudflare Pagesbuilds and file limits
Lightweight dynamic APICloudflare Workers100,000 requests/day; 10 ms CPU on Free
Full-stack Next.js toolVercelFunctions, Images, Builds, and observability

A browser-only tool fits Pages because computation stays on the client. A small API fits Workers when each request remains light and stateless enough for an isolate runtime.

A full-stack Next.js tool fits Vercel’s framework workflow, but preview frequency, images, function runtime, and monitoring should be budgeted separately.

3.3 SaaS dashboards

A SaaS dashboard needs application logic, authorization, data access, and often collaboration.

WorkloadRecommended startMain threshold
Full-stack Next.jsVercelFunctions, Images, Builds, Analytics
Another frameworkWorkers or Vercelcurrent framework and runtime support
Team collaborationVercel or Railwayseats, workspace permissions, plan tier

Vercel is the straightforward start for a Next.js dashboard. Review Function execution, Image usage, preview Builds, Analytics, Observability, and team seats rather than treating Pro as an all-inclusive bill. The Cloudflare pricing comparison provides additional context.

For other frameworks, compare the current adapters and runtime features. Workers can fit edge-oriented logic; Vercel can fit supported serverless frameworks. Neither choice eliminates the need to model the actual backend.

Database hosting is a separate decision. Supabase, managed Postgres, D1, or Railway volumes have their own reliability and billing constraints, covered by the next article in this series.

3.4 Long jobs and container services

Report generation, file processing, queue consumers, and persistent APIs need a different runtime from a short function.

WorkloadRecommended startMain threshold
Node service or workerRailwayRAM, CPU, egress, volume
DatabaseRailway or a managed databasevolume cost and backup policy
Background jobRailwayusage alerts and restart behavior

Railway is a better start for a persistent Node process or worker because it can run a full runtime. That flexibility adds responsibility for limits, logs, health checks, restarts, and backups.

A Railway volume can host persistent data, but storage price is only one part of a database plan. Backups, restore testing, and failure recovery must be designed separately.

For scheduled work, establish a usage alert and a maximum resource profile. Hobby includes $5 of usage, but an always-on or memory-heavy worker can exceed it.

4. Cost models and warning thresholds

4.1 Cloudflare cost model

Cloudflare separates Pages static delivery from Workers dynamic execution.

Pages static assets:

  • Static assets are delivered without usage-based transfer charges within the Pages product limits.
  • Near 500 builds per month, reduce unnecessary deploys and use build-ignore rules where appropriate.
  • Near 20,000 files, move large assets to object storage and control generated output.
  • Pages Functions use Workers quotas rather than a separate free dynamic allowance.

Workers execution:

  • Free includes 100,000 requests per day and 10 ms CPU per HTTP request.
  • Workers Paid starts with a $5 monthly subscription.
  • Standard includes 10 million requests per month.
  • Standard includes 30 million CPU milliseconds per month.

Cost thresholds:

  • Pages can stop accepting builds when hard project limits are reached.
  • Workers Free is useful at low traffic, but higher request or CPU usage requires Paid.
  • A static Pages budget does not imply that Pages Functions are also unmetered.

A common first stack is Pages for static content plus Workers Free for a small API. Model the switch to Paid before traffic or CPU makes it urgent.

4.2 Vercel cost model

Vercel separates several managed-infrastructure and developer-experience resources.

Hobby function resources:

  • 4 hours of Active CPU.
  • 360 GB-hours of provisioned memory.
  • 1 million invocations.
  • Builds cost $0.0035 per CPU minute when on-demand concurrency or Elastic build machines are selected.

Usage categories:

  • Functions: Active CPU, provisioned memory, and invocations.
  • Images: transformations, cache reads, and cache writes.
  • Builds: preview and production builds under billable machine or concurrency settings.
  • Analytics: Web Analytics and Speed Insights.
  • Observability: usage-based events and monitoring features.

Team seats:

  • Each additional paid seat costs $20 per month.
  • Seat pricing does not absorb unrelated infrastructure or add-on overages.

Cost thresholds:

  • Frequent preview deployments increase build usage and deployment counts.
  • Image processing has separate included amounts and on-demand rates.
  • Analytics and Observability need their own usage checks.
  • Function CPU, memory, and invocations should be monitored against the current plan.

The safe approach is to read the usage page by category. A Next.js workflow may save engineering time while still producing a multi-line infrastructure bill.

4.3 Railway cost model

Railway combines a subscription with metered resource usage.

Plans and included usage:

  • Hobby is $5 per month and includes $5 of resource usage.
  • Pro is $20 per month and includes $20 of resource usage.
  • Free provides up to 0.5 GB RAM, 1 vCPU, and a 0.5 GB volume per service, with a small monthly credit.

Resource rates:

  • RAM costs $10 per GB-month.
  • CPU costs $20 per vCPU-month.
  • Network egress costs $0.05 per GB.
  • Volume storage costs $0.15 per GB-month.
  • Deleted deployment images remain available only for the plan’s retention window.

Cost thresholds:

  • Usage above the included credit is billed as the difference.
  • An unstopped service continues to use RAM, CPU, and storage.
  • Egress and volumes can grow independently of the subscription.

Railway removes much of the VPS setup work, not the need to watch resources. Set alerts and know the rollback window before putting a persistent worker or database into production.

5. Maintenance: deployment frequency, logs, rollback, and collaboration

Build and deployment quotas matter most for frequently changing projects. Collaboration also introduces seats and permission management.

Deployment and build frequency

  • Cloudflare Pages Free allows 500 builds per month and one concurrent build; Git-based preview builds consume the build allowance.
  • Vercel allows 100 deployments per day on Free and 6,000 on Pro; frequent previews also increase build usage.
  • Railway does not publish the same kind of deployment-rate comparison here, but deleted images are only retained for a plan-specific rollback window.

The practical thresholds are Pages builds and Vercel deployments. Monitor them before they interrupt iteration, and check whether Vercel’s selected build machines or concurrency make CPU minutes billable.

Logs, rollback, and team access

  • Cloudflare Pages provides build logs, deployment history, and rollbacks; verify current account and permission details for collaborators.
  • Vercel provides preview deployments, deployment history, logs, Analytics, and paid seats; additional paid seats cost $20 per month.
  • Railway provides logs and metrics, while health checks, restart rules, backups, and workspace collaboration still need explicit configuration.

Choose the workflow that removes the most recurring work from the service that matters most. A good preview experience is valuable for a Next.js app; predictable static builds may matter more for a content site.

6. Next: databases, storage, and CI/CD

A deployment platform is only one layer of the stack. Database and storage choices, CI/CD, monitoring, and alerting still need their own decisions. The next article covers Supabase, Postgres, Railway volumes, object storage, and the trade-offs between them.

The goal is not to minimize the number of vendor logos. It is to place each workload in a runtime whose limits, bill, and operational responsibility you can explain before traffic grows.

Choose a first deployment path for a solo-founder business

Filter Cloudflare Pages, Workers, Vercel, and Railway by runtime shape, hard limits, billing model, and operational responsibility.

  1. 1

    Step 1: List every service

    Write down the content site, tool frontend, API, Next.js dashboard, cron jobs, workers, and databases without grouping them by vendor.
  2. 2

    Step 2: Label each runtime

    Mark each service as static, function, app, worker, or database, and note whether it needs a persistent process, full runtime, or local files.
  3. 3

    Step 3: Match a starting platform

    Start with Pages for static sites, Workers for light edge functions, Vercel for Next.js apps, and Railway for containers and long-running jobs.
  4. 4

    Step 4: Check hard limits

    Use current official documentation to verify builds, file counts, CPU, memory, deployment frequency, resource ceilings, and runtime compatibility.
  5. 5

    Step 5: Separate the billable units

    Estimate functions, builds, images, logs, seats, RAM, CPU, egress, and volumes separately instead of treating the plan price as total cost.
  6. 6

    Step 6: Define split triggers

    Write explicit triggers for adding a second platform, such as CPU limits, a persistent process, excessive build frequency, or a budget breach.

FAQ

Is Cloudflare Pages suitable for a SaaS product?
It works well for a static frontend or marketing site, but a complex SaaS backend usually also needs Workers, Vercel Functions, Railway, or an external database. Pages Functions consume Workers plan quotas.
Is Vercel or Cloudflare better for Next.js?
Vercel is usually simpler when native Next.js integration, preview deployments, and a full-stack workflow matter most. For mostly static projects or tighter Cloudflare integration, compare current framework support and costs feature by feature.
Is Railway a good backend and worker platform for a solo founder?
Yes, when an API or worker needs a full Node or Python runtime, a persistent process, or a container. You still own resource monitoring, health checks, restarts, logs, backups, and budget controls.
Is Cloudflare Pages no longer recommended?
That is too broad. Pages still fits static content sites and lightweight frontends; the choice depends on dynamic functions, framework support, build scale, and whether Workers Static Assets is a better fit.
Should the content site, tool, and dashboard use one platform?
A first version can start with one primary platform, but label each service by runtime. Split only when CPU, builds, persistent-process needs, or a clear budget threshold creates a reason.
Why can a Vercel bill rise unexpectedly?
The bill can include function CPU and memory, invocations, image processing, build configuration, Analytics, Observability, and additional paid team seats—not just the subscription.
Is Railway Hobby completely free because it costs $5?
No. Hobby costs $5 per month and includes $5 of resource usage. Usage above that credit is billed according to RAM, CPU, egress, and volume consumption.

13 min read · Published on: Oct 9, 2026

Comments

Sign in with GitHub to leave a comment

Easton BlogEaston Blog