devforge 1.4.0 copy "devforge: ^1.4.0" to clipboard
devforge: ^1.4.0 copied to clipboard

CLI tool to generate Flutter/Dart boilerplate code.

devforge #

Dart Flutter License

๐Ÿš€ A powerful CLI for generating Flutter/Dart boilerplate code

Stop writing the same utility files over and overโ€”let devforge handle the heavy lifting!


๐Ÿ“š Documentation #

Document Description
doc/COMMANDS.md Full command reference with examples
doc/CONFIGURATION.md User and project configuration (devforge.yaml)
doc/ARCHITECTURE.md Project structure and execution flow
doc/CONTRIBUTING.md How to contribute and add generators/commands
doc/README.md Documentation index

๐Ÿ“‘ Table of contents #


๐ŸŽฏ Project Goals #

Goal Description
โšก Simple commands Provide straightforward commands for common Flutter code generation workflows
๐Ÿ”„ Reduce repetition Cut down repetitive setup and manual file creation
๐Ÿ“‹ Dual modes Support both direct commands and interactive menu-driven generation

โœจ Features #

devforge offers both direct command execution and an interactive mode to quickly scaffold necessary services and utilities:

Icon Feature Description
๐ŸŒ ApiClient Service Creates api_client.dart with Dio-based API setup + logger_interceptor.dart
๐Ÿ“ฆ Assets Utility Creates assets_utils.dart with static paths for all resources in assets/
๐Ÿ”” FCM Service Generates fcm_service.dart for Firebase Cloud Messaging setup
๐Ÿ”‘ Refresh Token Service Scaffolds refresh_token.dart for token refresh logic
๐Ÿ’พ Local Storage Service Creates SharedPreferencesService or GetStorageService
๐Ÿ—„๏ธ Sqflite Service Creates sqflite_service.dart for local SQLite storage
๐Ÿ“„ Pagination Utilities Creates controller + paging_list_view.dart / paging_custom_scroll_view.dart
๐Ÿงฉ BLoC Boilerplate Creates bloc folder with bloc.dart, state.dart, event.dart
๐ŸŽฎ GetX Boilerplate Creates GetX folder with controller.dart, bindings.dart, screen.dart
๐Ÿ–ผ๏ธ App Icon Generator Generates app icons for all supported platforms
๐ŸŒ Localization Extract strings, generate locale keys and translation files
๐Ÿฉบ Flutter doctor Run environment and dependency checks
๐Ÿงน Cache cleaning Flutter clean and optional pub cache clean
๐Ÿ“ฆ Flavor builds Build APK, AppBundle, iOS, or IPA with optional flavor
๐ŸŽ›๏ธ Interactive Mode Use devforge run for a friendly menu-driven experience

๐Ÿ“‹ Requirements #

Requirement Details
๐ŸŽฏ Dart SDK >=3.0.0 <4.0.0
๐Ÿ“ฆ Flutter/Dart project Generated files are placed under lib/
๐Ÿ”— PATH Ensure ~/.pub-cache/bin (or equivalent) is in your PATH

๐Ÿš€ Installation #

1๏ธโƒฃ Activate the package #

Activate devforge globally using the Dart package manager:

dart pub global activate devforge

2๏ธโƒฃ Verify installation #

devforge --help
# or
devforge -h

3๏ธโƒฃ Check version #

devforge --version
# or
devforge -v

๐Ÿ‘จโ€๐Ÿ’ป Usage #

There are two primary ways to use DevForge: interactive mode and direct commands.

1๏ธโƒฃ Interactive mode (devforge run) #

For generating multiple files at once or for a guided experience, use the run command:

devforge run

This launches an interactive multi-select menu and lets you choose which services you want to generate:

? Select what you have to generate:

