๐Ÿฐ Flutter Bunny CLI

A powerful CLI tool for creating and managing Flutter applications with best practices and consistent architecture.

Pub Version License: MIT Docs

Example

๐Ÿ“š Overview

Flutter Bunny is an opinionated CLI tool that helps you create, manage, and maintain Flutter applications with a focus on:

  • Best practices โ€” Follow Flutter community best practices
  • Consistent architecture โ€” Choose Clean Architecture, MVVM, or MVC
  • Rapid development โ€” Generate components quickly
  • Testing support โ€” Templates for unit, widget, and integration tests
  • Project maintenance โ€” Keep your project organized and up-to-date

๐Ÿš€ Installation

Using Dart

dart pub global activate flutter_bunny 1.1.1

# Verify installation
flutter_bunny --version

Make sure the pub cache bin directory is in your PATH.


Using Homebrew (macOS)

brew tap demola234/homebrew-tap
brew install flutter_bunny

๐Ÿ—๏ธ Available Commands

Command Description
create Create a new Flutter app interactively
generate Generate screens, widgets, models, and more
analyze Run static analysis
build Run build_runner
update Update Flutter Bunny CLI
config Manage configuration settings
doctor Check Flutter project health

Run flutter_bunny help <command> for detailed usage.


๐Ÿ› ๏ธ Creating a New Flutter Project

flutter_bunny create app

You'll be guided through selecting:

  • Project name and organization
  • Architecture pattern (Clean Architecture, MVVM, MVC)
  • State management (Provider, Riverpod, Bloc, etc.)
  • Features and modules to include

Example with specific options:

flutter_bunny create app --name my_awesome_app --architecture clean_architecture --state-management riverpod

โœจ Generating Models

You can now generate models interactively, from JSON samples, or with specific serialization methods.

Commands

# Start an interactive session
flutter_bunny generate model --name User

# Generate a model with specific serializer
flutter_bunny generate model --name Product --serializer json_serializable

# Generate a model from a JSON string
flutter_bunny generate model --name User --json '{"id": 1, "name": "John", "email": "john@example.com"}'

# Generate in non-interactive mode
flutter_bunny generate model --name Order --interactive false

Options

Option Description
--name or -n (Required in non-interactive mode) Model name
--directory or -d Directory to create model (default: lib/models)
--serializer or -s Serialization method: freezed, json_serializable (default), manual, or equatable
--interactive or -i Use interactive mode (default: true)
--json Provide a JSON sample or path to generate the model

Interactive Mode

When enabled (--interactive true):

  • Prompt for model name
  • Choose serialization method
  • Enter JSON manually or load from file
  • Detect nested models and generate them
  • Suggest dependencies like freezed_annotation, json_serializable

Examples

Generate Model with Interactive Configuration

flutter_bunny generate model

Generate Product Model Using Freezed

flutter_bunny generate model --name Product --serializer freezed

Generate Model from JSON File

flutter_bunny generate model --name ApiResponse --json path/to/sample.json

Generate Multiple Models from Complex JSON

flutter_bunny generate model --name Order --json '{"id": 123, "items": [{"productId": 1, "quantity": 2}], "customer": {"id": 456, "name": "John Doe"}}'

Generated Output

  • Model files created in lib/models
  • Correct serialization setup
  • Imports and part files generated if needed
  • Dependency suggestions provided
  • Build runner commands shared

๐Ÿ“‹ Project Structure Examples

Clean Architecture

lib/
โ”œโ”€โ”€ core/
โ”‚   โ”œโ”€โ”€ errors/
โ”‚   โ”œโ”€โ”€ network/
โ”‚   โ”œโ”€โ”€ utils/
โ”‚   โ””โ”€โ”€ theme/
โ”œโ”€โ”€ data/
โ”‚   โ”œโ”€โ”€ datasources/
โ”‚   โ”œโ”€โ”€ models/
โ”‚   โ””โ”€โ”€ repositories/
โ”œโ”€โ”€ domain/
โ”‚   โ”œโ”€โ”€ entities/
โ”‚   โ”œโ”€โ”€ repositories/
โ”‚   โ””โ”€โ”€ usecases/
โ”œโ”€โ”€ presentation/
โ”‚   โ”œโ”€โ”€ blocs/
โ”‚   โ”œโ”€โ”€ pages/
โ”‚   โ””โ”€โ”€ widgets/
โ””โ”€โ”€ main.dart

MVVM

lib/
โ”œโ”€โ”€ models/
โ”œโ”€โ”€ services/
โ”œโ”€โ”€ view_models/
โ”œโ”€โ”€ views/
โ”‚   โ”œโ”€โ”€ screens/
โ”‚   โ””โ”€โ”€ widgets/
โ””โ”€โ”€ main.dart

MVC

lib/
โ”œโ”€โ”€ models/
โ”œโ”€โ”€ services/
โ”œโ”€โ”€ views/
โ”‚   โ”œโ”€โ”€ controllers/
โ”‚   โ”œโ”€โ”€ models/
โ”‚   โ””โ”€โ”€ views/
โ””โ”€โ”€ main.dart

๐Ÿงฉ Supported State Management Options

  • Provider
  • Riverpod
  • Bloc/Cubit
  • GetX
  • MobX
  • Redux

๐Ÿงช Testing Utilities

Projects are scaffolded with testing support:

# Run all tests
flutter_bunny test

# Run unit tests only
flutter_bunny test --type unit

Includes:

  • Unit Tests
  • Widget Tests
  • Integration Tests

๐Ÿ”ง Maintenance Commands

# Analyze the project
flutter_bunny analyze

# Check project health
flutter_bunny doctor

# Update CLI
flutter_bunny update

๐ŸŽจ Configuration and Custom Templates

# Show current config
flutter_bunny config show

# Set defaults (e.g., architecture)
flutter_bunny config set default_architecture clean_architecture

You can also create custom templates under ~/.flutter_bunny/templates/.


๐Ÿค Contributing

Contributions are welcome! Please:

  1. Fork the repo
  2. Create a feature branch
  3. Submit a Pull Request

Check the CONTRIBUTING.md for details.


๐Ÿ“„ License

Licensed under the MIT License.


๐Ÿ“ž Support

Libraries

flutter_bunny
Flutter Bunny CLI ๐Ÿฐ