π§© Teuton Feature CLI
A powerful CLI tool that generates production-ready Flutter features using Clean Architecture, Cubit state management, and GetIt dependency injection β in seconds.
β¨ Features
- ποΈ Clean Architecture scaffolding with separation of concerns
- π Cubit state management with built-in error handling
- π GetIt dependency injection setup
- π Consistent, industry-standard folder structure
- β‘ Generate complete features with a single command
- π― Production-ready code templates
- π§ Customizable templates and naming conventions
π Quick Start
Installation
Install globally from pub.flutter-io.cn:
dart pub global activate teuton_feature
Or install from source:
dart pub global activate --source path .
Usage
Navigate to your Flutter project and run:
teuton_feature create <feature_name>
Programmatic example
If you prefer using the generator from Dart code (e.g. scripts/tools), there is a runnable example in example/teuton_feature_example.dart that uses the minimal template (no Flutter dependency required):
dart run example/teuton_feature_example.dart
This creates a temporary sandbox, generates a profile feature with the minimal template, and prints the files created. You can adapt this approach in your own tooling by importing:
import 'package:teuton_feature/teuton_feature.dart';
final cfg = TeutonConfig(featuresPath: 'lib/features');
FeatureGenerator(config: cfg).generate(const CreateOptions(
feature: 'profile',
template: 'minimal',
));
π Commands
Create a Feature
teuton_feature create profile
Create with Custom Path
teuton_feature create profile --path lib/modules
List Available Templates
teuton_feature templates
Flags and Options
-
Global:
--help,-h: Show help--version,-v: Show version
-
create <name>:--path,-p: Base features path (overrides config)--template,-t: Template to use (default|minimal)--dry-run: Simulate without writing files--verbose,-v: Verbose output
-
delete <name>:--force,-f: Do not ask for confirmation--path,-p: Base features path (overrides config)
-
list:--path,-p: Base features path (overrides config)
π Generated Architecture
lib/features/profile/
βββ data/
β βββ datasources/
β β βββ profile_local_datasource.dart
β β βββ profile_remote_datasource.dart
β βββ models/
β β βββ profile_model.dart
β βββ repositories/
β βββ profile_repository_impl.dart
βββ domain/
β βββ entities/
β β βββ profile_entity.dart
β βββ repositories/
β β βββ profile_repository.dart
β βββ usecases/
β βββ get_profile.dart
β βββ update_profile.dart
βββ presentation/
βββ cubit/
β βββ profile_cubit.dart
β βββ profile_state.dart
βββ pages/
β βββ profile_page.dart
βββ widgets/
βββ profile_widget.dart
π‘ Example Output
$ teuton_feature create chat
π Generating feature: chat
β
Created data layer (3 files)
β
Created domain layer (4 files)
β
Created presentation layer (4 files)
β
Updated dependency injection
π Feature "chat" created successfully!
Next steps:
1. Add your API endpoints in chat_remote_datasource.dart
2. Implement business logic in chat use cases
3. Update chat_cubit.dart with your state logic
4. Import ChatPage in your routing
π οΈ Configuration
Create a teuton_config.yaml in your project root:
features_path: lib/features
default_template: default
author: Your Name
organization: com.example
templates:
- default
- minimal
π§° Why Teuton Feature CLI?
- π― Consistency: Ensures all team members follow the same architecture
- β‘ Speed: Generate complete features in seconds, not hours
- ποΈ Best Practices: Implements proven Clean Architecture patterns
- π§ Maintainable: Clear separation of concerns makes code easy to modify
- π Educational: Learn Clean Architecture through generated examples
π€ Contributing
We welcome contributions! Please see our Contributing Guide for details.
π License
MIT Β© 2025 Carlos DΓaz (Teutondev)
Built with β€οΈ by Teutondev
Libraries
- teuton_feature
- Public API exports for programmatic usage of teuton_feature.