create-mf2-app
v2.7.2
Published
Create a production-ready SaaS app with Next.js, Convex, and AI
Readme
mf²
The startup-in-a-command monorepo built for the agent era.
One command scaffolds a Turborepo with eight apps across web, mobile, and desktop, 22 shared packages, and agent instructions that already know the codebase. Everything boots with zero keys — a blank env value just disables that integration.
Quick Start
bunx create-mf2-app my-app
cd my-app
bun run devPrefer GitHub? Click Use this template on the template repository.
The CLI prompts for a project name and package manager, copies the template, creates ready-to-fill .env.local and .env.production files, installs dependencies, and makes an initial commit. Fill in API keys as you need them and start building.
Apps
apps/
app/ Main SaaS application (Next.js, App Router)
web/ Marketing website
api/ Webhooks, cron jobs, external integrations
mobile/ React Native + Expo mobile app
desktop/ Electron desktop app (macOS, Windows, Linux)
docs/ Documentation (Mintlify)
email/ Email templates (React Email)
storybook/ Component workshopPackages
packages/
backend/ Convex database, auth sync, AI agents, workflows
convex/ Convex + Clerk React provider
storage/ Convex file storage and Vercel Blob
design-system/ 50+ shadcn/ui components with dark mode
design-system-native/ React Native UI components (NativeWind)
auth/ Clerk authentication and route protection
payments/ Stripe via @convex-dev/stripe
ai/ Vercel AI SDK, multi-model routing
analytics/ PostHog event tracking and sessions
cms/ BaseHub headless CMS
collaboration/ Liveblocks cursors and presence
email/ Resend transactional email
feature-flags/ Vercel feature flags with overrides
internationalization/ next-intl translations
notifications/ Knock in-app notification feeds
seo/ Metadata, JSON-LD, Open Graph
webhooks/ Svix outbound webhook delivery
observability/ Sentry error tracking, BetterStack logging
rate-limit/ Upstash Redis rate limiting
security/ Arcjet bot detection, Nosecone secure headers
next-config/ Shared Next.js configuration
typescript-config/ Shared tsconfigEach app imports only the packages it needs. Five Convex Components (Stripe, Resend, Workflow, Action Retrier, Migrations) ship pre-installed. Stack details at mf2.dev/docs/structure.
Built for Agents
.agents/AGENTS.md is the single agent entry point: essential commands, conventions, and pointers to the vendored skills. AGENTS.md, CLAUDE.md, and .claude/CLAUDE.md are one-line anchors that resolve to it, so every agent lands on the same instructions.
| File | Purpose |
|------|---------|
| .agents/AGENTS.md | Canonical agent instructions |
| AGENTS.md, CLAUDE.md, .claude/CLAUDE.md | Anchors that resolve to .agents/AGENTS.md |
| .agents/skills/ | 40+ vendored skills: Convex, Clerk, Expo, Stripe, shadcn, Turborepo, and more |
| .claude/skills/ | Mirror of .agents/skills/ for Claude Code |
| .mcp.json | MCP servers: Convex, Stripe, Clerk, PostHog, Vercel, Context7, Ultracite |
Tell your agent to use the mf2 skill with your product idea: it maps the requirements onto the scaffold and plans a parallelized build.
Security
Scaffolds ship with supply-chain defenses on: a three-day cooldown on newly published package versions (bun, pnpm, and npm), install scripts blocked by default, registry-only transitive resolution, and Arcjet bot detection with rate limiting at runtime.
CLI
Pass the project name and flags to skip the interactive prompts:
bunx create-mf2-app my-app --package-manager bun
bunx create-mf2-app --name my-app --disable-git| Flag | Effect |
|------|--------|
| [name] | Set project name (positional) |
| --name <name> | Set project name (wins over the positional) |
| --package-manager <manager> | bun (default), npm, yarn, or pnpm |
| --disable-git | Skip git initialization |
For npm, yarn, or pnpm, the CLI converts workspace:* dependencies, rewrites bun-specific scripts, and adjusts configuration files.
Deploy
Each app deploys as a separate Vercel project:
- Import your repo at vercel.com/new
- Set the root directory (
apps/app,apps/web, orapps/api) - Add environment variables from
.env.production - Push to
mainand Vercel rebuilds only affected apps
Documentation (apps/docs) deploys via Mintlify; the backend via bunx convex deploy.
Documentation
Commands, environment setup, and the full stack reference live at mf2.dev/docs.
Contributions welcome — see the Contributing Guide.
License
MIT © Ocarina Labs
