Supabase to Internet Computer (ICP) Migration Tool
The Mingle Cloud Migrator is a Supabase to Internet Computer (ICP)
migration tool that moves the whole app, not just the database: it reads
your repository, converts every Postgres table into stable-memory structures
(StableBTreeMap), replaces Supabase Auth with Internet Identity, and
moves Storage buckets into asset canisters. The result is the same app, 1:1,
fully on-chain — no hyperscaler, no vendor lock-in.
Supabase → Internet Computer: the mapping
| Supabase component | ICP equivalent |
|---|---|
| Postgres database | Stable vars + StableBTreeMap in stable memory |
| Supabase Auth (GoTrue, JWT) | Internet Identity (caller Principal) |
| Row Level Security | Principal-based access checks in the canister |
| Storage (buckets) | Asset canister / stable blob storage |
| PostgREST API / Edge Functions | query / update methods on a Motoko actor |
| Realtime / streaming | Managed sidecar talking to the canister over signed calls |
| Cron (pg_cron) | Canister timers (setTimer / recurringTimer) |
How the migration works, step by step
- Connect the repository. Connect a GitHub repo or upload a ZIP. The Migrator analyzes the code, Supabase client calls and the database schema.
- Review the schema. The Postgres schema is inferred — even without committed DDL, via OpenAPI introspection of your Supabase instance — and mapped onto stable-memory structures. You confirm the mapping before anything migrates.
- Export the data. Upload your Postgres data as JSON/CSV. Per field you decide: encrypted (AES-256), public, or skip.
- Switch auth. Supabase Auth is replaced by Internet Identity; RLS rules become principal checks in the canister.
- Migrate storage. Buckets become asset canisters; file URLs in the frontend are rewritten automatically.
- Migrate & verify. The Migrator generates Motoko canisters and verifies every route, query and auth flow against the original — 1:1 parity or it doesn't ship.
- Deploy. The finished dfx project goes to the Internet Computer and your domain is connected. Then switch Supabase off — the app keeps running.
How this differs from database tools: pgloader and DBConvert only migrate the database from one SQL system to another. The Mingle Cloud Migrator migrates the entire app on-chain — backend, data, auth, files and frontend — as reviewable Motoko canisters.
Frequently asked questions
- Is there a tool that migrates a Supabase app to ICP?
- Yes — database, auth, storage, API and frontend are rebuilt 1:1 as Motoko canisters. What can't run canister-native (e.g. realtime streaming) keeps running as a managed sidecar instead of being dropped.
- What happens to the Postgres database?
- Every table becomes a
StableBTreeMapin stable memory — upgrade-safe, no separate database server, AES-256 encrypted at rest by default. - What replaces Supabase Auth?
- Internet Identity. The canister authenticates callers by their principal; RLS becomes access checks in canister code.
- How long does it take?
- A production full-stack app was migrated end to end in about 20 minutes — including data and images, with the source database switched off afterwards.