Deploy an app built with Lovable or Bolt

Lovable and Bolt both export a Vite + React single-page app. Salus recognises it, builds it and serves it, with links to any page working, and no Dockerfile or configuration. If the app uses Supabase for its data and sign-in, it keeps using it: Salus hosts the app, Supabase stays the backend.

This guide was tested on Salus with a Vite, React, TypeScript and Tailwind app laid out as Lovable exports it, at the root of its repository.

Before you begin

Put the app on GitHub

In Lovable or Bolt, connect the project to GitHub and push it to a repository. Keep the app at the root of the repository, as both tools do: Salus looks for the Vite project there.

If the repository doesn’t show up in Salus, give the Salus GitHub app access to it from your GitHub settings.

Check the build-time variables

Vite bakes VITE_ variables into the app when it builds. If the project reads them from a .env file that’s committed, there’s nothing to do. If it isn’t committed, add each one to the Salus project as a build-time variable, such as VITE_SUPABASE_URL and VITE_SUPABASE_PUBLISHABLE_KEY. See Environment Variables.

Only put values in VITE_ variables that are safe for anyone to read, such as Supabase’s publishable key: they end up in the JavaScript every visitor downloads.

Deploy

Ask your coding agent, once it’s connected to Salus:

Deploy this repository to Salus in the Production environment
and give me the URL.

Salus detects the Vite project, runs npm run build, and serves the dist folder. Routes such as /about load directly, because every path falls back to the app’s index.html.

In the console, create the project from the repository as a client-side application, with build command npm run build and output directory dist. See Projects.

Tell Supabase about the new address

If the app has sign-in, add the deployment’s URL to your Supabase project under Authentication → URL Configuration (the site URL, or the list of redirect URLs). Without it, sign-in links send people back to the old address.

Troubleshooting

  • The page is blank, or calls go to the wrong backend. A VITE_ variable was missing when the app was built. Add it as a build-time variable and redeploy: changing it doesn’t affect a build that has already run.
  • The deploy keeps restarting with “no default process”. The app isn’t at the root of the repository. Move it there, or build it with a Dockerfile.
  • Sign-in works locally but not on Salus. Add the Salus URL to Supabase’s allowed redirect URLs (step 4).
  • The pipeline shows warnings. Usually the dependency scan found vulnerable packages. The app still deploys; see Package Vulnerability Scanning to decide what to upgrade.