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.
| Setup | Integrations work | Single login | Cost |
|---|---|---|---|
| One Supabase project for all products | Yes | Yes | One project's free/paid tier |
| One Supabase project per product | No | No | N 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:
- Platform schema — the shared
profilesand friends. Idempotent (safe to run more than once — it usescreate table if not exists). - 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:
- Go to Vercel → Add New → Project.
- Import your Comms repo (e.g.,
arkteams/comms-d4e5f6). - Add the same environment variables as Track:
VITE_SUPABASE_URL— same value as TrackVITE_SUPABASE_ANON_KEY— same value as TrackVITE_ARK_LICENSE_KEY— your Comms license key (different from Track's)
- Deploy.
2. Run the Comms schema
- Open Comms's
schema.sqlfrom the GitHub repo (Raw view, copy all). - Supabase → SQL Editor → New query → paste → Run.
- 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.
- Supabase → Project Settings → Authentication → URL Configuration.
- Under Redirect URLs, add
https://my-comms.vercel.app/**. - 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.comfor Trackchat.acme.comfor Commsdocs.acme.comfor 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