| Front end hosting |
Vercel for anything built in Next.js or React. Cloudflare Pages and Netlify are strong alternatives. GitHub Pages when the site is purely static. |
Cloudflare Pages |
$0 to $30 |
| Back end and API |
Railway for an always-on service in any language. Cloudflare Workers when you want it fast, near the user and cheap. Vercel Functions if the front end already lives there. Render and Fly.io are close cousins of Railway. |
Cloudflare Worker |
$0 to $40 |
| Database |
Supabase is my default when the app needs its own data: a proper Postgres database with logins, file storage and an admin screen included. Neon for Postgres on its own. Or the CRM itself when the app is really a window onto it. |
None. The CRM is the record |
$0 to $40 |
| Logins and permissions |
Supabase Auth if you are already on Supabase. Clerk for a polished sign-up flow out of the box. Auth0 for enterprise requirements. Hand-rolling this is usually a false economy. |
Hashes in Cloudflare KV |
$0 to $40 |
| File storage |
Supabase Storage beside the database. Cloudflare R2 when there is real volume, because it doesn't charge to read files back. Amazon S3 is the incumbent. |
Not needed |
$0 to $15 |
| Scheduled jobs |
Railway cron, Cloudflare Cron Triggers or GitHub Actions on a schedule. When the trigger really belongs to a business process, your CRM's own scheduler is the honest place for it. |
The CRM's own scheduler |
$0 to $10 |
| Email and SMS |
Resend or Postmark for reliable transactional email. Twilio internationally for SMS, or an Australian provider for local numbers and better local delivery. |
The CRM's own sending |
$0 to $50 |
| Payments |
Stripe for almost everything. Never store card details yourself, and never build a form that touches a raw card number. |
Not needed |
Per transaction |
| The AI layer |
OpenAI, Google Gemini or Anthropic. Whichever you pick, the account and the key belong to your business, so you can see the usage and you can switch. |
Not needed here |
Usage-based |
| Code repository |
GitHub, connected to the host so that saving the code is what publishes it. This is also your undo button, and the reason a bad release takes a minute to reverse. |
GitHub, client-owned |
$0 |
| Secrets |
The environment variables section of whichever host you chose. Never in the code, never in a spreadsheet, never pasted into a chat. |
Cloudflare secrets |
$0 |
| Monitoring |
Your host's logs, plus Sentry for errors and any uptime pinger. An app with no logs cannot be debugged and cannot be audited. |
Host logs |
$0 to $30 |