[ ] Generate ApiClient
[ ] Generate AssetsUtils
[ ] Generate FcmService
[ ] Generate RefreshToken service
[ ] Generate Local Storage Service
[ ] Generate SqfliteService
[ ] Generate Pagination Service
[ ] Generate BLoC folder
[ ] Generate Getx folder
[ ] Generate App icons
[ ] Generate Localization (locale keys + translation files)
[ ] Run Flutter doctor
[ ] Clean (Flutter + optional pub cache)
[ ] Build (APK / AppBundle / iOS / IPA with optional flavor)

2๏ธโƒฃ Direct commands #

Use these commands for quick, single-purpose generation:

Command Description Output file(s) / effect
devforge generate_config Generates a devforge.yaml configuration file in the current project. devforge.yaml in the project root
devforge userInfo Opens an interactive prompt to update your stored name (used in generated file comments). Updates user name stored in DevForge config
devforge show_user_name Prints your currently saved user name. Outputs the saved name in the terminal
devforge api_client Generates a boilerplate service for handling API calls. lib/api_client.dart, lib/logger_interceptor.dart
devforge assets Scans the assets/ folder and generates the assets utility file. lib/assets_utils.dart
devforge fcm Generates a boilerplate service for handling FCM. lib/fcm_service.dart
devforge refresh Generates the service for managing refresh token logic. lib/refresh_token.dart
devforge local_storage Interactively chooses and generates either shared_preferences or get_storage service. lib/shared_preferences_service.dart or lib/get_storage_service.dart
devforge sqflite Generates a sqflite singleton service. lib/sqflite_service.dart
devforge pagination Generates a controller and reusable widgets for paginated lists. lib/pagination_controller.dart, lib/paging_list_view.dart, lib/paging_custom_scroll_view.dart
devforge bloc Generates a BLoC directory with bloc.dart, state.dart, and event.dart. BLoC folder (path chosen interactively)
devforge getx Generates a GetX directory with controllers, bindings, and views. GetX folder (path chosen interactively)
devforge app-icon Generates app icons of different sizes in platform-specific folders. Platform-specific icon assets
devforge localize Extracts strings, generates locale keys and translation files. lib/locale_keys.dart, lib/en.dart, etc., lib/localization_service.dart
devforge doctor Runs Flutter doctor to check environment and dependencies. Terminal output from flutter doctor -v
devforge clean Cleans Flutter build/cache; optionally cleans Dart pub cache. Interactive choice, then runs flutter clean (and optionally dart pub cache clean)
devforge build Builds APK, AppBundle, iOS, or IPA with optional flavor. Interactive menu for target and flavor, then runs flutter build

If you pass --help with no command, youโ€™ll see the full list of supported commands.


๐Ÿ› ๏ธ Configuration #

DevForge stores your author name and can generate a project-level configuration file.

Action Command
๐Ÿ‘ค Update name devforge userInfo
๐Ÿ‘๏ธ Show saved name devforge show_user_name
โš™๏ธ Generate config devforge generate_config

โ„น๏ธ On first run, DevForge prompts for your name (used in generated file comments).
โš™๏ธ generate_config creates devforge.yaml in the current directory for customizing generators.


๐Ÿ“‚ Output structure #

Generated files are placed in the lib/ directory or in a subfolder you specify:

  • ๐Ÿ“ Service files (API client, FCM, storage, sqflite, pagination) โ†’ created under lib/ by default
  • ๐Ÿ“ Folder-based generators (BLoC / GetX) โ†’ you choose the target path interactively
  • ๐Ÿ“ App icons โ†’ generated in platform-specific asset folders (Android/iOS)
  • ๐Ÿ” Flutter project detection โ€” Generator commands check for a Flutter project (e.g. pubspec.yaml with Flutter SDK) before running.

๐Ÿ“ Project Structure #

