Your first app in 10 minutes

Start state: a fresh clone of geenius-mvp with pnpm install done. End state: a full-stack webapp — auth, theming, 12 features — running locally and deployed to a live URL. Every command below is copy-pasteable from the repo root unless a step says otherwise.

The full quickstart, end to end.

1. Check the machine

pnpm doctor

Expected: every required check green. If cloudflare login shows ✖, that is fine for now — scaffolding and local dev work without it; run the printed fix (npx wrangler login) before step 8.

2. Scaffold

pnpm new launchpad --title "Launchpad" --type webapp --design prism --accent violet \
  --mode dark --layout sidebar --features all

Expected output:

✓ apps/launchpad scaffolded
  title    Launchpad
  design   prism · violet · dark · layout: sidebar
  type     webapp (react stack, convex db)
  features dashboard, settings, example, records, activity, api-keys, team, billing, admin, inbox, feedback, ai, uploads, mcp
  port     5200

Next steps:
  pnpm install
  cd apps/launchpad && npx convex dev --once   # first run: creates your Convex backend + types
  pnpm dev                                   # http://localhost:5200
  pnpm deploy launchpad                        # → Convex Cloud + Cloudflare Pages

3. Install workspace deps

pnpm install

4. Create the Convex backend

cd apps/launchpad
npx convex dev --once

First run: the Convex CLI logs you in (browser flow), creates a dev deployment, writes .env.local, and generates the typed API in convex/_generated/. Expected: it exits cleanly after "Convex functions ready".

NEVER delete apps/launchpad/.env.local and never run convex dev --configure=new on an app that has one — either action mints a duplicate cloud project. This is the number one way to break an app.

5. Prove it compiles

pnpm exec tsc --noEmit

Expected: no output, exit code 0. A green tsc is the standing merge gate for every change you make later.

6. Run it

pnpm dev

Open http://localhost:5200. You land on the marketing page (hero, features, steps, CTA) — that is what logged-out visitors see.

7. Sign up and look around

Click Get started, sign up with any email + password (Better Auth, sessions included). You are now in the authed shell. The tour:

  • Dashboard — the landing page; every screen in the nav is a FeatureModule from src/features/
  • Items (example) — the minimal CRUD reference
  • Records — one config, nine switchable views (table, list, grid, board, gallery, timeline, calendar, stats, canvas); the pattern to clone for your own domain
  • AI, Uploads, Activity, Inbox, Feedback — ready-made feature screens
  • API Keys + MCP — programmatic access; your app is itself an MCP server
  • Team, Billing, Admin, Settings — membership, plans, role-gated admin, preferences
  • The workspace switcher and theming (100 designs × 18 accents × dark/light) live in the chrome

8. Deploy

cd ../..
pnpm deploy launchpad

Expected: the Convex backend deploys first (reusing the project recorded in .env.local), the SPA builds against production URLs, Cloudflare Pages receives the files, and SITE_URL is synced so sign-in works on the deployed origin. The last lines print your live https://geenius-mvp-launchpad.pages.dev URL; the provider choice is remembered in apps/launchpad/.deploy.json.

What you built

  • A deployed full-stack app: Convex backend + Better Auth + 12 optional features + always-on dashboard and settings
  • A local dev loop: pnpm dev, with npx convex codegen && pnpm exec tsc --noEmit after any backend change
  • A repeatable deploy: pnpm deploy launchpad, idempotent, provider remembered