appforge_cli 0.1.3 copy "appforge_cli: ^0.1.3" to clipboard
appforge_cli: ^0.1.3 copied to clipboard

A powerful CLI to generate production-ready Flutter apps with Firebase, localization, Docker, and modular architecture.

๐Ÿš€ AppForge CLI #

A powerful command-line tool to generate production-ready Flutter applications with pre-configured architecture, authentication, theming, and Firebase integration.

Dart Flutter Firebase

AppForge CLI Demo
๐Ÿ‘† Click to watch the demo video

โœจ Features #

๐ŸŽจ Beautiful Themes #

  • 5 pre-built color schemes (Blue, Green, Coffee, Purple, Orange)
  • Complete light & dark mode support
  • Material 3 design system
  • Responsive layouts for phones and tablets

๐Ÿ” Multiple Authentication Methods #

  • Email & Password - Traditional auth with validation
  • Username & Password - Username-based authentication
  • Phone & OTP - SMS verification with 6-digit OTP
  • Social Auth - Google & Apple Sign-In
  • All Methods - Unified auth interface with all options

๐Ÿ”ฅ Modular Firebase Integration #

  • Authentication - Sign up, sign in, profile management
  • Cloud Firestore - Complete CRUD operations with real-time streams
  • Cloud Storage - File upload/download with progress tracking
  • Cloud Messaging - Push notifications with FCM
  • Automatic flutterfire configure setup

๐Ÿงฉ 12+ Reusable Widgets #

  • Custom App Bar & Bottom Navigation
  • Loading indicators (3 types)
  • Info, Image, and Action Cards
  • Primary, Secondary, and Icon Buttons
  • Empty & Error States
  • Custom Input Fields & Search
  • Dialog & Snackbar Helpers
  • List Tiles, Avatars, and Badges

๐Ÿ—๏ธ Clean Architecture #

  • Feature-based folder structure
  • Separation of concerns
  • Scalable and maintainable codebase
  • Go Router for navigation
  • State management (Provider, Riverpod, or Bloc)

๐Ÿ“ฑ Ready-to-Use Screens #

  • Splash Screen with animations
  • Home Screen with stats and quick actions
  • Profile Screen with settings
  • Login/Signup screens (based on auth type)
  • All screens are responsive and themed

๏ฟฝ Screenshots #

๏ฟฝ๐Ÿ“ฆ Installation #

Prerequisites #

  • Dart SDK (>=3.5.0)
  • Flutter SDK
  • Firebase CLI (optional, for Firebase features)

Install from pub.dev #

dart pub global activate appforge_cli

Or install from source #

git clone https://github.com/appforge-cli/appforge_cli.git
cd appforge_cli
dart pub get
dart pub global activate --source path .

Verify Installation #

After installation, verify that AppForge CLI is properly installed:

appforge --version

You should see:

appforge_cli version: 0.1.3

Or simply run:

appforge

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘                                                                     โ•‘
โ•‘  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ•‘
โ•‘ โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ• โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•  โ•‘
โ•‘ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—    โ•‘
โ•‘ โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ• โ–ˆโ–ˆโ•”โ•โ•โ•โ• โ–ˆโ–ˆโ•”โ•โ•โ•  โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•    โ•‘
โ•‘ โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘     โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ•‘
โ•‘ โ•šโ•โ•  โ•šโ•โ•โ•šโ•โ•     โ•šโ•โ•     โ•šโ•โ•      โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•  โ•šโ•โ• โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ•โ•โ•โ•  โ•‘
โ•‘                                                                     โ•‘
โ•‘                      โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—     โ–ˆโ–ˆโ•—                             โ•‘
โ•‘                     โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘                             โ•‘
โ•‘                     โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘                             โ•‘
โ•‘                     โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘                             โ•‘
โ•‘                     โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘                             โ•‘
โ•‘                      โ•šโ•โ•โ•โ•โ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ•                             โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

If you see this, your installation is complete! ๐ŸŽ‰

Troubleshooting:

  • If appforge command is not found, make sure Dart's global bin directory is in your PATH
  • Run dart pub global list to verify appforge_cli is activated
  • Restart your terminal after installation

๐Ÿš€ Quick Start #

Interactive Mode #

appforge create

Follow the prompts to configure your app:

  1. Project Name - Enter your app name
  2. State Management - Choose between Provider, Riverpod, or Bloc
  3. Theme Color - Select from 5 beautiful themes
  4. Authentication Type - Pick your auth method
  5. Firebase - Enable and select Firebase modules

