Stop 18 · Cloud & HostingTopics · 5/11

Railway/Render/Heroku

Part of the Backend Developer Roadmap

In short

You want your API online today, not after a week of learning Linux and Nginx. Platforms like Railway, Render and Heroku take a Git repo and give you back a live HTTPS URL.

Developer-friendly PaaS platforms that handle most infrastructure concerns for you — push your code and get a running, HTTPS-enabled backend with minimal configuration.

The purple blob hands a bundle of clothes over a laundry counter with folded clothes on the shelf behind.

Think of it like this

Dropping clothes at the laundry

You could buy a washing machine, an iron and a drying stand. Or you hand a bundle to the laundry and collect pressed clothes tomorrow. You pay a bit more per shirt but skip the machines. These platforms are the laundry for deploys: hand over code, get back a running app.

Watch it happen

git push to live URL

git push
Build
Image
Health check
Live URL

1/5You push to main. The platform is connected to your repo and sees the new commit.

The big ideas

What you need to know

Git push to deploy

Connect a repo once. Every push to the chosen branch builds and ships automatically.

Listen on PORT

The platform tells your app which port to use through the PORT variable. Hard-code 3000 and health checks may fail.

Add-ons for the rest

Managed Postgres and Redis are a click away, with the connection string injected as an env var.

Convenience costs money

Compute costs more than raw VMs, and free tiers may sleep or have limits. Check each platform's current pricing.

See it in code

Walk through the code

ts
1// server.ts2import express from "express";3 4const app = express();5app.get("/health", (_req, res) => res.send("ok"));6app.get("/", (_req, res) => res.json({ hello: "world" }));7 8// Platforms inject PORT. Fall back to 3000 locally.9const port = Number(process.env.PORT) || 3000;10app.listen(port, "0.0.0.0", () => console.log(`listening on ${port}`));11 12// package.json scripts:13//   "build": "tsc",14//   "start": "node dist/server.js"

1/3A cheap health route the platform can poll to know your app is up.

This is nearly everything a platform needs: a build script, a start script, a health route and respect for PORT.

Save yourself the pain

Common mistakes

Oops

Writing uploaded files to the local disk on these platforms.

Do this instead

The filesystem is usually wiped on each deploy or restart. Store files in S3 or a similar bucket.

Oops

Putting the TypeScript build inside npm start.

Do this instead

Then every restart rebuilds and boots slowly. Build in the build script and keep start as node dist/server.js.

Your mission

Ship it in 20 minutes

~25 min

Quick check

Your app works locally on port 3000, but the platform says it never became healthy. Most likely cause?

Go deeper

  1. 1Deploy a Node.js API to Railway or Render, connecting a GitHub repo for auto-deploys.
  2. 2Add a managed database (Postgres/Redis) from the same platform.
  3. 3Compare the setup effort here to configuring EC2 manually.

More topics at this stop

Stuck on this topic? Ask an Insider

Get 1:1 guidance from people who've walked this exact path — on the InsideEdge app.

Download
InsideEdge