🚀 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

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

  1. Planificación

    fpd-toolkit guide architecture
    
  2. Generación

    fpd-toolkit create package mi_lib --description "Mi librería"
    
  3. Validación

    fpd-toolkit validate mi_lib
    
  4. Desarrollo

    cd mi_lib
    fpd-toolkit guide testing
    fpd-toolkit example widget
    
  5. 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

  • Templates Avanzados - Templates con configuración compleja
  • Validación Automática - CI/CD integration automática
  • Plugin Marketplace - Repositorio de templates comunitarios
  • IDE Integration - Extensiones para VS Code, Android Studio
  • Performance Profiling - Análisis automático de performance
  • Security Scanning - Detección automática de vulnerabilidades

Mejoras Planificadas

  • Multi-language Support - Soporte para múltiples idiomas
  • Custom Validators - Validadores personalizables
  • Template Inheritance - Herencia de templates
  • Plugin Architecture - Sistema de plugins extensible
  • Cloud Integration - Templates desde la nube
  • Collaboration Features - Trabajo colaborativo en templates

🐛 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

Comunidad

📄 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