DocsDevelopersSelf-host

Self-host

Trackstage is MIT-licensed and runs on a free Convex backend — about five minutes from clone to a working app.

  1. Clone it and install.

    Terminal
    git clone https://github.com/markokraemer/trackstage
    cd trackstage
    pnpm install
  2. Provision your backend. This opens a browser once to sign you in to Convex, then writes the connection into .env.local.

    Terminal
    pnpm dev:setup   # signs you in to Convex and provisions a free backend
  3. Start it. Seeding is optional — it fills the app with a demo event so you have something to click.

    Terminal
    pnpm dev                          # http://localhost:3000
    pnpm exec convex run seed:setup   # optional: demo event + organizer login
  4. Deploy when you are ready. One command pushes the Convex backend and the Cloudflare Workers frontend.

    Terminal
    pnpm deploy   # Convex backend + Cloudflare Workers frontend

Optional settings

Set these on your Convex deployment. Everything works without them.

  • RESEND_API_KEY

    Sends real email. Without it, every message is written to the outbox instead.

  • SITE_URL

    Your app's public origin. Required for MCP OAuth and for links inside emails.

  • PUBLIC_API_TOKEN

    The bearer token the read-only HTTP API accepts.

  • OPENROUTER_API_KEY

    Turns the AI copilot on.

  • REQUIRE_EMAIL_VERIFICATION

    Set it to block password sign-in until an address is confirmed. Off by default.

Your first account, before you configure email. Signing up sends a confirmation link, and without RESEND_API_KEY that link is only written to the outbox — which you need to be signed in to read. Two ways round it: set RESEND_API_KEY first, or sign up with an @example.com address, which is born confirmed (it is a reserved domain that can never receive mail, so it is never walled behind it). Seeding does the same for its demo organizer.
Your own deployment gets the same API and MCP server — point them at your host instead of the demo one.