Skip to content

 All work

Front-End · Full-stackSolo project · Jul 2025 – present· Permission pending

Zarrar Cooling Services

A React + Supabase platform — public site, admin, technician and branch panels — converted from single-tenant to multi-tenant in version 2.

[ Screenshot — permission pending ]

Overview

Zarrar Cooling Services works across regional branches. The platform covers a public website plus three role-based panels — admin, technician and branch — on React with a Supabase back-end. I planned, designed and built it alone, and I still maintain it.

Challenge

Version 1 was single-tenant: one business, one dataset. Version 2 had to serve several businesses from the same app, with each tenant's data kept apart — and all the existing data belonged to the original business.

My role

“Planning, UI/UX, front-end and back-end — all of it, solo.”

Solution — v1 → v2 multi-tenant

I converted the existing app to multi-tenant, and rehearsed the migration on a test database holding a copy of the real data before running it.

  1. Step 1

    Test database

    Copied production data into a separate test database to rehearse the migration.

  2. Step 2

    Add tenant ID

    A migration per table added a tenant ID column to every table.

  3. Step 3

    Backfill

    Every existing row was assigned to tenant 1 — the original business.

  4. Step 4

    Row-level security

    Supabase row-level security policies keep each tenant's rows to that tenant.

Visuals

[ Screenshot — permission pending ]
Fig. 1 — Admin panel · anonymised demo data
[ Screenshot — permission pending ]
Fig. 2 — Technician panel · anonymised demo data

Results

[VERIFY: outcomes — e.g. number of tenants onboarded, client quote with permission]. Existing data was migrated to tenant 1 with the app staying in service [VERIFY].