Ninoo Builder
Supabase, Stripe and AI
Supabase: database, sign-in and server functions
Supabase gives your app a Postgres database, user sign-in, file storage and server functions. You connect your own Supabase account, so the project and its data are yours, and Supabase bills you under your Supabase plan. Ninoo sets it up from your app's code.
- 01
Connect your account
Owner only. Press Connect Supabase, sign in on supabase.com and allow Ninoo to manage your projects. - 02
Pick or create a project
Use one you have, or let Ninoo create an empty one. Creating takes about two minutes. - 03
Ninoo points the app at it
Your.envgetsVITE_SUPABASE_URL,VITE_SUPABASE_PUBLISHABLE_KEYandVITE_SUPABASE_PROJECT_ID. These are safe to show in a web page. Secret keys never go there. - 04
Apply the backend changes
Tables live insupabase/migrationsand server functions insupabase/functions. When they change, a Backend changes bar appears above the chat box. The owner presses Apply to put them live.
| Good to know | Details |
|---|---|
| Who can do what | The owner connects, applies backend changes and publishes. Editors build and see the Backend changes bar, but the owner puts the changes live: they run with the owner's Supabase sign-in and keys. Viewers only see whether it's connected. |
| Database changes | Ninoo writes each change as a new migration file and applies them in order. If one fails, it stops there and offers Fix it. |
| Undo | Undo and Restore change your files, not the database. A table that was added stays until a new change removes it. |
| Preview and live | The preview and the published app use the same Supabase project, so the preview works with real data. |
| Sign-in links | Ninoo allows sign-in links to return to <your-app>.ninoo.app and to previews, and sets the site address when you publish. |
| Publishing | Publish waits until waiting database changes are applied, so a new front end never goes live without its tables. |
| Disconnecting | Ninoo stops managing the project. The project and its data stay in your Supabase account. |
Moving an app off Lovable Cloud
An app imported from Lovable still talks to its Lovable Cloud backend, and the Builder shows a warning: anything you do in the preview changes real data. The Move from Lovable checklist moves it to your own Supabase step by step, data, users and files included. See Move a whole app from Lovable.
Stripe: take payments
Use your own Stripe account. Paste a key from Stripe → Developers → API keys. A restricted key (rk_…) with only what the app needs is safest; start with a test key.
| Where the key goes | Details |
|---|---|
| Apps on Supabase | A Supabase function secret named STRIPE_SECRET_KEY. Ninoo keeps no copy. |
| Apps with a Python backend | Stored encrypted and added to the published backend. A test key also goes in the preview's .env; a live key never does. |
Tick Set up the webhook and Ninoo creates the endpoint in your Stripe account and saves its signing secret as STRIPE_WEBHOOK_SECRET. Apps that use Stripe Connect can add a second endpoint for connected accounts. The agent builds payments with Stripe Checkout, checks each webhook's signature and never stores card numbers.
AI inside your app
Turn on Nicrron AI to let the app call AI models. Ninoo creates a key on the owner's Nicrron account with a total spend limit ($10 to start, up to $1000) and gives it to the app as NICRRON_API_KEY. Usage comes out of the owner's balance. The key stops once the app has spent that much in total; raise the limit to keep going. It shows on your nicrron.ai Keys page, and turning AI off stops it within a minute.
Apps from Lovable
Lovable apps call Lovable's AI service, which only works on Lovable. Ask Ninoo to switch them to Nicrron: the request format is the same.Secrets
The Secrets list shows the keys your server code reads that aren't set yet, like an email or maps API key. Add a value and it goes to your Supabase project, or to your published Python backend. Only names are shown back. For a Python backend, .env plus secrets must fit in 4 KB.
More about the Python option on Python backends and data.