Migrating from Heroku
Heroku's free tier shutdown left a lot of small apps stranded on paid plans they barely use. Doable's auto-detection is similar to Heroku's buildpacks, most Heroku apps deploy without modification, on a flat $0–$39/month plan.
If your app has a `Procfile`, a `requirements.txt`, or a `package.json` with a `start` script, the migration is mechanical.
Save them to a local file. We'll import this into Doable in one command.
heroku config -a <your-app> --shell > .env.herokuAnd log in.
npm install -g doable-cli && doable loginFrom your project directory. Doable detects the runtime the same way Heroku does.
doable projects createBulk-import from the file you exported. Each var is encrypted at rest with AES-256-GCM.
doable env import .env.herokuFor Heroku Postgres: run `pg_dump` from Heroku, restore into Neon (or Supabase, Upstash, etc.), then `doable addon attach postgres <new-url>`. Doable doesn't provision Postgres on its own infrastructure but attaches any external URL.
First deploy takes a minute or two. Subsequent deploys hit the build cache and are faster.
doable deployIf you have a custom domain, point its CNAME at `cname.doable.do` and run `doable domain connect <hostname>`.
Procfile-based start commands work the same way Heroku ran them. `web: gunicorn app:app` becomes the container's entrypoint. `worker: python worker.py` runs as a separate Doable project (deploy worker code without a public port).
Buildpack detection, Heroku reads `requirements.txt` for Python, `package.json` for Node, etc. Doable's detector recognises the same files. Most projects work without a Dockerfile.
No add-on marketplace. Doable doesn't provision databases or services. You attach external providers (Neon for Postgres, Upstash for Redis, etc.) via `doable addon attach`. The advantage: those services run on accounts independent of your deploy platform.
Pricing: Doable Starter at $15/month covers 3 projects with no metered dyno hours, no per-app billing. Pro at $39/month is 10 projects. Heroku Eco/Basic dynos add up faster for multi-app teams.
Background workers: same shape as Heroku, deploy a separate project with no public port. The container runs continuously and processes jobs.
For most small apps, under 30 minutes including DNS propagation. The actual code changes are usually zero, Heroku's buildpack-detected runtimes (Node, Python, Ruby, Go, static) all work as Doable auto-detected runtimes.
Migrate to Neon, Supabase, or Upstash, all have free tiers that beat Heroku Postgres on price for small apps. `pg_dump` from Heroku, restore to the new provider, then `doable addon attach postgres <new-url>`. Total time is usually 5–15 minutes for databases under a few GB.
Doable doesn't autoscale yet, each deploy runs a single container. For most apps that's enough; for traffic spikes, our roadmap includes horizontal scaling on Pro. If you need autoscaling today, deploy to BYO and run a small orchestrator on top, or stay on Heroku for that specific app.
Yes, Doable keeps the previous deploy's artifact and `doable rollback` switches traffic back to it instantly without rebuilding. The dashboard also shows a list of every deploy with rollback buttons.
No credit card. Deploy your first project in under a minute.