Render Tutorials
Learn Blueprints by shipping a live app

Run it locally

⏱ 6 min

Do not write a Blueprint until localhost works.

1. Install and start

From typescript/:

Terminal window
npm install
npm start

Expected log:

Service Card (TypeScript) on http://0.0.0.0:3000

From python/:

Terminal window
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.py

Expected log:

Uvicorn running on http://0.0.0.0:3000

Open http://localhost:3000.

2. Prove it works

  1. Read the title The headline defaults to Service Card (from SERVICE_TITLE).
  2. Check the runtime The card shows TypeScript or Python for your track.
  3. Click Ping The ping count increases. That hit your server process.

Optional env check (stop the server first):

Terminal window
SERVICE_TITLE="Hello from my laptop" npm start
Terminal window
SERVICE_TITLE="Hello from my laptop" python main.py

Refresh. The headline should match your string.

3. Side-by-side code (same routes)

Both tracks expose the same surface:

RoutePurpose
GET /Service Card UI
GET /api/infoJSON status
POST /api/pingIncrement in-memory counter
GET /healthok

Server entry: typescript/src/server.ts (Express, binds 0.0.0.0, reads PORT).

Server entry: python/main.py (FastAPI; Uvicorn binds 0.0.0.0 and PORT).

Ping counts reset when you restart. On Render Free, sleep/restart does the same. Expected.

Troubleshooting

SymptomFix
command not found: npmInstall Node.js 20+ (TypeScript track)
command not found: python3Install Python 3.10+ (Python track)
Port in usePORT=3001 npm start or PORT=3001 python main.py

What you learned

  • Local proof before any cloud config
  • SERVICE_TITLE proves env vars later on Render
  • Next: a short cloud vocabulary pass