 # StayManager - Application de Gestion Hôtelière

## 📋 Description

StayManager est une application web complète de gestion hôtelière développée en PHP avec une architecture MVC moderne. Elle offre une solution intégrée pour la gestion des réservations, des chambres, des clients, des paiements, de la restauration, du personnel et bien plus encore.

## ✨ Fonctionnalités Principales

### 🏨 Gestion des Réservations
- Réservations en ligne et en présentiel
- Suivi du taux d'occupation en temps réel
- Check-in/Check-out automatisés
- Attribution manuelle ou automatique des chambres
- Types de chambres paramétrables (Standard, Supérieur, Premium, Mini Suite)

### 👥 Gestion des Clients
- Base de données centralisée des clients
- Calcul automatique de l'âge
- Historique des séjours et factures
- Catégorisation (particulier, société, groupe)
- Gestion des réservations individuelles et groupées

### 🎉 Gestion des Événements
- Réservations de salles d'événements
- Types d'événements (mariages, séminaires, anniversaires)
- Gestion des salles (Petite salle, Grande salle, Salle Jerico, Salle Eden)

### 💳 Gestion des Paiements
- Multiples modes de paiement (espèces, chèque, TPE, Mobile Money)
- Paiement anticipé, partiel, total ou à la sortie
- Suivi des encaissements
- Gestion des réductions

### 🍽️ Restauration et Services
- Commandes de repas/menus
- Facturation intégrée au séjour
- Gestion des stocks
- Suivi des achats et dépenses

### 👨‍💼 Gestion du Personnel
- Création de profils et rôles
- Gestion des droits utilisateurs
- Planning, présence et pointage
- Suivi des femmes de ménage

### 🔧 Maintenance
- Déclaration et suivi des incidents
- Planification des interventions techniques
- Historique des pannes et réparations

### 📊 Comptabilité et Reporting
- Facturation automatisée
- Gestion de la caisse et de l'économat
- Rapports financiers mensuels et annuels
- Export des données (Excel, PDF)
- Tableaux de bord en temps réel

### 🔔 Notifications
- Notifications par email au manager
- Notifications SMS (optionnel)
- Alertes en temps réel
- Notifications push

## 🛠️ Technologies Utilisées

- **Backend**: PHP 8.1+
- **Base de données**: MySQL 8.0
- **Frontend**: Bootstrap 5.3, jQuery, Chart.js
- **Serveur**: Apache (XAMPP)
- **Architecture**: MVC (Model-View-Controller)
- **Sécurité**: JWT, CSRF protection, validation des données

## 📋 Prérequis

- PHP 8.0 ou supérieur
- MySQL 8.0 ou supérieur
- Apache/Nginx
- XAMPP (recommandé pour le développement)
- Extensions PHP : PDO, JSON, MBString, OpenSSL

## 🚀 Installation

### 1. Cloner le projet
```bash
cd C:\xampp\htdocs
git clone [URL_DU_REPO] StayManager
cd StayManager
```

