Migrating from Netlify
Netlify's build-minute and bandwidth metering can spike unexpectedly on traffic surges. Doable runs your site as a standard container with flat per-month pricing, $0 for one project, $15 for three, $39 for ten. Most Netlify sites move over with one command.
If your Netlify site uses Functions, you'll typically replace them with a small backend (one Node or Python container). Doable runs containers with no per-request timeout, so workloads that hit Netlify's 10–26 second function cap work normally.
Save them locally. Doable will import in one command.
netlify env:list --plain > .env.netlifyOne-time setup.
npm install -g doable-cli && doable loginDoable detects static-site builds (`dist/`, `build/`, `out/`) and serves them from a minimal nginx container.
doable projects createEncrypted at rest with AES-256-GCM, injected at container start.
doable env import .env.netlifyDoable runs your build command (auto-detected from `package.json` scripts) and serves the output directory.
doable deployCNAME for subdomains, A record for apex, the connect command returns the right value. Let's Encrypt issues HTTPS within a minute.
doable domain connect <hostname>Static-site frameworks: Astro, Eleventy, Hugo, Jekyll, Gatsby, Next.js (static export), Vite, plain HTML. Doable detects the build output and serves it from nginx. Build-command detection reads `package.json` scripts the same way Netlify does.
Build-time env vars work the same. `NETLIFY_*` vars don't carry over (they were Netlify-specific) but generic `VITE_*` / `NEXT_PUBLIC_*` etc. work as expected.
Netlify Functions: replace with a real backend. Deploy a separate Doable project, Node Express, Python FastAPI, or any container, for your API endpoints. The container has no per-request timeout, so workloads that hit Netlify's 10–26s cap (long uploads, large file processing, websockets) work normally.
Netlify Forms: use a third-party form handler (Formspree, Basin, Tally) and post to it from your static frontend. We don't bundle a form-handling layer.
Netlify Identity: use Auth0, Clerk, Supabase Auth, or Firebase Auth depending on your stack. Same migration shape as moving any auth provider.
Pricing: flat $0/$15/$39/month. No per-build-minute, no per-GB-bandwidth, no per-function-invocation.
Yes, for the actual file-serving, both use HTTP/2 with gzip + brotli compression. Netlify's CDN has more edge locations (so first-byte latency might be marginally lower in some regions); for most sites the difference isn't measurable.
Deploy a small backend as a separate Doable project, typically a Node or Python container with your API routes. Point your frontend at the API's URL via an env var. The backend container runs continuously, so cold-start delays disappear.
Doable doesn't run V8 isolates, Edge Functions don't carry over directly. In practice most "edge" functions can be replaced with regular API routes; the latency difference is small for most workloads.
Doable supports anonymous preview deploys (`doable preview`) and GitHub App-triggered deploys for branches. Simpler than Netlify's comment bot, but covers the same use case.
No credit card. Deploy your first project in under a minute.