SignalCartel

Setup guide · 1 of 4

Install SignalKit on Vercel + Supabase

From a fresh repo clone to a public Vercel URL serving your brand. Typical time: 30–60 minutes.

  1. 1.Create a Supabase project

    In the Supabase dashboard, create a new project. Note the project ref (the URL prefix wzbcfdisgomzhaztoxyv-style identifier), the anon key, and the service-role key. Save the database password in your password manager — you will need it once for migration push.

  2. 2.Clone the SignalKit repo + install dependencies

    Clone the GitHub repository we share with you at kickoff. Run npm install. Copy .env.local.example to .env.local and fill in NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY, and SIGNALKIT_LICENSE_TOKEN. Run npm run dev and confirm the homepage loads at http://localhost:3010.

  3. 3.Apply database migrations

    Install the Supabase CLI (supabase --version should print 2.x). Run supabase link --project-ref <your-ref>. Authenticate with a Personal Access Token if your CLI is signed into a different Supabase account. Then run supabase db push --linked --include-all --yes. You should see a list of 20260516+ migrations applied successfully.

  4. 4.Set BRAND_* environment variables

    Set BRAND_NAME, BRAND_TAGLINE, BRAND_DOMAIN, BRAND_SUPPORT_EMAIL, BRAND_LEGAL_EMAIL, BRAND_LEGAL_ENTITY_NAME, BRAND_LEGAL_ENTITY_REGISTRATION, BRAND_LEGAL_ENTITY_JURISDICTION, and BRAND_PRIMARY_COLOR. Either edit .env.local or paste them into Vercel env vars after deploy. The Hero copy (BRAND_HERO_HEADLINE, BRAND_HERO_SUBHEAD) is optional — defaults are sensible.

  5. 5.Deploy to Vercel

    Connect the GitHub repo to a new Vercel project. Add the same environment variables you set locally to the Production scope (vercel env add NAME production). Trigger a deploy. Build typically completes in under a minute.

  6. 6.Verify the deploy

    Open the Vercel-provided URL. The homepage should render with your brand name and the placeholder strategy cards. Hit /api/health and confirm a 200 with {ok: true, db_reachable: true}. If db_reachable is false, your service-role key or Supabase URL is wrong.

Common gotchas

  • CLI auth scope. If your default Supabase CLI login is a different account than the SignalKit project, every supabase command needs SUPABASE_ACCESS_TOKEN=<PAT> supabase ... in front. Set this in your shell profile.
  • DB push fallback. If you lose the DB password and can't run db push, bundle the migration SQL into one transactional script and paste into Supabase Dashboard → SQL Editor. Future CLI runs see the schema_migrations rows and skip them.
  • Vercel CLI scope drift. If you have multiple Vercel teams, pass --scope <team> on every command. Default team often isn't the one with the deploy.
  • Brand vars cache. BRAND_* values are read at module load, not per request. Update on Vercel, then trigger a redeploy (an empty commit works) — env edits alone don't take effect.