πŸ› οΈ Create Project ARo

This package generates a professional directory structure for Flutter projects with a focus on clean architecture and allows you to include a basic login example using the state manager of your choice (BLoC, Provider, Riverpod, or GetX).

✨ Features

  • πŸ“ Generates folder structure following clean architecture.
  • 🧱 Allows including empty base files.
  • πŸ” Includes login example with simple validation and navigation to Home.

🧩 Generated Structure by default BLoC

  πŸ“lib
   β”‚
   β”œβ”€β”€β”€β”€πŸ“app
   β”‚     β”‚
   β”‚     β”œβ”€β”€β”€πŸ“config
   β”‚     β”‚    β”œβ”€β”€πŸ“constans
   β”‚     β”‚    β”œβ”€β”€πŸ“router
   β”‚     β”‚    β”œβ”€β”€πŸ“styles
   β”‚     β”‚    β””β”€β”€πŸ“themes
   β”‚     β”‚
   β”‚     β”œβ”€β”€β”€πŸ“data
   β”‚     β”‚    β”œβ”€β”€πŸ“datasources
   β”‚     β”‚    β”‚   β”œβ”€β”€πŸ“local
   β”‚     β”‚    β”‚   β”œβ”€β”€πŸ“remote
   β”‚     β”‚    β””β”€β”€πŸ“repositories
   β”‚     β”‚
   β”‚     β”œβ”€β”€β”€πŸ“domain
   β”‚     β”‚    β”œβ”€β”€πŸ“entities
   β”‚     β”‚    β”‚   β”œβ”€β”€πŸ“dtos
   β”‚     β”‚    β”‚   β””β”€β”€πŸ“models
   β”‚     β”‚    β”œβ”€β”€πŸ“repositories
   β”‚     β”‚    β””β”€β”€πŸ“usecases
   β”‚     β”‚
   β”‚     β”œβ”€β”€β”€πŸ“injection
   β”‚     β”‚
   β”‚     β”œβ”€β”€β”€πŸ“presentation
   β”‚     β”‚    β”œβ”€β”€πŸ“blocs
   β”‚     β”‚    β”‚   β”œβ”€β”€πŸ“login
   β”‚     β”‚    β”‚   β””β”€β”€πŸ“signup
   β”‚     β”‚    β”œβ”€β”€πŸ“pages
   β”‚     β”‚    β”‚   β”œβ”€β”€πŸ“login
   β”‚     β”‚    β”‚   β””β”€β”€πŸ“signup
   β”‚     β”‚    β””β”€β”€πŸ“widgets
   β”‚     β”‚        β”œβ”€β”€πŸ“login
   β”‚     β”‚        β””β”€β”€πŸ“signup
   β”‚     β”‚
   β”‚     β””β”€β”€β”€πŸ“utils
   β”‚          β”œβ”€β”€πŸ“helpers
   β”‚          β””β”€β”€πŸ“widgets
   β”‚  
   β””β”€β”€β”€β”€πŸ“core
         β”œβ”€β”€β”€πŸ“errors
         β”œβ”€β”€β”€πŸ“network
         β”œβ”€β”€β”€πŸ“utils
         β””β”€β”€β”€πŸ“widgets

for Provider

   ...
   β”‚     β”œβ”€β”€β”€πŸ“presentation
   β”‚     β”‚    β”œβ”€β”€πŸ“providers
   β”‚     β”‚    β”‚   β”œβ”€β”€πŸ“login
   β”‚     β”‚    β”‚   β””β”€β”€πŸ“signup
   ...

for Riverpod

   ...
   β”‚     β”œβ”€β”€β”€πŸ“presentation
   β”‚     β”‚    β”œβ”€β”€πŸ“controllers
   β”‚     β”‚    β”‚   β”œβ”€β”€πŸ“login
   β”‚     β”‚    β”‚   β””β”€β”€πŸ“signup
   ...

for GetX

   ...
   β”‚     β”œβ”€β”€β”€πŸ“presentation
   β”‚     β”‚    β”œβ”€β”€πŸ“controllers
   β”‚     β”‚    β”‚   β”œβ”€β”€πŸ“login
   β”‚     β”‚    β”‚   β””β”€β”€πŸ“signup
   β”‚     β”‚    β”œβ”€β”€πŸ“bindings
   β”‚     β”‚    β”œβ”€β”€πŸ“pages
   β”‚     β”‚    β”‚   β”œβ”€β”€πŸ“login
   β”‚     β”‚    β”‚   β””β”€β”€πŸ“signup
   ...

πŸ§‘β€πŸ’» Interactive Mode

You can use the interactive mode simply by running:

dart run create_project_aro:create

If you don't provide any flags, you will be prompted to select:

  • The state manager (BLoC, Provider, Riverpod, GetX)
  • The type of generation (Functional demo or Empty folders)

🧩 AVAILABLE COMMANDS

Command Description
dart run create_project_aro:create Start interactive mode
dart run create_project_aro:create --b Creates empty folder structure for BLoC.
dart run create_project_aro:create --p Creates empty folder structure for Provider.
dart run create_project_aro:create --r Creates empty folder structure for Riverpod.
dart run create_project_aro:create --g Creates empty folder structure for GetX.
dart run create_project_aro:create --b --d Creates Structure + functional login demo using BLoC.
dart run create_project_aro:create --p --d Creates Structure + functional login demo using Provider.
dart run create_project_aro:create --r --d Creates Structure + functional login demo using Riverpod.
dart run create_project_aro:create --g --d Creates Structure + functional login demo using GetX.
dart run create_project_aro:create --b --e Creates Structure + empty files using BLoC.
dart run create_project_aro:create --p --e Creates Structure + empty files using Provider.
dart run create_project_aro:create --r --e Creates Structure + empty files using Riverpod.
dart run create_project_aro:create --g --e Creates Structure + empty files using GetX.

πŸ“¦ Install as a dev dependency

It is recommended to add create_project_aro as a dev dependency:

dart pub add --dev create_project_aro

And in your pubspec.yaml:

dev_dependencies:
  create_project_aro: ^0.0.5

🧩About dependencies

Dependencies for demos are at your discretion. The following are recommended according to the chosen state manager.

For BLoC it's recommended to install:

  • flutter_bloc: ^9.0.0
  • equatable: ^2.0.5
  • meta: ^1.15.0

For Provider it's recommended to install:

  • provider: ^6.1.1

For Riverpod it's recommended to install:

  • flutter_riverpod: ^2.4.5

  • riverpod_annotation: ^2.3.0

    Development dependencies:

    • riverpod_generator: ^2.3.5

    • build_runner: ^2.4.6

      To create files:

      flutter pub run build_runner build
      

For GetX it's recommended to install:

  • get: ^4.6.6

βœ… LOGIN EXAMPLE DETAILS

  • Basic field validation (email and password)
  • Correct email: "[email protected]"
  • Correct Password: "123456"
  • If login is successful, redirects to a screen called HomePage
  • Home screen only shows centered text: "HomePage"

πŸ”§ Requirements

  • Dart SDK >= 3.0.0
  • Flutter >= 3.10.0

πŸ§™ AUTHOR

Andres Rodriguez. Passionate about professional, scalable, and maintainable development.

This package aims to be a solid foundation for any type of Flutter project, allowing you to freely choose the most convenient state manager.

πŸ“„ LICENSE

MIT License

Libraries