Non-Interactive Mode #

appforge create \
  --name my_awesome_app \
  --org com.mycompany \
  --state riverpod \
  --theme blue \
  --firebase

With Flags #

# Short flags
appforge create -n my_app -s bloc -t coffee -f

# Full options
appforge create \
  --name my_app \
  --org com.example \
  --state provider \
  --theme purple \
  --firebase \
  --yes

๐ŸŽฏ Usage Examples #

Example 1: E-commerce App with Firebase #

appforge create

# Selections:
# Name: shop_app
# State: riverpod
# Theme: blue
# Auth: email_password
# Firebase: Yes
#   - auth
#   - firestore
#   - storage

Generated structure:

shop_app/
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ”‚   โ”œโ”€โ”€ router/
โ”‚   โ”‚   โ””โ”€โ”€ theme/
โ”‚   โ”œโ”€โ”€ features/
โ”‚   โ”‚   โ”œโ”€โ”€ auth/
โ”‚   โ”‚   โ”œโ”€โ”€ home/
โ”‚   โ”‚   โ””โ”€โ”€ profile/
โ”‚   โ”œโ”€โ”€ shared/
โ”‚   โ”‚   โ””โ”€โ”€ widgets/        # 12+ reusable widgets
โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚   โ””โ”€โ”€ firebase/       # Complete Firebase CRUD
โ”‚   โ””โ”€โ”€ main.dart
โ””โ”€โ”€ pubspec.yaml

Example 2: Social Media App #

appforge create -n social_app -s bloc -t purple
# Auth: all (email, username, phone, social)
# Firebase: Yes (all modules)

Example 3: Simple Utility App #

appforge create -n util_app -s provider -t green
# Auth: email_password
# Firebase: No

๐Ÿ“ Generated Project Structure #

your_app/
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ”‚   โ”œโ”€โ”€ router/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ app_router.dart           # Go Router configuration
โ”‚   โ”‚   โ”œโ”€โ”€ theme/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ app_theme.dart            # Light & Dark themes
โ”‚   โ”‚   โ””โ”€โ”€ di/                            # Dependency injection
โ”‚   โ”œโ”€โ”€ features/
โ”‚   โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ screens/
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ splash_screen.dart
โ”‚   โ”‚   โ”œโ”€โ”€ auth/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ screens/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ login_screen.dart
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ signup_screen.dart
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ otp_verification_screen.dart
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ widgets/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ services/
โ”‚   โ”‚   โ”œโ”€โ”€ home/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ screens/
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ home_screen.dart
โ”‚   โ”‚   โ””โ”€โ”€ profile/
โ”‚   โ”‚       โ””โ”€โ”€ screens/
โ”‚   โ”‚           โ””โ”€โ”€ profile_screen.dart
โ”‚   โ”œโ”€โ”€ shared/
โ”‚   โ”‚   โ”œโ”€โ”€ widgets/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ widgets.dart              # Barrel file
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ custom_app_bar.dart
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ custom_bottom_nav_bar.dart
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ loading_indicators.dart
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ custom_cards.dart
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ custom_buttons.dart
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ empty_states.dart
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ custom_input_fields.dart
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ dialog_helper.dart
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ snackbar_helper.dart
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ custom_list_tiles.dart
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ custom_avatar.dart
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ custom_badge.dart
โ”‚   โ”‚   โ”œโ”€โ”€ services/
โ”‚   โ”‚   โ”œโ”€โ”€ utils/
โ”‚   โ”‚   โ””โ”€โ”€ constants/
โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚   โ”œโ”€โ”€ firebase/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ firebase_operations.dart  # Complete Firebase CRUD
โ”‚   โ”‚   โ”œโ”€โ”€ errors/
โ”‚   โ”‚   โ”œโ”€โ”€ network/
โ”‚   โ”‚   โ””โ”€โ”€ storage/
โ”‚   โ””โ”€โ”€ main.dart
โ”œโ”€โ”€ test/
โ”‚   โ””โ”€โ”€ widget_test.dart
โ”œโ”€โ”€ pubspec.yaml
โ””โ”€โ”€ README.md

๐ŸŽจ Available Themes #

Theme Primary Color Use Case
๐Ÿ’™ Blue #2196F3 Professional apps
๐Ÿ’š Green #4CAF50 Health & Fitness
โ˜• Coffee #795548 Lifestyle apps
๐Ÿ’œ Purple #9C27B0 Creative apps
๐Ÿงก Orange #FF9800 Food & Delivery

