From purchase to a running local environment in under 15 minutes. From there to deployed: another 10.
You need these installed before you start. All free.
node --versionnpm i -g pnpmbrew install supabase/tap/supabaseYou'll also need accounts with Supabase (free tier works), Stripe (test mode), and Vercel (free tier). None of these require billing information to start.
Purchase a Solo or Team licence at already.wait-what.shop/#pricing. Polar (Merchant of Record) processes the payment and handles tax globally.
Within 1–2 minutes you'll receive an email from GitHub with a repository invite to the private Already repository. Accept it.
Go to the repository on GitHub and click "Use this template" → "Create a new repository". This gives you a clean copy with no shared history — your own repo from commit one.
Then clone your new repo locally:
git clone https://github.com/YOUR_USERNAME/YOUR_REPO_NAME
cd YOUR_REPO_NAME
pnpm install
The setup script validates your env vars, runs database migrations, and bootstraps your Stripe products. It's interactive — it'll tell you what's missing.
cp .env.example .env.local
# Edit .env.local — add your Supabase and Stripe keys
pnpm setup
For billing, run the Stripe bootstrapper after setup:
pnpm setup:stripe
This creates your Stripe products and prices (idempotent — safe to re-run) and writes the price IDs back to .env.local.
First run without cloud accounts? Already runs fully locally without a Supabase or Stripe account. Run supabase start for a local Postgres + Auth stack, and use Stripe test mode keys (no live account needed).
One command starts everything: Next.js, the local Supabase stack, the Stripe CLI webhook listener, and the email preview server.
pnpm dev
Then open:
localhost:3000 — your applocalhost:54323 — Supabase Studio (local DB)localhost:3001 — React Email previewAlready's vercel.json is pre-configured. Connect your repo to a Vercel project and add the production env vars from your .env.local.
vercel deploy --prod
CI/CD is pre-wired via GitHub Actions. Every PR gets a Vercel preview deploy. Playwright E2E tests run against the preview.
All vars are documented in .env.example with inline comments. The minimum set for local dev:
# Supabase (local: run supabase start)
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
DATABASE_URL=
DATABASE_URL_DIRECT=
# Stripe (test mode keys from dashboard)
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
# Resend (dev mode — emails logged, not sent)
RESEND_API_KEY=
pnpm dev # start everything
pnpm db:seed # seed local DB with demo data
pnpm db:studio # open Drizzle Studio (local DB UI)
pnpm reset # drop DB → migrate → seed (~5s)
pnpm email # React Email preview server
pnpm test # Vitest unit + integration tests
pnpm test:e2e # Playwright E2E tests
pnpm already doctor # health check: env, DB, Stripe, deps
Already ships 16 modules. Each has its own docs inside the repo at docs/modules/. Here's the map:
lib/auth/, app/(auth)/lib/billing/, config/billing.ts, app/(billing)/lib/queries/, db/schema/orgs.tsmessaging/, lib/messaging/lib/jobs/, app/api/cron/lib/ai/, per-org credits ledger in db/schema/lib/flags/, config/flags.tsapp/(admin)/, impersonation + audit loglib/security/, suspicious activity + rate limitinglib/i18n/, messages/ (en/de/es)Full module reference docs are inside the repo at docs/, readable by Claude Code and Cursor out of the box.