Sync your Lovable project to GitHub and EthioDeploy builds it on every push. Older Lovable apps deploy as-is; apps created since May 2026 need one start command.
Last updated
These are the defaults. Override any of them in Settings → Build.
Lovable has generated two kinds of apps. Open package.json in your repo:
@tanstack/react-start: an older React + Vite app that runs entirely in the browser. We build it with npm run build and serve dist/, and every route falls back to index.html, so deep links and page refreshes work with no extra config.@tanstack/react-start: a newer app that renders on a server. Set the Start command and NITRO_PRESET as described above. We set PORT for you and the server reads it.In Lovable, open Project settings → Git → GitHub and connect. Lovable creates a new private repository for the project; it can't connect to an existing one.
The sync is two-way on the default branch (usually main): changes you make in Lovable are pushed to GitHub, and EthioDeploy redeploys on every push. You can keep building in Lovable and your EthioDeploy app stays up to date.
Your app needs its Supabase values. Lovable keeps them in the .envfile, which you can see in Lovable's code editor or in the synced repo. Add them in the project's settings on EthioDeploy:
VITE_SUPABASE_URL and VITE_SUPABASE_PUBLISHABLE_KEY (all apps). These are baked into the JavaScript at build time, so add them before the deploy and redeploy after any change.SUPABASE_URL and SUPABASE_PUBLISHABLE_KEY (TanStack Start apps, read by server code), plus NITRO_PRESET=node-server.EthioDeploy hosts the app itself. If your project uses Lovable Cloud or your own Supabase project, the database, auth and storage keep running there, and the deployed app talks to them with the values above.
supabase/functions/ and keep running on Supabase. Deploy changes to them with the Supabase CLI.<project-slug>.ethiodeploy.com. Every push to the default branch redeploys, and the old version keeps serving until the new one is healthy.The site doesn't load and the build log shows Caddy
Cause: A TanStack Start app was served as a static site because no start command was set.
Fix: Set the Start command to node .output/server/index.mjs, add NITRO_PRESET=node-server, and redeploy.
Blank page, and the browser console mentions supabaseUrl
Cause: The VITE_SUPABASE_ values weren't set when the app was built.
Fix: Add them in Settings, then trigger a new deploy.
Sign-in fails or redirects to the wrong site
Cause: Your new URL isn't in the auth provider's allowed redirect URLs.
Fix: Add the ethiodeploy.com URL and any custom domain to the allowed redirect URLs.
A feature that calls a server function fails
Cause: It reads a secret that lives in Lovable, not in the repo.
Fix: Add the secret as an env var in Settings and redeploy.
Still stuck? Check the deployment's build log in the dashboard, or see Troubleshooting.
Ready to deploy? Sign in with GitHub and pick your repo. No Dockerfile, no YAML.
See the full docs for custom domains, env vars, addons, and billing.