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

"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.
| Workload | Recommended start | Main threshold |
|---|---|---|
| Astro or Hugo static site | Cloudflare Pages | 500 builds/month; 20,000 files |
| Next.js SSG | Cloudflare Pages or Vercel | adapter support, build time, build configuration |
| Comments or search | Pages Functions | requests 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.
| Workload | Recommended start | Main threshold |
|---|---|---|
| Browser-only tool | Cloudflare Pages | builds and file limits |
| Lightweight dynamic API | Cloudflare Workers | 100,000 requests/day; 10 ms CPU on Free |
| Full-stack Next.js tool | Vercel | Functions, 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.
| Workload | Recommended start | Main threshold |
|---|---|---|
| Full-stack Next.js | Vercel | Functions, Images, Builds, Analytics |
| Another framework | Workers or Vercel | current framework and runtime support |
| Team collaboration | Vercel or Railway | seats, 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.
| Workload | Recommended start | Main threshold |
|---|---|---|
| Node service or worker | Railway | RAM, CPU, egress, volume |
| Database | Railway or a managed database | volume cost and backup policy |
| Background job | Railway | usage 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
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
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
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
Step 4: Check hard limits
Use current official documentation to verify builds, file counts, CPU, memory, deployment frequency, resource ceilings, and runtime compatibility. - 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
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?
Is Vercel or Cloudflare better for Next.js?
Is Railway a good backend and worker platform for a solo founder?
Is Cloudflare Pages no longer recommended?
Should the content site, tool, and dashboard use one platform?
Why can a Vercel bill rise unexpectedly?
Is Railway Hobby completely free because it costs $5?
13 min read · Published on: Oct 9, 2026
Solo Founder Tech Stack Guide: Build, Automate, Ship, and Grow
If you landed here from search, the fastest way to build context is to jump to the previous or next post in this same series.
Previous
Choosing a Backend Stack for a Solo Business: Cloudflare Workers, Supabase, Node.js, and Databases
Map APIs, webhooks, auth, databases, files, and long-running jobs to Cloudflare Workers, Supabase, or Node.js, with current limits and upgrade signals.
Part 6 of 9
Next
Choosing a Solo-Founder Database: D1, Postgres, R2, S3, or SQLite
Choose D1, Postgres, R2, S3, or SQLite by classifying business records, events, files, caches, local data, and backups, then checking cost and migration signals.
Part 8 of 9



Comments
Sign in with GitHub to leave a comment