blue_bird_cli 0.1.4 copy "blue_bird_cli: ^0.1.4" to clipboard
blue_bird_cli: ^0.1.4 copied to clipboard

A Command-Line Interface for generating complex large-scale Flutter project and package architectures.

Blue Bird CLI

coverage style: very good analysis License: MIT


A Command-Line Interface for generating complex large-scale Flutter project and package architectures.

Generated by the Very Good CLI πŸ€–

We encourage the VGV team to make accesible the Flutter and Dart CLIs from the very good cli package so we can extend those classes and add new features instead of repeating part of their code.

Thanks to VGV for the inspiration and the work that made possible the creation of the Blue Bird CLI πŸ‘.


Getting Started πŸš€ #

Installing #

dart pub global activate blue_bird_cli

Usage #

# Show CLI version
$ blue_bird --version

# Show usage help
$ blue_bird --help

update command #

Use the update command if there is a new version of the Blue Bird CLI and you want to update your local version to the last one.

# Update the Blue Bird CLI
blue_bird update

create command #

The following command create a Flutter project with a more complex architecture ideally for large Flutter apps.

# Create a new Flutter project named my_project
blue_bird create my_project

The stucture of the new project will be the following:

πŸ“¦my_project
┣ πŸ“‚android
┣ πŸ“‚core
┃ ┣ πŸ“‚components
┃ ┃ ┣ πŸ“‚lib
┃ ┃ ┃ ┣ πŸ“‚src
┃ ┃ ┃ ┃ ┣ πŸ“‚config
┃ ┃ ┃ ┃ ┃ β”— πŸ“œcomponents_config.dart
┃ ┃ ┃ ┃ β”— πŸ“‚presentation
┃ ┃ ┃ ┃ ┃ β”— πŸ“œcomponents_example_widget.dart
┃ ┃ ┃ β”— πŸ“œcomponents.dart
┃ ┃ ┣ πŸ“‚test
┃ ┃ ┃ β”— πŸ“‚src
┃ ┃ ┃ ┃ β”— πŸ“œmy_project_test.dart
┃ ┃ ┣ πŸ“œanalysis_options.yaml
┃ ┃ β”— πŸ“œpubspec.yaml
┃ ┣ πŸ“‚dependencies
┃ ┃ ┣ πŸ“‚lib
┃ ┃ ┃ β”— πŸ“œdependencies.dart
┃ ┃ ┣ πŸ“œanalysis_options.yaml
┃ ┃ β”— πŸ“œpubspec.yaml
┃ ┣ πŸ“‚di
┃ ┃ ┣ πŸ“‚lib
┃ ┃ ┃ ┣ πŸ“‚src
┃ ┃ ┃ ┃ β”— πŸ“œdi_injection_module.dart
┃ ┃ ┃ β”— πŸ“œdi.dart
┃ ┃ ┣ πŸ“œanalysis_options.yaml
┃ ┃ β”— πŸ“œpubspec.yaml
┃ ┣ πŸ“‚internationalization
┃ ┃ ┣ πŸ“‚lib
┃ ┃ ┃ ┣ πŸ“‚src
┃ ┃ ┃ ┃ β”— πŸ“‚l10n
┃ ┃ ┃ ┃ ┃ β”— πŸ“œintl_en.arb
┃ ┃ ┃ β”— πŸ“œinternationalization.dart
┃ ┃ ┣ πŸ“œanalysis_options.yaml
┃ ┃ ┣ πŸ“œl10n.yaml
┃ ┃ β”— πŸ“œpubspec.yaml
┃ ┣ πŸ“‚network
┃ ┃ ┣ πŸ“‚lib
┃ ┃ ┃ β”— πŸ“œnetwork.dart
┃ ┃ ┣ πŸ“œanalysis_options.yaml
┃ ┃ β”— πŸ“œpubspec.yaml
┃ ┣ πŸ“‚routes
┃ ┃ ┣ πŸ“‚lib
┃ ┃ ┃ ┣ πŸ“‚src
┃ ┃ ┃ ┃ β”— πŸ“œroute_names.dart
┃ ┃ ┃ β”— πŸ“œroutes.dart
┃ ┃ ┣ πŸ“œanalysis_options.yaml
┃ ┃ β”— πŸ“œpubspec.yaml
┃ β”— πŸ“‚theme
┃ ┃ ┣ πŸ“‚assets
┃ ┃ ┃ ┣ πŸ“‚images
┃ ┃ ┃ ┃ β”— πŸ“œempty_img.png
┃ ┃ ┃ β”— πŸ“‚svg
┃ ┃ ┃ ┃ β”— πŸ“œempty_ico.svg
┃ ┃ ┣ πŸ“‚lib
┃ ┃ ┃ ┣ πŸ“‚src
┃ ┃ ┃ ┃ ┣ πŸ“‚colors
┃ ┃ ┃ ┃ ┃ β”— πŸ“œtheme_colors.dart
┃ ┃ ┃ ┃ ┣ πŸ“‚icons
┃ ┃ ┃ ┃ ┃ β”— πŸ“œtheme_icons.dart
┃ ┃ ┃ ┃ ┣ πŸ“‚images
┃ ┃ ┃ ┃ ┃ β”— πŸ“œtheme_images.dart
┃ ┃ ┃ ┃ ┣ πŸ“‚spacers
┃ ┃ ┃ ┃ ┃ β”— πŸ“œtheme_spacers.dart
┃ ┃ ┃ ┃ ┣ πŸ“‚text_styles
┃ ┃ ┃ ┃ ┃ β”— πŸ“œtheme_text_styles.dart
┃ ┃ ┃ ┃ β”— πŸ“‚theme_datas
┃ ┃ ┃ ┃ ┃ β”— πŸ“œtheme_datas.dart
┃ ┃ ┃ β”— πŸ“œtheme.dart
┃ ┃ ┣ πŸ“œanalysis_options.yaml
┃ ┃ β”— πŸ“œpubspec.yaml
┣ πŸ“‚features
┃ β”— πŸ“‚feat_example
┃ ┃ ┣ πŸ“‚lib
┃ ┃ ┃ ┣ πŸ“‚src
┃ ┃ ┃ ┃ ┣ πŸ“‚config
┃ ┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_const.dart
┃ ┃ ┃ ┃ ┣ πŸ“‚data
┃ ┃ ┃ ┃ ┃ ┣ πŸ“‚datasources
┃ ┃ ┃ ┃ ┃ ┃ ┣ πŸ“‚local
┃ ┃ ┃ ┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_local_datasource_impl.dart
┃ ┃ ┃ ┃ ┃ ┃ ┣ πŸ“‚remote
┃ ┃ ┃ ┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_remote_datasource_impl.dart
┃ ┃ ┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_datasource.dart
┃ ┃ ┃ ┃ ┃ ┣ πŸ“‚models
┃ ┃ ┃ ┃ ┃ ┃ ┣ πŸ“œfeat_example_request_model.dart
┃ ┃ ┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_response_model.dart
┃ ┃ ┃ ┃ ┃ β”— πŸ“‚repositories
┃ ┃ ┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_repository_impl.dart
┃ ┃ ┃ ┃ ┣ πŸ“‚di
┃ ┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_provider.dart
┃ ┃ ┃ ┃ ┣ πŸ“‚domain
┃ ┃ ┃ ┃ ┃ ┣ πŸ“‚entities
┃ ┃ ┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_entity.dart
┃ ┃ ┃ ┃ ┃ ┣ πŸ“‚repositories
┃ ┃ ┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_respository.dart
┃ ┃ ┃ ┃ ┃ β”— πŸ“‚usecases
┃ ┃ ┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_usecase.dart
┃ ┃ ┃ ┃ β”— πŸ“‚presentation
┃ ┃ ┃ ┃ ┃ ┣ πŸ“‚application
┃ ┃ ┃ ┃ ┃ ┃ β”— πŸ“‚feat_example_counter
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ πŸ“œfeat_example_counter_cubit.dart
┃ ┃ ┃ ┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_counter_state.dart
┃ ┃ ┃ ┃ ┃ ┣ πŸ“‚pages
┃ ┃ ┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_page.dart
┃ ┃ ┃ ┃ ┃ β”— πŸ“‚widgets
┃ ┃ ┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_widget.dart
┃ ┃ ┃ β”— πŸ“œfeat_example.dart
┃ ┃ ┣ πŸ“‚test
┃ ┃ ┃ β”— πŸ“‚src
┃ ┃ ┃ ┃ β”— πŸ“œfeat_example_test.dart
┃ ┃ ┣ πŸ“œanalysis_options.yaml
┃ ┃ β”— πŸ“œpubspec.yaml
┣ πŸ“‚ios
┣ πŸ“‚resources
┣ πŸ“œ.gitignore
┣ πŸ“œanalysis_options.yaml
┣ πŸ“œpubspec.yaml
β”— πŸ“œREADME.md

