Skip to content

Latest commit

 

History

History
91 lines (66 loc) · 2.42 KB

File metadata and controls

91 lines (66 loc) · 2.42 KB

create-efr-app

Scaffold modern full-stack applications with best practices baked in.

Usage

# 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

Features

  • 🚀 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

Tech Stack

Base Templates

  • 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)

Optional Addons

  • 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

Development

# Install dependencies
pnpm install

# Run in dev mode
pnpm dev

# Build
pnpm build

# Test the CLI
pnpm start my-test-app

Project Structure

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

Contributing

Contributions welcome! Please read the contributing guidelines first.

License

MIT © eggfriedrice24