### 2. Configuration de la base de données
1. Ouvrir phpMyAdmin (http://localhost/phpmyadmin)
2. Créer une nouvelle base de données nommée `staymanager`
3. Importer le fichier `database/staymanager.sql`

### 3. Configuration de l'application
1. Modifier le fichier `config/database.php` si nécessaire :
```php
private $host = 'localhost';
private $db_name = 'staymanager';
private $username = 'root';
private $password = '';
```

2. Modifier le fichier `config/config.php` selon vos besoins :
```php
define('APP_URL', 'http://localhost/StayManager');
define('DEBUG_MODE', true);
```

### 4. Permissions des dossiers
Assurez-vous que les dossiers suivants sont accessibles en écriture :
- `assets/uploads/`
- `logs/`
- `cache/`
- `backups/`
- `reports/`

### 5. Accès à l'application
- URL : http://localhost/StayManager
- Identifiants par défaut :
  - Utilisateur : `admin`
  - Mot de passe : `admin123`

## 📁 Structure du Projet

```
StayManager/
├── assets/                 # Ressources statiques
│   ├── css/               # Styles CSS
│   ├── js/                # Scripts JavaScript
│   ├── images/            # Images
│   └── uploads/           # Fichiers uploadés
├── config/                # Configuration
│   ├── config.php         # Configuration générale
│   └── database.php       # Configuration BDD
├── controllers/           # Contrôleurs
│   ├── AuthController.php # Authentification
│   └── ...               # Autres contrôleurs
├── models/               # Modèles
│   ├── User.php          # Modèle utilisateur
│   └── ...               # Autres modèles
├── views/                # Vues
│   ├── auth/             # Pages d'authentification
│   ├── dashboard/        # Pages du dashboard
│   └── ...               # Autres vues
├── database/             # Scripts de base de données
│   └── staymanager.sql   # Structure et données initiales
├── logs/                 # Fichiers de logs
├── cache/                # Cache de l'application
├── backups/              # Sauvegardes
├── reports/              # Rapports générés
├── index.php             # Point d'entrée principal
├── login.php             # Page de connexion
├── dashboard.php         # Dashboard principal
└── README.md             # Documentation
```

## 🔐 Sécurité

### Authentification
- Sessions sécurisées
- Hachage des mots de passe avec bcrypt
- Protection CSRF
- Gestion des rôles et permissions

### Validation des données
- Validation côté serveur et client
- Protection contre les injections SQL
- Échappement des données
- Validation des fichiers uploadés

### Logs et monitoring
- Journalisation des connexions
- Suivi des actions utilisateurs
- Alertes de sécurité
- Sauvegardes automatiques

## 📊 Fonctionnalités Avancées

### Dashboard en Temps Réel
- Statistiques en direct
- Graphiques interactifs
- Notifications push
- Indicateurs de performance

### Rapports et Exports
- Rapports financiers détaillés
- Export Excel/PDF
- Graphiques personnalisables
- Rapports automatisés

### API REST
- API pour intégrations externes
- Documentation Swagger
- Authentification JWT
- Rate limiting

### Multi-utilisateurs
- Gestion des rôles
- Permissions granulaires
- Audit trail
- Sessions multiples

## 🚀 Déploiement

### Environnement de production
1. Configurer un serveur web (Apache/Nginx)
2. Installer PHP et MySQL
3. Configurer SSL/TLS
4. Optimiser les performances
5. Configurer les sauvegardes

### Variables d'environnement
```bash
DEBUG_MODE=false
APP_URL=https://votre-domaine.com
SMTP_HOST=smtp.votre-provider.com
SMTP_USERNAME=votre-email@domaine.com
SMTP_PASSWORD=votre-mot-de-passe
```

## 🧪 Tests

### Tests unitaires
```bash
# Installer PHPUnit
composer require --dev phpunit/phpunit

# Exécuter les tests
./vendor/bin/phpunit
```

### Tests d'intégration
- Tests des formulaires
- Tests de l'API
- Tests de sécurité
- Tests de performance

## 📈 Performance

### Optimisations
- Cache des requêtes
- Compression des assets
- Optimisation des images
- Minification CSS/JS

### Monitoring
- Logs de performance
- Métriques d'utilisation
- Alertes de surcharge
- Analyse des erreurs

## 🔧 Maintenance

### Sauvegardes
- Sauvegardes automatiques quotidiennes
- Rétention des sauvegardes (30 jours)
- Tests de restauration
- Sauvegarde des fichiers

### Mises à jour
- Procédure de mise à jour
- Rollback en cas de problème
- Tests de régression
- Documentation des changements

## 📞 Support

### Documentation
- Guide utilisateur
- Guide administrateur
- API documentation
- FAQ

### Support technique
- Email : support@staymanager.com
- Téléphone : +225 27 22 49 50 00
- Horaires : 8h-18h (GMT+0)

## 🤝 Contribution

### Développement
1. Fork le projet
2. Créer une branche feature
3. Commiter les changements
4. Créer une Pull Request

### Standards de code
- PSR-12 pour PHP
- ESLint pour JavaScript
- Commentaires en français
- Tests unitaires obligatoires

## 📄 Licence

Ce projet est sous licence MIT. Voir le fichier `LICENSE` pour plus de détails.

## 🙏 Remerciements

- Bootstrap pour le framework CSS
- Chart.js pour les graphiques
- Font Awesome pour les icônes
- La communauté PHP

---

**StayManager** - Gestion hôtelière intelligente et moderne

*Développé avec ❤️ pour simplifier la gestion hôtelière*