๐Ÿ” Authentication Types #

Email & Password #

await FirebaseOperations.signUpWithEmail(
  email: '[email protected]',
  password: 'password123',
);

Phone & OTP #

// Send OTP
context.push('/otp-verification', extra: phoneNumber);

// Verify OTP
await FirebaseOperations.verifyOTP(code: '123456');

Social Auth #

await FirebaseOperations.signInWithGoogle();
await FirebaseOperations.signInWithApple();

๐Ÿ”ฅ Firebase Operations #

Firestore CRUD #

// Create
final docId = await FirebaseOperations.createDocument(
  collection: 'users',
  data: {'name': 'John', 'age': 30},
);

// Read
final data = await FirebaseOperations.readDocument(
  collection: 'users',
  documentId: docId,
);

// Update
await FirebaseOperations.updateDocument(
  collection: 'users',
  documentId: docId,
  data: {'age': 31},
);

// Delete
await FirebaseOperations.deleteDocument(
  collection: 'users',
  documentId: docId,
);

// Real-time Stream
StreamBuilder(
  stream: FirebaseOperations.streamCollection(
    collection: 'messages',
    orderBy: 'timestamp',
  ),
  builder: (context, snapshot) {
    // Build your UI
  },
)

Storage Operations #

// Upload file
final url = await FirebaseOperations.uploadFile(
  file: imageFile,
  path: 'users/$userId/profile.jpg',
  onProgress: (progress) {
    print('Upload: ${(progress * 100).toInt()}%');
  },
);

// Download file
final file = await FirebaseOperations.downloadFile(
  path: 'users/$userId/profile.jpg',
  localPath: '/path/to/save/image.jpg',
);

// Delete file
await FirebaseOperations.deleteFile(
  path: 'users/$userId/old_profile.jpg',
);

Cloud Messaging #

// Initialize
await FirebaseOperations.initializeFCM();

// Get token
final token = await FirebaseOperations.getFCMToken();

// Subscribe to topic
await FirebaseOperations.subscribeToTopic(topic: 'news');

// Handle messages
FirebaseOperations.handleForegroundMessages((message) {
  print('New message: ${message.notification?.title}');
});

๐Ÿงฉ Using Reusable Widgets #

Import #

import 'package:your_app/shared/widgets/widgets.dart';

Examples #

// Custom App Bar
CustomAppBar(
  title: 'My Screen',
  actions: [
    IconButtonCustom(icon: Icons.search, onPressed: () {}),
  ],
)

// Info Card
InfoCard(
  title: 'Total Sales',
  value: '\$12,345',
  icon: Icons.attach_money,
  color: Colors.green,
)

// Primary Button
PrimaryButton(
  text: 'Submit',
  isLoading: isLoading,
  onPressed: () {},
)

// Snackbar
SnackBarHelper.showSuccess(context, 'Saved successfully!');

// Dialog
await DialogHelper.showConfirmDialog(
  context,
  title: 'Delete',
  message: 'Are you sure?',
);

๐Ÿ› ๏ธ CLI Options #

Option Short Description Values
--name -n Project name my_app
--org -o Organization com.example
--state -s State management provider, riverpod, bloc
--theme -t Theme color blue, green, coffee, purple, orange
--firebase -f Include Firebase Flag (boolean)
--yes -y Non-interactive Flag (boolean)

๐Ÿ“ State Management Options #

final counterProvider = StateProvider((ref) => 0);

Consumer(
  builder: (context, ref, child) {
    final count = ref.watch(counterProvider);
    return Text('Count: $count');
  },
)

Provider #

ChangeNotifierProvider(
  create: (_) => CounterModel(),
  child: MyApp(),
)

Bloc #

BlocProvider(
  create: (_) => CounterBloc(),
  child: MyApp(),
)

๐Ÿค Contributing #

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๐Ÿ“„ License #

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments #

  • Flutter Team for the amazing framework
  • Firebase for backend services
  • The Dart community for excellent packages

๐Ÿ“ง Contact #

20
likes
160
points
134
downloads

Publisher

verified publisherajaychikshetty.dev

Weekly Downloads

A powerful CLI to generate production-ready Flutter apps with Firebase, localization, Docker, and modular architecture.

Repository (GitHub)
View/report issues

Topics

#cli #flutter #generator #firebase #scaffold

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

args, http, interact, mason_logger, meta, path, recase, watcher, yaml

More

Packages that depend on appforge_cli