BetaMaShop is in public beta. We improve it continuously, and your feedback shapes what comes next.

What you own

Your codeEnglish· 3 min read· Updated September 01, 2026

Where your code lives, where your data lives, how you sign in to your own back office, and which bills land on your own accounts.

Your code

Publishing a project creates three things on accounts you already own: a private GitHub repository, a Supabase project, and two Netlify sites.

MaShop hosts the workspace where you describe and build. It does not host your live site. It never holds your customers or your orders.

What publishing creates, and where

WhatWhereName
Private GitHub repositoryYour GitHub accountmashop-<slug>
Supabase projectThe first organisation found on your Supabase account, free plan, region eu-central-1created from your project
Netlify site, public siteYour Netlify accountmashop-<slug>, base directory apps/storefront
Netlify site, back officeYour Netlify accountmashop-<slug>-admin, base directory apps/admin

The slug comes from the project name, cut to 40 characters, plus five random characters. The identifier you can type when creating a project is ignored. If a repository of that name already exists, it is reused instead of failing.

The whole template is pushed as one commit, with the message feat: scaffold merchant backoffice from MaShop template. The sequence itself, with its waiting times and its failure points, is in Publishing.

Signing in to your back office for the first time

The back office is the second Netlify site. Its address appears in the deploy panel, on the button that opens your dashboard, once that site is built.

MaShop sends you no credentials for it. The sign in screen has no sign up form either. Ask for a magic link with your own address: that first link creates the account, and the first account to sign in becomes the owner. Everyone after you is added from Settings, then Staff.

Creating that second site is best effort. If it fails, the public site is still deployed, and the failure is reported rather than hidden.

What MaShop keeps on its side

  • Your Supabase URL, the project reference, and the public anon key in clear text.
  • Your Supabase service role key, encrypted with AES 256 GCM.
  • A copy of your files, in MaShop's own project_files table.
  • The file tree produced by each generation, plus version snapshots.

That copy exists so the editor and the preview work. It is not what Netlify builds.

What MaShop never sees

Your live site and your back office talk to your Supabase project directly. The keys reach them as environment variables, injected on both Netlify sites at every deployment. No MaShop route reads your orders, your customers or your products.

Injected on both sites: NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY, NEXT_PUBLIC_DEFAULT_LOCALE. The public site also gets NEXT_PUBLIC_SITE_URL; the back office gets MASHOP_PROJECT_ID.

Who pays for what

The Supabase project, the GitHub repository and the two Netlify sites sit on your accounts. Those three providers bill you directly, on their own terms. MaShop never invoices them and never adds a margin on them.

On the MaShop side, the cost lands in four places:

  • Publishing for the first time. No credits are spent, but a paid plan is required. A Free account is refused with an upgrade message.
  • Deploying afterwards. Free, no credits. The Free plan allows three manual updates per thirty days; Pro and Max are unlimited. Two builds never count against that: the first one, included in publishing, and the automatic rebuild that follows a generation.
  • A generation, where the AI writes code. Billed in credits, at the measured cost times five. The ceiling is $3.00 of real cost, or what your credit balance can actually pay, whichever is lower.
  • Reading and editing code, opening your repository, cloning it. Free, no plan required. Only your role on the project is checked.

Supabase's free plan allows two active projects. A third publication fails, and MaShop names that reason instead of showing a generic error.

The one key MaShop does not keep

MaShop creates your Supabase project with a strong Postgres password, then discards it. Nothing stores it.

So a direct connection to your database starts with resetting that password from your Supabase dashboard. That applies to psql, to a backup tool, to any external client. The keys injected on Netlify are enough for the site and the back office, but not for a direct Postgres session.

ownershipcodesupabasegithubnetlifybilling
Was this page helpful?
Your feedback is anonymous.