Products
New form
Add product
All products
Add client
Products this client uses
All clients
Backup
Data is stored only in this browser. Export a backup regularly.
Help
How this app works, and how to set up a new product. Screenshots appear once their files are added to onboarding/screenshots/.
How the app works
- SaaS Agency: the agency's own hosting and tools, such as Hostinger and Coolify.
- Products: pick a product, then a client. Each client has its forms (HQ, Production, Staging, Onboarding for in-house clients; Production for others).
- Manage products and Manage clients: add, edit, or remove products and clients.
- New form: create a new form.
- Backup: export or import all data as JSON. Export regularly.
- Sign out (top right) locks the app.
Data is saved in this browser. After the allowed Google account signs in, it is also saved online in Supabase. Only that one account can read or change the online data.
Setting up a new product
Follow these in order. The full guide is in onboarding/ONBOARDING.md and the Google steps are in onboarding/google-auth.md.
- Hostinger: add the subdomain as an A record that points to the VPS.
- GitHub: create a private repository and push the code.
- Supabase: create the project, run
supabase/schema.sqlwith the allowed email, turn off sign-ups, set the URL configuration. - Google Cloud Auth: create the OAuth client in Google Cloud Console, save its Client ID and secret, then enable Google in Supabase.
- Resend: add the sending domain, add its DNS records at Hostinger, create an API key (server side only).
- Coolify: create the project and app from GitHub, set the domain, and deploy.
Supabase
- Create a new project and save the database password.
- Copy the Project URL and the publishable key (never the service_role key).

- Open SQL Editor, paste
supabase/schema.sqlwith the allowed email, and run it. Expected: "Success. No rows returned".
- Check Policies: three policies on
app_state, RLS on, no delete policy.
- Turn off "Allow new users to sign up" and "Allow anonymous sign-ins".

- Set Site URL and Redirect URLs to the live domain.

GitHub
- Create a private repository.

- Push the code. Never commit
.envfiles or keys. - If needed, create a fine-grained token with Contents: Read-only on that repository only.

Google Cloud Auth
- Select the product's Google Cloud project at console.cloud.google.com.
- Set up the consent screen (External, Testing). Add the allowed account as a test user.

- Create a Web application OAuth client at Clients. Redirect URI:
https://<project-ref>.supabase.co/auth/v1/callback. Example for this product:https://zqshuvukyjbrnxcwnfuf.supabase.co/auth/v1/callback(the project ref is the part of the Supabase Project URL before.supabase.co).
- Client ID and client secret: copy both into your password manager. Never share the secret or put it in this page.

- In Supabase, Authentication, Sign In / Providers, Google: turn on Enable Sign in with Google, paste the Client ID and secret, then click Save. The list then shows Google as ENABLED. Until this is saved, the app shows "Unsupported provider: provider is not enabled".

Resend (email)
- Add a sending domain (for example
mail.yourdomain.com).
- Add every DNS record Resend shows at Hostinger, then verify.

- Create an API key with sending access. Keep it on the server only, never in this page.

Coolify
- Open the Coolify dashboard over HTTPS.

- Create a project, add an application from the GitHub repository, set the live domain, then deploy.

Hostinger domain and subdomain
- Open the parent domain's DNS settings in hPanel.

- Add an A record: name
inventory(or the new subdomain), value the VPS IP.
- Keep Hostinger nameservers. Do not use Cloudflare for DNS.