Self-host
Trackstage is MIT-licensed and runs on a free Convex backend — about five minutes from clone to a working app.
Clone it and install.
Terminalgit clone https://github.com/markokraemer/trackstage cd trackstage pnpm installProvision your backend. This opens a browser once to sign you in to Convex, then writes the connection into .env.local.
Terminalpnpm dev:setup # signs you in to Convex and provisions a free backendStart it. Seeding is optional — it fills the app with a demo event so you have something to click.
Terminalpnpm dev # http://localhost:3000 pnpm exec convex run seed:setup # optional: demo event + organizer loginDeploy when you are ready. One command pushes the Convex backend and the Cloudflare Workers frontend.
Terminalpnpm 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.
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.