# 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

-   A Salus account. [Start free](https://app.salus.cloud/register).
-   **GitHub or GitLab connected** to your Salus organization. See [Git Management](https://salus.cloud/docs/getting-started/git-management/).

### 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](https://salus.cloud/docs/deployments/environment-configurations/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](https://salus.cloud/docs/guides/deploy-with-an-ai-agent/):

```text
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](https://salus.cloud/docs/getting-started/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](https://salus.cloud/docs/pipelines/builds/custom-docker/).
-   **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](https://salus.cloud/docs/pipelines/quality-and-security/package-vulnerability-scanning/) to decide what to upgrade.
