# Kira CRUD Generator

Kira est un générateur CRUD intelligent qui automatise la création de code backend (Laravel) et frontend (Angular) à partir d'un seul fichier de configuration. Il génère une architecture professionnelle complète en suivant les meilleures pratiques de développement.

## Fonctionnalités

- **Génération 100% automatique** - Crée tous les fichiers nécessaires pour Laravel et Angular
- **Architecture professionnelle**
  - Laravel: Pattern Repository, Service layer, Form Requests, API Resources
  - Angular: Composants typés, templates avec PrimeNG, styling approprié
- **Relations intelligentes** - Configuration des relations entre modèles (belongsTo, hasMany, belongsToMany)
- **Routes et navigation automatiques** - Génère les routes Angular et met à jour la navigation dans la sidebar
- **Configuration avancée** - Options riches pour les champs, validations et éléments UI
- **Système de purge** - Système de nettoyage intelligent pour supprimer le code généré en toute sécurité

## Installation

### Installation globale (recommandée)

```bash
npm install -g kira-crud
```

### Installation locale

```bash
npm install kira-crud
```

## Démarrage rapide

### 1. Installer Kira globalement

```bash
npm install -g kira-crud
```

### 2. Lancer Kira

```bash
kira
```

### 3. Mise à jour

Pour mettre à jour Kira vers la dernière version, utilisez l'une des méthodes suivantes:

```bash
# Méthode 1: Depuis n'importe quel terminal
npm install -g kira-crud@latest

# Méthode 2: Depuis le menu de Kira
# Sélectionnez 'Check for Updates' dans le menu principal
```

Kira vérifie automatiquement les mises à jour disponibles au démarrage.

### 3. Configurer votre projet

La première fois que vous exécutez Kira, vous devrez configurer votre projet Laravel et Angular. Kira vous guidera à travers ce processus interactif.

### 4. Créer un fichier de configuration YAML

Créez un fichier de configuration YAML pour votre modèle, par exemple `customer.yml`:

```yaml
model:
  name: Customer
  tableName: customers
  fields:
    - name: name
      type: string
      required: true
    - name: email
      type: string
      validations: [email, unique]
    - name: phone
      type: string
    - name: address
      type: text
    - name: active
      type: boolean
      default: true
  relationships:
    - name: orders
      type: hasMany
      model: Order
      displayField: number
```

### 5. Générer le CRUD

Utilisez l'option "Generate New CRUD" et sélectionnez votre fichier de configuration.

## Documentation

### Structure des fichiers de configuration

Les fichiers de configuration YAML ou JSON sont structurés comme suit:

```yaml
model:
  name: NomDuModele
  tableName: nom_de_la_table
  displayName: "Nom affiché"
  fields:
    - name: nomDuChamp
      type: string|integer|decimal|boolean|date|text|enum
      label: "Label du champ"
      required: true|false
      nullable: true|false
      validations: [required, email, unique, etc]
  relationships:
    - name: relation
      type: belongsTo|hasMany|hasOne|belongsToMany
      model: ModeleAssocie
      displayField: champAffiche

ui:
  tableFields: [id, nom, description]
  searchableFields: [nom, email]
  isFeminine: true|false # Pour le français
```

### Exemples

Consultez le répertoire `examples/` pour des exemples de fichiers de configuration.

## Commandes disponibles

- **Generate New CRUD** - Génère un nouveau CRUD à partir d'un fichier de configuration
- **Run Configuration Wizard** - Assistant interactif pour créer un fichier de configuration
- **Analyze Existing Project** - Analyse votre projet pour détecter les modèles existants
- **Purge CRUD Components** - Supprime les composants CRUD générés
- **Project Settings** - Gère les projets configurés
- **Switch Project** - Change de projet actif

## Contribution

Les contributions sont les bienvenues! N'hésitez pas à ouvrir une issue ou une pull request sur GitHub.

## Licence

MIT
