Publishing

Export your code

Take your app out of Setherion as a ZIP or in GitHub or GitLab, what the project holds, how to run it elsewhere, and which parts still lean on Setherion.

Every app is real React code, and it is yours to take. This page covers the ways out of the editor, what you get, how to run it on your own computer or host, and what still depends on Setherion once it is out.

Taking the code out is part of every paid plan, Pro and Business. On Free you can read and search the code in the editor, but not copy or download it. Your data is different: it can be exported on every plan, as described below.

The ways out

WayWhat you getWherePlan
Download ZIPThe project as a .zip fileThe folder icon beside PublishPro and Business
Export to GitHubA repository in your GitHub accountPublish, then Export to GitHubPro and Business
Export to GitLabA repository in your GitLab.com accountPublish, then Export to GitLabPro and Business
Native projectThe whole app as a phone project, to build in Android Studio and XcodePublish, then Publish to app stores, then NativePro and Business
Your dataSQL for a Supabase of your own, or a CSV of one collectionManage, then CloudEvery plan

The first four wait until the app has been built. While a build or a change is running, or when nothing has been built yet, their buttons are grey.

Download a ZIP

Wait for the build to finish

The folder icon is grey while Setherion is writing or checking the app.

Press the folder icon

It sits at the right of Publish, and says Download ZIP when you point at it. On the Free plan it carries a crown and opens the upgrade offer instead.

Unzip it

The file is named after the app, like coffee-shop.zip. Inside is a project that runs on its own: see Run it somewhere else.

Export to GitHub

Open it

Press Publish, then Export to GitHub.

Connect GitHub

Press Connect with GitHub and approve. It is the same connection that Import an app uses for your private repositories. If you would rather not connect, open Use a token instead (PAT) and paste a personal access token with the repo scope. A token you paste is kept only in your browser.

Name the repository

Type a Repository name. It is made lower case, and anything other than letters, numbers, dots, hyphens and underscores becomes a hyphen.

Choose Private repository

The box is ticked to start with. It only matters when Setherion creates the repository: a repository that already has this name is updated, and its privacy is left as it is.

Press Export to GitHub

A few seconds later the window says Pushed to GitHub! and Open repo takes you there.

Export again at any time to update the repository. Each export adds a commit called "Update from Setherion" to the default branch, on top of the history that is there, and writes every file of the project again. A file you changed in the repository that the project also holds is replaced, so do your own work on a branch of your own. A file the project does not hold is left alone.

When Setherion creates a repository, its description is filled from the start of a request you wrote for the app. Keep that in mind before you untick Private repository.

Export to GitLab

It works the same way as GitHub.

Open it

Press Publish, then Export to GitLab.

Connect GitLab

Press Connect with GitLab, or open Use a token instead (PAT) and paste a personal access token with the api scope.

Name it and export

Choose a Repository name and whether it is a Private repository, then press Export to GitLab. Open repo takes you to it.

The repository is made on GitLab.com, under your own username. It is made private unless you untick the box, and an existing one is updated, exactly as for GitHub.

In a team workspace, an export to GitHub or GitLab is written in the audit log, with the repository it went to.

What the project holds

The ZIP and both repositories hold the same project: the app's own files, and what is needed around them to run it.

FileWhat it is
src/The app itself: App.js, the screens and parts in components, and the data in lib.
src/main.jsxThe entry point that starts the app. It is added unless the app wrote its own.
index.htmlThe page the app opens in. It carries the app's name as its title and the language of its screens.
vite.config.jsThe settings for Vite, the tool that runs and builds it. They let JSX live in plain .js files, which is how the app is written.
package.jsonThe packages the app really imports, the build tools, and three scripts: dev, build and preview.
README.mdHow to run it.
.gitignoreKeeps node_modules, dist and your .env files out of Git.
.env.exampleIn the ZIP only: the two values an app on your own Supabase needs, written as comments to fill in.
supabase/schema.sqlThe tables the app keeps, as SQL. Only when the app saves data, and only the tables: the rows are not in it.
src/lib/setherion.jsThe small client that talks to the app's backend on Setherion. Only when the app signs people in, saves data, sends forms or calls AI. It carries the app's id and Setherion's address.