devforge/
โ”œโ”€โ”€ bin/
โ”‚   โ””โ”€โ”€ devforge.dart              # CLI entrypoint
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ generators/                # Code generators
โ”‚   โ”‚   โ”œโ”€โ”€ api_client_generator.dart
โ”‚   โ”‚   โ”œโ”€โ”€ assets_generator.dart
โ”‚   โ”‚   โ”œโ”€โ”€ bloc_generator.dart
โ”‚   โ”‚   โ”œโ”€โ”€ fcm_generator.dart
โ”‚   โ”‚   โ”œโ”€โ”€ getx_generator.dart
โ”‚   โ”‚   โ”œโ”€โ”€ app_storage_generator.dart
โ”‚   โ”‚   โ”œโ”€โ”€ pagination_generator.dart
โ”‚   โ”‚   โ”œโ”€โ”€ app_icon_generator.dart
โ”‚   โ”‚   โ”œโ”€โ”€ yaml_generator.dart
โ”‚   โ”‚   โ””โ”€โ”€ localization/
โ”‚   โ”œโ”€โ”€ commands/                  # Process-based commands
โ”‚   โ”‚   โ”œโ”€โ”€ doctor_command.dart
โ”‚   โ”‚   โ”œโ”€โ”€ clean_command.dart
โ”‚   โ”‚   โ””โ”€โ”€ build_command.dart
โ”‚   โ”œโ”€โ”€ templates/                 # Dart code templates
โ”‚   โ”‚   โ”œโ”€โ”€ api_client_template.dart
โ”‚   โ”‚   โ”œโ”€โ”€ bloc_template.dart
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ””โ”€โ”€ utils/                     # Shared utilities
โ”‚       โ”œโ”€โ”€ user_config.dart
โ”‚       โ”œโ”€โ”€ devforge_config.dart
โ”‚       โ”œโ”€โ”€ colors.dart
โ”‚       โ”œโ”€โ”€ console_log.dart
โ”‚       โ”œโ”€โ”€ version_checker.dart
โ”‚       โ”œโ”€โ”€ process_runner.dart
โ”‚       โ”œโ”€โ”€ flutter_project_detector.dart
โ”‚       โ””โ”€โ”€ spinner.dart
โ””โ”€โ”€ test/
    โ””โ”€โ”€ devforge_test.dart

๐Ÿ—๏ธ Architecture #

Rule Description
1๏ธโƒฃ Each generator lives in its own file under lib/generators
2๏ธโƒฃ Generators expose a single async function (e.g. generateApiClientService())
3๏ธโƒฃ Templates use string interpolation in lib/templates
4๏ธโƒฃ CLI arguments parsed with the args package
5๏ธโƒฃ Terminal output goes through console_log.dart
6๏ธโƒฃ Colors defined in colors.dart
7๏ธโƒฃ Shell execution (flutter/dart) goes through process_runner.dart
8๏ธโƒฃ Flutter project detection via flutter_project_detector.dart before generators
9๏ธโƒฃ Main entrypoint is bin/devforge.dart

๐Ÿ“ Coding Guidelines #

  • โœ… Follow Dart best practices
  • โœ… Keep functions small and modular
  • โœ… Use async/await for file generation
  • โœ… Print helpful CLI messages
  • โœ… Fail gracefully with meaningful errors

๐Ÿ”ฎ Future Features #

Status Feature
๐Ÿ”œ Additional flavor presets (e.g. dev/staging/prod templates)
๐Ÿ”œ More progress spinners in heavy generators
๐Ÿ”œ Optional config file for default paths

๐Ÿง‘โ€๐Ÿ’ป Development #

If you want to contribute to DevForge:

Step Command
1๏ธโƒฃ Clone git clone https://github.com/prathamesh-mali/devforge.git && cd devforge
2๏ธโƒฃ Dependencies dart pub get
3๏ธโƒฃ Run locally dart run bin/devforge.dart --help
4๏ธโƒฃ Run tests dart test

๐Ÿ“ License #

MIT License. See LICENSE for details.

0
likes
0
points
74
downloads

Publisher

unverified uploader

Weekly Downloads

CLI tool to generate Flutter/Dart boilerplate code.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

args, dio, http, image, interact, intl, path, shared_preferences, yaml

More

Packages that depend on devforge