đŸ› ïž ODS Kit CLI

Un kit de dĂ©marrage modulaire pour projets Flutter & Dart, avec un gĂ©nĂ©rateur de code en ligne de commande, des helpers prĂȘts Ă  l’emploi, et une structure basĂ©e sur le Clean Architecture.

Compatible CLI pur (Dart-only), sans dépendance Flutter obligatoire.


✹ FonctionnalitĂ©s

  • 🚀 GĂ©nĂ©rateur de features/pages/cubits via CLI
  • 🔐 Gestion du chiffrement avec injection de stockage sĂ©curisĂ© (SecureStore)
  • 🧠 Helpers rĂ©utilisables (String, Date, Validation, File)
  • 📩 Compatible avec fpdart et Either<Failure, Success>
  • đŸ§Ș PrĂȘt pour les tests et l’intĂ©gration continue

📩 Installation

Ajoutez Ă  votre projet :

dependencies:
  ods_kit_cli:
    git:
      url: https://github.com/votre-utilisateur/ods_kit_cli.git

📌 Bientît disponible sur pub.dev


⚙ Utilisation CLI

Générer une feature :

dart run flutter_feature add feature client

Ajouter une page Ă  une feature :

dart run flutter_feature add page client detail

Ajouter un cubit :

dart run flutter_feature add cubit client loading

📁 RĂ©sultat :

lib/features/client/
├── data/
│   ├── datasources/
│   ├── models/
│   └── repositories/
├── domain/
│   ├── entities/
│   └── repositories/
└── presentation/
    ├── bloc/
    ├── pages/
    └── widgets/

🔐 Chiffrement avec Encryption

final encryption = Encryption(
  InMemorySecureStore(),
  encryptionKeyKey: 'realm_key',
  passwordKey: 'password_key',
);

final encrypted = await encryption.encryptPassword('secret123');
final decrypted = await encryption.decryptPassword(encrypted);

👹‍🔧 ImplĂ©mentation par dĂ©faut fournie : InMemorySecureStore.


🧰 Utilitaires intĂ©grĂ©s

Validation

ValidationHelper.isValidEmail('test@mail.com');
ValidationHelper.isRequired('valeur');

Helpers

  • StringHelper.capitalize("test")
  • NumberHelper.toFixed(3.14159, 2)
  • DateHelper.format(DateTime.now())
  • FileHelper.readFile(path)

📖 Architecture

Basé sur Clean Architecture :

feature/
├── data/
├── domain/
└── presentation/

📄 Exemples de cas d'utilisation

class GetUser implements UseCase<User, IdParams> {
  final UserRepository repository;

  GetUser(this.repository);

  @override
  Future<Either<Failure, User>> call(IdParams params) {
    return repository.getById(params.id);
  }
}

✅ À venir

  • GĂ©nĂ©rateur de usecases automatiques
  • Support des tests unitaires pour chaque gĂ©nĂ©ration
  • Plugin VSCode / CLI interactif

📝 Licence

MIT


đŸ‘šâ€đŸ’» Auteur

Développé par Youdev

Libraries

ods_kit_cli