Multi-Product Setup

If you bought more than one ARK product (e.g., Track + Comms + Ink), you should run all of them against the same Supabase project. This page explains why and walks through how.

Why a single Supabase project

ARK products are designed to share data with each other. Comms can show Track contacts in a sidebar. Ink documents can be linked into Comms threads. Pulse can ping the Comms channel where standups belong.

These integrations work because every product reads the same underlying tables in the same database. If you put each product in a separate Supabase project, the integrations break — they have no way to see across projects.

SetupIntegrations workSingle loginCost
One Supabase project for all productsYesYesOne project's free/paid tier
One Supabase project per productNoNoN projects' free/paid tiers

The single-project setup is also simpler: one place to manage users, one place to back up, one set of credentials to rotate.

How shared data works

Each ARK product owns its own tables, with a product-specific prefix:

  • Track: track_boards, track_contacts, track_groups, ...
  • Comms: comms_channels, comms_messages, comms_threads, ...
  • Pulse: pulse_standups, pulse_polls, ...
  • Ink: ink_spaces, ink_documents, ink_blocks, ...

A few tables are shared (no prefix), used by every product:

  • profiles — the user identity table. One row per user, regardless of which product they're using.
  • roles, permissions — the role-based access control system.
  • audit_log — cross-product activity log.

When you install a second product, it adds its prefixed tables and references the existing shared tables. No conflict.

For the full architecture, see Shared Database Architecture.

Order matters: install the platform schema first

Each ARK repo's schema.sql is split into two parts:

  1. Platform schema — the shared profiles and friends. Idempotent (safe to run more than once — it uses create table if not exists).
  2. Product schema — that product's prefixed tables.

The first ARK product you install creates both. The second through Nth product detects that the platform schema already exists, skips that part, and adds its own product tables.

You don't need to think about this — just run each product's schema.sql in the SQL Editor in order. The scripts handle the rest.

Step-by-step: adding a second product

Let's say you already have Track installed and you just bought Comms.

1. Deploy Comms to Vercel

Same as the first product:

  1. Go to Vercel → Add NewProject.
  2. Import your Comms repo (e.g., arkteams/comms-d4e5f6).
  3. Add the same environment variables as Track:
    • VITE_SUPABASE_URL — same value as Track
    • VITE_SUPABASE_ANON_KEY — same value as Track
    • VITE_ARK_LICENSE_KEY — your Comms license key (different from Track's)
  4. Deploy.

2. Run the Comms schema

  1. Open Comms's schema.sql from the GitHub repo (Raw view, copy all).
  2. Supabase → SQL Editor → New query → paste → Run.
  3. The platform-schema portion will skip (already exists). The comms_* tables get created. You'll see a Success message.

3. Set up Comms's Vercel URL in Supabase

You already set Track's URL as the Site URL. Now you need to add Comms's URL as a redirect URL so Comms can also send auth emails.

  1. Supabase → Project SettingsAuthenticationURL Configuration.
  2. Under Redirect URLs, add https://my-comms.vercel.app/**.
  3. Save.

You don't change the Site URL. Auth emails for both products still link back to your primary product's URL (typically Track), and users can navigate to Comms from there. If you'd rather, you can build a small launcher page that links to all your ARK products.

4. Log in to Comms

Open Comms's Vercel URL. Use the same email and password you used for Track. You're already in the profiles table — you don't need to sign up again.

Comms reads your profiles row, sees your admin role, and lets you in as an admin. Same identity, same permissions, different product.

License keys: one per product, not one per database

Each ARK product validates its own license key against the product's slug. Track's license key won't work with Comms, and vice versa. You get a separate ARK-XXXX-XXXX-XXXX-XXXX for each product you purchase.

If you bought the Full Suite, you got one license key per product in the bundle (e.g., one for Track, one for Comms, etc.). Use each one in the corresponding deployment.

Domains: one per product

Each ARK product is its own Vercel deployment with its own domain:

  • crm.acme.com for Track
  • chat.acme.com for Comms
  • docs.acme.com for Ink

Buyers usually use a single root domain with subdomains. Configure each subdomain on its corresponding Vercel project. License keys bind per product, per domain.

What about backups?

One Supabase project = one backup story. Supabase's automated daily backups (free tier) cover everything. For paid tiers, you can also run point-in-time recovery.

Backing up multiple separate Supabase projects requires you to reconcile their snapshots — much more error-prone.

What you should have now

If you've finished a multi-product install:

  • Two or more Vercel deployments, each with its own license key but the same Supabase URL/anon key
  • A single Supabase project with the platform tables and each product's prefixed tables
  • The same login working across every product

Next: Verify Your Deployment