core: Contains all the core functionalities and configurations used by the packages under features and the main project.

core/components: Contains the common widgets for the whole app.

core/dependencies: The third party dependencies and core packages are exported here to be used in the whole app.

core/di: Dependency injection configuration.

core/internationalization: Contains the app internationalization configuration.

core/network: Place your network configuration here.

core/routes: Contains the names of the app routes.

core/theme: App theme configuration: theme data, colors, icons, images, etc.

features: Project well known and specific features with single responsability.

features/feat_example: Feature example.

features/feat_example/.../data: Contains repository and datasource implementations and service models.

features/feat_example/.../data/datasources/local: Local datasource implementation.

features/feat_example/.../data/datasources/remote: Remote datasource implementation.

features/feat_example/.../data/models: Request and response service models.

features/feat_example/.../data/repositories: Repository implementation.

features/feat_example/.../di: Feature dependency injection set up.

features/feat_example/.../domain: Contains entities and interfaces.

features/feat_example/.../domain/entities: Specific feature entities.

features/feat_example/.../domain/repositories: Specific feature repository interfaces.

features/feat_example/.../domain/usecases: Specific feature usecases.

features/feat_example/.../presentation: Feature visual components and business logic.

features/feat_example/.../presentation/application: Visual component's business logic.

features/feat_example/.../presentation/pages: Specific feature pages.

features/feat_example/.../presentation/widgets: Specific feature atomic widgets.

The rest of possible create command usages are the following:

# Create a new Flutter project named my_project
blue_bird create my_project

# Create a new Flutter project named my_project with a custom org
blue_bird create my_project --desc "My new Flutter project" --org "com.custom.org"

# Create a new Flutter project named my_project with a custom application id
blue_bird create my_project --application-id "com.custom.app.id"

# Create a new Flutter project named my_project at directory named my_projects
blue_bird create my_project --output-directory "my_projects"

# Create a new Flutter package named my_package (used for the feat_example package generation)
blue_bird create my_package --template flutter_package

11
likes
130
pub points
0%
popularity

Publisher

verified publishernetwriper.com

A Command-Line Interface for generating complex large-scale Flutter project and package architectures.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

args, cli_completion, glob, lcov_parser, mason, mason_logger, meta, path, pub_updater, pubspec_parse, stack_trace, universal_io, usage, very_good_test_runner

More

Packages that depend on blue_bird_cli