Supported Stacks

Any framework that can run in a container can run on Salus — your application deploys as it is, without being rewritten to fit the platform. There are two build paths.

Zero-config builds (buildpacks)

When you import a repository, its buildpacks detect the project and run the right install and build commands for you. Supported out of the box:

  • Frontend — React (Vite or Create React App), Vue, Svelte, and static-site frameworks such as Astro and Nuxt.
  • Full-stack and server-rendered — Next.js (server or static export), Nuxt, and similar frameworks with server logic.
  • Node.js backend services — APIs and services built with frameworks such as Express, NestJS, or Fastify. JavaScript and TypeScript projects are detected from their package.json and lockfile.
  • .NET (C#) — web services and APIs such as ASP.NET Core applications.
  • Python — web apps and APIs such as FastAPI, detected from requirements.txt. Add a Procfile that starts the server on the port your environment routes to, for example web: uvicorn main:app --host 0.0.0.0 --port 8080.

Projects come in two shapes (see Projects):

  • Server-side applications — web services that run your backend code, such as APIs and server-rendered apps.
  • Client-side applications — static sites built into HTML, CSS, and JavaScript and served directly.

For Node.js projects, you choose the Node.js version your app runs on. Match it to the version you develop with locally, and prefer an LTS release for production.

Every other stack: custom Docker builds

Go, Java and Kotlin (Spring Boot), PHP (Laravel), Ruby on Rails, and any Python app that needs system packages: anything with a Dockerfile builds and runs on Salus as a custom Docker build. You bring the Dockerfile; Salus builds the image and runs it as a real, long-lived service. See Custom Docker Builds.

The port your app listens on

Salus sends traffic to the port set in the environment’s configuration and doesn’t pass a PORT variable to your app, so start the server on that port explicitly. A Next.js or Express app that falls back to 3000 listens on 3000: set the port to match. See Configure an Environment.