🚀 FPD Toolkit
CLI toolkit profesional para generar paquetes Flutter/Dart de alta calidad siguiendo las mejores prácticas de la industria.
FPD Toolkit es una herramienta completa que te permite crear paquetes Flutter/Dart que cumplen con todos los estándares de pub.dev y las mejores prácticas de desarrollo. Incluye generación automática, validación, documentación interactiva y ejemplos prácticos.
✨ Características Principales
🚀 Generación Automática
- Aplicaciones Flutter - Apps completas con estructura Material Design
- Plugins Flutter - Plugins multiplataforma con interfaz nativa
- Paquetes Dart - Librerías puras optimizadas para pub.dev
🎯 Validación Avanzada
- Scoring pub.dev - Evaluación automática que alcanza 125+ puntos
- Análisis de código - Detección de problemas y mejoras
- Verificación de estructura - Validación de archivos requeridos
📚 Documentación Interactiva
- Guías paso a paso - Tutoriales interactivos de desarrollo
- Ejemplos prácticos - Código de ejemplo con mejores prácticas
- Patrones de arquitectura - Clean Architecture, MVVM, BLoC
🛠️ Gestión de Templates
- Templates personalizados - Crea y reutiliza plantillas
- Configuración flexible - Adapta la generación a tus necesidades
- Múltiples plataformas - Soporte para Android, iOS, Web, Desktop
🚀 Instalación
Activación Global
dart pub global activate fpd_toolkit
Uso Directo
dart pub global run fpd_toolkit
📖 Guía de Uso
Crear un Nuevo Paquete
# Crear paquete Dart
fpd-toolkit create package mi_paquete --description "Mi paquete increíble"
# Crear aplicación Flutter
fpd-toolkit create app mi_app --description "Mi aplicación Flutter"
# Crear plugin Flutter
fpd-toolkit create plugin mi_plugin --platforms android,ios --description "Mi plugin nativo"
Validar un Paquete
fpd-toolkit validate mi_paquete
# Resultado: 125/130 puntos pub.dev
Acceder a Guías Interactivas
fpd-toolkit guide architecture # Guía de arquitectura
fpd-toolkit guide testing # Guía de testing
fpd-toolkit guide state-mgmt # Gestión de estado
fpd-toolkit guide performance # Optimización
Ver Ejemplos de Código
fpd-toolkit example widget # Ejemplos de widgets
fpd-toolkit example state # Manejo de estado
fpd-toolkit example animation # Animaciones
fpd-toolkit example testing # Testing avanzado
🎯 Comandos Disponibles
Comando | Descripción | Ejemplo |
---|---|---|
create |
Generar nuevo paquete/app/plugin | fpd-toolkit create package mi_lib |
validate |
Validar paquete para pub.dev | fpd-toolkit validate mi_lib |
guide |
Guías interactivas de desarrollo | fpd-toolkit guide architecture |
example |
Ejemplos de código y patrones | fpd-toolkit example widget |
template |
Gestionar templates personalizados | fpd-toolkit template list |
init |
Inicializar proyecto existente | fpd-toolkit init |
📁 Estructura de Proyecto Generada
mi_paquete/
├── lib/
│ ├── mi_paquete.dart # Punto de entrada
│ └── src/
│ └── mi_paquete_base.dart # Lógica principal
├── test/
│ └── mi_paquete_test.dart # Tests
├── example/ # Ejemplos de uso
├── pubspec.yaml # Configuración optimizada
├── README.md # Documentación completa
├── CHANGELOG.md # Historial de cambios
├── LICENSE # Licencia MIT
└── analysis_options.yaml # Análisis de código
🏆 Scoring pub.dev
Los paquetes generados alcanzan 125+ puntos en pub.dev:
- ✅ Conventions (30/30) - Nomenclatura y estructura
- ✅ Documentation (30/30) - README, API docs, ejemplos
- ✅ Platforms (20/20) - Soporte multiplataforma
- ✅ Analysis (30/30) - Análisis de código limpio
- ✅ Dependencies (15/20) - Dependencias actualizadas
📚 Documentación Completa
Guías Incluidas
- Guía de Desarrollo - Desarrollo completo Flutter/Dart
- Mejores Prácticas - Patrones y convenciones
- Script Original - Generador de referencia
Temas Cubiertos
- 🏗️ Arquitectura - Clean Architecture, MVVM, BLoC
- 🎨 UI/UX - Material Design, Cupertino, Responsive
- 🔧 Estado - Provider, Riverpod, BLoC, GetX
- 🧪 Testing - Unit, Widget, Integration, Golden
- ⚡ Performance - Optimización, Profiling, Memory
- 🔒 Seguridad - Encriptación, Autenticación, Permisos
- 🌐 Internacionalización - i18n, l10n, Localización
- 📱 Plataformas - Android, iOS, Web, Desktop
🔧 Configuración Avanzada
Variables de Entorno
export FLUTTER_DEV_AUTHOR="Tu Nombre"
export FLUTTER_DEV_ORG="com.tuorg"
export FLUTTER_DEV_TEMPLATE_DIR="$HOME/flutter_templates"
Archivo de Configuración
# ~/.flutter_dev_config.yaml
default_author: "Tu Nombre"
default_organization: "com.tuorg"
default_license: "MIT"
templates_dir: "~/flutter_templates"
🤝 Ejemplos de Uso
Caso 1: Startup Rápida
# Crear MVP completo
fpd-toolkit create app startup_mvp --description "MVP para startup"
cd startup_mvp
fpd-toolkit guide architecture
flutter run
Caso 2: Librería Empresarial
# Crear paquete corporativo
fpd-toolkit create package empresa_utils --description "Utilidades corporativas"
fpd-toolkit validate empresa_utils
dart pub publish --dry-run
Caso 3: Plugin Multiplataforma
# Plugin para todas las plataformas
fpd-toolkit create plugin super_plugin \
--platforms android,ios,web,windows,macos,linux \
--description "Plugin universal increíble"
🎯 Casos de Uso
👨💻 Desarrolladores
- Generar paquetes con estructura profesional
- Validar antes de publicar en pub.dev
- Aprender mejores prácticas interactivamente
🏢 Empresas
- Estandarizar estructura de proyectos
- Acelerar desarrollo de MVPs
- Mantener calidad de código consistente
🎓 Educación
- Enseñar buenas prácticas Flutter/Dart
- Ejemplos prácticos listos para usar
- Guías paso a paso interactivas
🔄 Flujo de Trabajo Recomendado
-
Planificación
fpd-toolkit guide architecture
-
Generación
fpd-toolkit create package mi_lib --description "Mi librería"
-
Validación
fpd-toolkit validate mi_lib
-
Desarrollo
cd mi_lib fpd-toolkit guide testing fpd-toolkit example widget
-
Publicación
dart pub publish --dry-run dart pub publish
🚀 Desarrollo Local
Clonar y Ejecutar
git clone https://github.com/flutterpilot/fpd_toolkit.git
cd fpd_toolkit
dart pub get
dart run bin/fpd_toolkit.dart --help
Ejecutar Comandos
dart run bin/fpd_toolkit.dart create package test_pkg --description "Test package"
dart run bin/fpd_toolkit.dart validate test_pkg
dart run bin/fpd_toolkit.dart guide --help
Modo Verbose
dart run bin/fpd_toolkit.dart --verbose create package debug_pkg
🧪 Testing
Ejecutar Tests
dart test
Testing con Coverage
dart test --coverage=coverage
genhtml coverage/lcov.info -o coverage/html
Testing de Comandos
dart run bin/fpd_toolkit.dart --verbose [comando]
📊 Métricas y Performance
Benchmarks
# Medir tiempo de generación
time dart run bin/fpd_toolkit.dart create package perf_test
Memory Profiling
dart run --observe bin/fpd_toolkit.dart create package perf_test
Validation Scoring
dart run bin/fpd_toolkit.dart validate generated_package
🔄 CI/CD Integration
GitHub Actions
name: Validate Package
on: [push, pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dart-lang/setup-dart@v1
- run: dart pub global activate fpd_toolkit
- run: fpd-toolkit validate .
Cross-Platform Testing
dart run bin/fpd_toolkit.dart create package cross_platform_test
cd cross_platform_test
flutter test
dart test
🤝 Contribuir
Setup de Desarrollo
git clone https://github.com/flutterpilot/fpd_toolkit.git
cd fpd_toolkit
dart pub get
Ejecutar Tests de Integración
dart run "$OLDPWD/bin/fpd_toolkit.dart" create package integration_package
dart run "$OLDPWD/bin/fpd_toolkit.dart" create app integration_app
dart run "$OLDPWD/bin/fpd_toolkit.dart" create plugin integration_plugin --platforms android,ios
dart run "$OLDPWD/bin/fpd_toolkit.dart" validate integration_package
Verificar Generación
# Crear paquete de prueba
dart run bin/fpd_toolkit.dart create package test_package --description "Test package"
# Validar estructura
dart run bin/fpd_toolkit.dart validate test_package
# Verificar archivos generados
ls -la test_package/
cat test_package/pubspec.yaml
cat test_package/README.md
Testing de Templates
# Probar diferentes tipos
dart run bin/fpd_toolkit.dart create app test_app --description "Test app"
dart run bin/fpd_toolkit.dart create plugin test_plugin --platforms android,ios --description "Test plugin"
dart run bin/fpd_toolkit.dart create package test_package --description "Test package"
# Validar todos
dart run bin/fpd_toolkit.dart validate test_app
dart run bin/fpd_toolkit.dart validate test_plugin
dart run bin/fpd_toolkit.dart validate test_package
Performance Testing
# Medir tiempo de generación
time dart run bin/fpd_toolkit.dart create package perf_test
time dart run bin/fpd_toolkit.dart create app perf_app
time dart run bin/fpd_toolkit.dart create plugin perf_plugin --platforms android,ios
# Memory profiling
dart run --observe bin/fpd_toolkit.dart create package memory_test
Cross-Platform Validation
# Crear paquete multiplataforma
dart run bin/fpd_toolkit.dart create plugin cross_platform_plugin \
--platforms android,ios,web,windows,linux,macos \
--description "Cross-platform plugin"
# Validar estructura
dart run bin/fpd_toolkit.dart validate cross_platform_plugin
# Verificar archivos de plataforma
ls -la cross_platform_plugin/android/
ls -la cross_platform_plugin/ios/
ls -la cross_platform_plugin/lib/src/
Documentation Testing
# Verificar generación de README
dart run bin/fpd_toolkit.dart create package doc_test --description "Documentation test"
cat doc_test/README.md
# Verificar generación de CHANGELOG
cat doc_test/CHANGELOG.md
# Verificar generación de LICENSE
cat doc_test/LICENSE
Error Handling Testing
# Probar nombres inválidos
dart run bin/fpd_toolkit.dart create package invalid-name
dart run bin/fpd_toolkit.dart create package 123package
dart run bin/fpd_toolkit.dart create package package@test
# Probar directorios existentes
mkdir existing_dir
dart run bin/fpd_toolkit.dart create package existing_dir
dart run bin/fpd_toolkit.dart create package existing_dir --force
Template Customization Testing
# Crear template personalizado
mkdir -p ~/custom_templates/package_template
cp -r test_package/* ~/custom_templates/package_template/
# Usar template personalizado
dart run bin/fpd_toolkit.dart create package custom_test --template ~/custom_templates/package_template
📈 Roadmap
Próximas Características
Mejoras Planificadas
🐛 Troubleshooting
Problemas Comunes
Error: "Command not found"
# Verificar instalación
dart pub global list | grep fpd_toolkit
# Reinstalar
dart pub global deactivate fpd_toolkit
dart pub global activate fpd_toolkit
Error: "Permission denied"
# Verificar permisos
ls -la ~/.pub-cache/bin/
# Corregir permisos
chmod +x ~/.pub-cache/bin/fpd-toolkit
Error: "Template not found"
# Verificar templates disponibles
fpd-toolkit template list
# Usar template por defecto
fpd-toolkit create package mi_paquete --template default
Error: "Invalid package name"
# Usar snake_case
fpd-toolkit create package mi_paquete_valido
# Evitar caracteres especiales
# ❌ mi-paquete, mi_paquete@test, 123paquete
# ✅ mi_paquete, mi_paquete_valido, paquete_test
📞 Soporte
Recursos de Ayuda
- Documentación: docs/
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Comunidad
- Discord: FlutterPilot Community
- Twitter: @flutterpilot
- Blog: flutterpilot.dev
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
👨💻 Autor
Sebastián Larrauri - dash@flutterpilot.dev
⭐ Si FPD Toolkit te ha sido útil, ¡considera darle una estrella en GitHub!
🚀 Quick Start
# Instalar
dart pub global activate fpd_toolkit
# Crear tu primer paquete
fpd-toolkit create package mi_paquete --description "Mi primer paquete"
# Validar
fpd-toolkit validate mi_paquete
# ¡Listo para publicar!
cd mi_paquete
dart pub publish --dry-run
¡Comienza a crear paquetes de alta calidad hoy mismo! 🎉
Libraries
- fpd_toolkit
- fpd_toolkit - CLI toolkit para generar paquetes Flutter/Dart de alta calidad con mejores prácticas