Run your own dashboard as a schema-per-tenant clone
Comingdashboard.trombonetimollc.com: the client dashboard cloned for the owner with To-Do, Scripts, Suggestions, Email Proposals, Email Performance, Hooks, Attribution and Links tabs, on a `tim` schema of the shared Supabase with admin-only RLS, a daily reconcile cron and AC reply webhook.
Kit
dashboard-shell
You need
| Account | Why | Free or paid | Plan |
|---|---|---|---|
| Supabase | Postgres database, auth (dashboard logins), row level security, Realtime pulse, Edge Functions and pg_cron for every dashboard, the attribution tables, booking alerts and the Brain state. | Free tier available | Pro (25 USD/mo) for anything a client logs into. The free tier pauses a project after 7 days without traffic and caps an org at 2 active projects; a paused free project took three client dashboards offline at once (a project log). |
| Vercel | Hosts every site, funnel, dashboard and serverless API (subscribe, book, attribution, AC proxy). Runs the cron jobs declared in vercel.json. | Free tier available | Pro (20 USD/mo per seat). The Hobby plan forbids commercial use, so any client site or paid product must be on Pro. Hobby is fine for a personal portfolio. |
| ActiveCampaign | Email list, broadcasts, automations and tags. The email engine drafts into a dashboard queue and sends through the AC API; funnels subscribe leads via the API; replies come back through an AC webhook. | Paid | Marketing Lite or Plus (from about 15 USD to 49 USD/mo at 1,000 contacts). API access is on every plan. Webhooks (for reply tracking) need automations, which Lite has. |
| Meta Business Suite (Pixel, Conversions API, Marketing API) | Facebook and Instagram ads. The funnel fires Pixel events, the attribution system sends server-side Conversions API events, the Meta Ads tab pulls ad-level insights, and social posting reaches your Pages through Zernio. | Free | Business account is free; you pay for ad spend only. Requires a verified business and a domain verification TXT record for the Pixel. |
| YouTube Data API v3 (Google Cloud) | Exact per-video view counts for the $ per view tab, channel stats, and (with OAuth) uploads. Public metadata, captions and comments come through yt-dlp without a key. | Free | Free; 10,000 quota units per day is plenty for daily syncs. |
| Slack (incoming webhooks) | Client review pings from the dashboard (script approved, email needs changes) and social-post notifications. | Free | Free workspace is enough for webhooks. |
| GitHub | Every site, dashboard and workflow lives in a repo. Actions run scheduled jobs (email snapshots, daily scrapes). Issues double as an email alert channel for bookings. | Free | Free plan. Actions minutes on the free plan cover the cron jobs used here (a few minutes a day). |
| Node.js 24 (npm, npx) | Runs Claude Code, the Vercel CLI, HyperFrames renders, Playwright, the MCP servers and every serverless function locally. | Free | Free. Node 24 LTS (the Brain MCP server and Vercel functions target Node 24). |
What you bring
- Your own email platform and ad platform keys
- A data feed of your own, because the starter ships empty
The steps
- Confirm the accounts and the schema plan
- Create the tenant schema and lock it to your admin logins
- Point every REST call at the schema without editing sixty call sites
- Clone the pages, brand them, wire the crons and the reply webhook
- Expose your email platform to your AI with a local MCP server (optional)
- Stand up the analytics shell with mock data marked as mock
- Deploy and verify signed in
Goes further if you have already built Build the email proposal engine (mine, draft, push, approve, send through ActiveCampaign). You can build this without it.
Get the full playbook
Part of: Get your database sorted