Scaffold modern full-stack applications with best practices baked in.
# pnpm (recommended)
pnpm create efr-app my-app
# npm
npm create efr-app my-app
# yarn
yarn create efr-app my-app
# bun
bun create efr-app my-app- 🚀 Multiple platforms: Desktop (Tauri) or Web
- ⚛️ Modern frameworks: React + Vite or Next.js
- 🎨 shadcn/ui: Beautiful, accessible components
- 🔥 TypeScript: Full type safety
- 🎯 Best practices: ESLint (antfu config), proper configs
- 📦 Package managers: pnpm, npm, yarn, or bun
- 🔄 CI/CD: Optional GitHub Actions workflows
- 🎭 Addons: TanStack Query, Drizzle ORM, tRPC
- Tauri + React: Cross-platform desktop apps with Rust backend
- Tauri + Next.js: Desktop apps with Next.js (coming soon)
- Web + React: Fast web apps with Vite
- Web + Next.js: Full-stack web apps (coming soon)
- shadcn/ui: Pre-configured UI component library
- TanStack Query: Powerful async state management
- Drizzle ORM: TypeScript-first database toolkit
- tRPC: End-to-end typesafe APIs
# Install dependencies
pnpm install
# Run in dev mode
pnpm dev
# Build
pnpm build
# Test the CLI
pnpm start my-test-appcreate-efr-app/
├── src/
│ ├── index.ts # CLI entry point
│ ├── cli.ts # Main CLI logic
│ ├── prompts.ts # Interactive prompts
│ ├── scaffold.ts # Project scaffolding (fetches from GitHub)
│ ├── types.ts # TypeScript types
│ ├── installers/ # Base and addon installers
│ │ ├── base.ts # GitHub repo references for templates
│ │ └── addons.ts # Addon configurations
│ └── utils/ # Helper utilities
│ ├── files.ts # File operations & token replacement
│ └── package.ts # Package.json updates
└── dist/ # Build output
Note: Templates are fetched from GitHub repositories (using giget) rather than bundled locally. This keeps the CLI package size small and allows templates to be updated independently.
Contributions welcome! Please read the contributing guidelines first.
MIT © eggfriedrice24