# Octave Mozart

Application de gestion immobilière développée avec Laravel.

## 📋 Prérequis

- PHP 8.2+
- Composer
- MySQL 8.0+
- Node.js & NPM (pour la compilation des assets)

## 🚀 Installation

### 1. Cloner le projet

```bash
git clone [repository-url]
cd octave/bo
```

### 2. Installer les dépendances

```bash
composer install
npm install
```

### 3. Configuration de l'environnement

```bash
cp .env.example .env
php artisan key:generate
```

Configurez votre fichier `.env` avec vos paramètres de base de données et autres variables d'environnement.

### 4. Créer le lien symbolique pour le stockage

```bash
php artisan storage:link
```

⚠️ **Important** : Cette commande crée un lien symbolique entre `public/storage` et `storage/app/public`, permettant aux fichiers médias (images, documents) d'être accessibles publiquement.

### 5. Exécuter les migrations

```bash
php artisan migrate
```

### 6. (Optionnel) Remplir avec des données de test

```bash
php artisan db:seed
```

### 7. Compiler les assets

```bash
npm run dev
# ou pour la production
npm run build
```

### 8. Démarrer le serveur

```bash
php artisan serve
```

L'application sera accessible à l'adresse : `http://localhost:8000`

## 📂 Structure du projet

- **app/Models** : Modèles Eloquent
- **app/Http/Controllers** : Contrôleurs de l'application
- **app/Enums** : Énumérations typées
- **resources/views** : Vues Blade
- **routes/web.php** : Routes web de l'application
- **database/migrations** : Migrations de base de données

## 🔑 Fonctionnalités principales

### Gestion des Applications

- Création et gestion d'applications
- Gestion des utilisateurs par application
- Gestion des abonnements
- Paramètres de vente par application

### Gestion des Programmes

- Création et gestion de programmes immobiliers
- Gestion des lots et annexes
- Documents et images
- Fiscalités et normes écologiques
- Paramètres de vente spécifiques par programme

### Gestion des Clients

- Gestion des clients par application
- Suivi des réservations et options

### API

- Endpoints JSON pour l'export de données
- Documentation disponible dans l'interface développeur

## 🛠️ Commandes utiles

```bash
# Créer le lien symbolique pour le stockage (à exécuter après l'installation)
php artisan storage:link

# Lancer les migrations
php artisan migrate

# Rollback de la dernière migration
php artisan migrate:rollback

# Vider le cache
php artisan cache:clear
php artisan config:clear
php artisan view:clear

# Générer un slug
# Utilisé automatiquement via l'interface avec le composant slug-generator
```

## 📦 Packages utilisés

- **spatie/laravel-medialibrary** : Gestion des médias (images, documents)
- **Laravel Breeze** : Authentification
- **Bootstrap 5** : Framework CSS
- **Font Awesome** : Icônes

## 🔐 Rôles et Permissions

- **ROLE_SUPPORT** : Accès admin et outils support (applications, abonnements, fonctionnalités, logs, etc.)
- **ROLE_PROMOTEUR** : Gestion des programmes et clients
- **ROLE_USER** : Utilisateur standard
- **ROLE_COMMERCIALISATEUR** : Commercialisateur ayant accès uniquement au front office pour gérer les clients et les dossiers

## 📝 Notes importantes

### Stockage des fichiers

Les fichiers médias (images, documents PDF) sont stockés dans `storage/app/public` et accessibles via le lien symbolique `public/storage`.

**Commande obligatoire après installation** :

```bash
php artisan storage:link
```

Sans cette commande, les images et documents ne seront pas accessibles.

### Configuration du domaine

Pour un environnement Docker, assurez-vous que `APP_URL` dans `.env` correspond à votre domaine :

```env
APP_URL=https://octave.immo.docker
```

## 📧 Support

Pour toute question ou problème, contactez l'équipe de développement.

## 📄 License

Propriétaire - Tous droits réservés.
