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.
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