Pictures are not copied into the project. The code links to them by web address, so they keep loading from where Setherion stores them.

Run it somewhere else

You need Node.js, which brings npm with it, on the computer or the host that will run the app.

Get the project

Unzip the ZIP, or clone your repository.

Install what it needs

In a terminal, open the project's folder and run npm install.

Run it

npm run dev starts it on your own computer. Vite prints the address to open, usually http://localhost:5173.

Build it for a host

npm run build writes the finished site into a folder called dist. It is static files, so any static host can serve it.

text
npm install
npm run dev
npm run build

If the app has more than one page, set your host to answer every path with index.html. Most static hosts call it a single-page app setting or a rewrite. Without it, a page opened directly, like /pricing, is "not found" instead of the app. On Setherion this is done for you.

For an app on your own Supabase, copy .env.example to .env and fill in VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY. Both are public by design. Your host needs the same two values when it builds the site.

What still depends on Setherion

The exported code is the code your published app runs, so it still reaches Setherion for everything that has a server behind it. Knowing which parts they are tells you what to do before you move out.

Part of the appWhat the export doesWhat to do
Sign-in and saved datasrc/lib/setherion.js carries the app's id, so the exported app reads and writes the same accounts and records as the published one.Keep the app on Setherion for as long as you need that. To stop depending on it, move the data to your own Supabase, below.
Forms, AI, connected services and secretsThey go through the same file. Setherion holds the keys, makes the call and counts each one as an integration credit. No secret key is ever written into the exported code.Keep the services connected. Or replace those calls with your own server code and your own keys.
PaymentsA shop's checkout asks Setherion, which holds your Stripe key and records an order when Stripe says it was paid.The same as above: keep Stripe connected to the app, or build your own checkout on your own server.
Pictures and videoThey are linked by web address and stored by Setherion.Download the ones you need before you delete the app. They are deleted with it.
Your own SupabaseAn app already on your own Supabase does not use Setherion for its data.Fill in the two VITE_ values, as above.

The client calls Setherion's API from the browser, and that API accepts calls from any address, so the exported app can reach it from wherever you host it. If you delete the app, pause its backend, or run past the month's integration allowance, those calls stop, as they would for the published app. See Advanced settings and Integration credits.

If your plan ends, the account moves to Free, and Free cannot take the code out. Export before that, or keep a plan for as long as you need to.

Move your data to your own Supabase

To leave Setherion's backend behind, open Manage, then Cloud, then Advanced settings, and use Move this app to your own Supabase. It is on every plan, and only the owner or an admin of the app can export its rows.

  • Build the export writes the SQL for your tables and the rows as they are now: the first 2,000 rows of each collection, with the real totals shown so you can see if any are cut.
  • You run it in your Supabase project, with Run it for me if a Supabase account is connected, or by copying it or downloading the .sql file.
  • Rewrite the app for my Supabase then asks the assistant to change the app to use your project. It costs credits like any change, and needs the Supabase connector.

Three things do not travel: people's sign-ins, because passwords cannot be moved and people sign up again, uploaded pictures and video, which stay with Setherion, and rows past the 2,000 for each collection. For a single collection, Export CSV under Cloud, then Database, downloads up to the 10,000 most recent records. See Advanced settings and Database.

The phone project

Native gives you the whole app as a phone project, in a ZIP or pushed to a GitHub repository. It is the project above with the Capacitor shell added, to build in Android Studio and in Xcode on a Mac, and it needs Node 22 or newer. It still reaches Setherion in the same ways as the web project. See Native project for the commands, the app ID and signing.

Bring an app in

Import goes the other way: a repository or ZIP of code, an app made in Lovable, Bolt, v0 or Base44, or a spreadsheet. Importing is a rebuild, not a copy: Setherion reads the code, writes a plain description of what it does, and builds the app again from that. That also holds for a repository you exported from here. It costs a new app plus the reading, and your first import is free. See Import an app.

Was this page helpful?

Join the community

Questions, ideas and what others are building.