Docs

Quickstarts by stack (no Dockerfile needed)

A Dockerfile in the repository always wins. Otherwise the platform detects the project type and builds it in-Kingdom.

Node.js (Express, Nest)package.jsonnpm ci → npm run build (if present) → npm start. PORT is set for you.
Next.jspackage.json with nextBuilt and served with next start; choose a Web service.
Static sites (Vite, React, Astro, plain HTML)index.html or package.jsonChoose Static site; output from dist, build, out or public is served by nginx with SPA fallback.
Python (Django, Flask, FastAPI)requirements.txt or pyproject.tomlpip install; the Procfile web: line is the start command, else gunicorn for Django.
Gogo.modgo build; the binary must listen on $PORT.
Java (Spring Boot)pom.xml or build.gradleMaven or Gradle wrapper build; started with -Dserver.port=$PORT.
.NET*.csprojdotnet publish; ASPNETCORE_URLS set from $PORT.
PHP (Laravel, WordPress)composer.json or index.phpApache with Composer install, listening on $PORT.

Moving from Render

  1. Create a project on a KSA data plane.
  2. Add each service from the same repo and branch; copy env vars.
  3. Create PostgreSQL, restore your pg_dump, link it (DATABASE_URL).
  4. Add your custom domain, verify the TXT record, switch DNS.

Moving from Vercel

  1. Next.js apps: Web service, build and start detected.
  2. Pure static exports: Static site, publish directory out.
  3. Serverless functions run inside the Next.js server.
  4. Enable push-to-deploy with the GitHub webhook.

Moving from Heroku

  1. Your Procfile web: line is used as-is.
  2. Worker dynos: Background worker with a start command.
  3. Scheduler jobs: Cron job (Riyadh time).
  4. heroku pg:backups → restore into managed PostgreSQL.