# 📦 Installation de XPROJECT

## 🎯 Installation Rapide (FTP sur snew.fr)

### Étape 1 : Télécharger et décompresser

1. **Télécharger** le fichier `xproject-composer-structure.zip`
2. **Décompresser** sur votre PC
3. Vous obtenez le dossier `xproject/`

### Étape 2 : Configuration

**Créer le fichier `.env` :**
```bash
# Copier .env.example vers .env
cp .env.example .env
```

**Éditer `.env` avec vos paramètres :**
```env
APP_NAME=XPROJECT
APP_ENV=production
APP_DEBUG=false
APP_URL=https://snew.fr/xproject

DB_HOST=localhost
DB_NAME=xproject_db
DB_USER=votre_user
DB_PASSWORD=votre_password
```

### Étape 3 : Upload FTP

**Connexion FTP :**
```
Hôte : ftp.snew.fr
Port : 21
User : votre_username
Pass : votre_password
```

**Upload :**
1. Se connecter à FTP
2. Aller dans `/www/`
3. Créer le dossier `xproject` (ou utiliser existant)
4. Uploader **TOUT** le contenu dans `/www/xproject/`

**⚠️ Important : Uploader aussi les fichiers cachés (.env, .htaccess, .gitignore)**

### Étape 4 : Créer la base de données

**Via phpMyAdmin ou ligne de commande :**
```sql
CREATE DATABASE xproject_db 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;
```

### Étape 5 : Permissions

**Via FTP, définir les permissions :**
```
Dossiers : 755
- app/
- config/
- database/
- public/
- resources/
- routes/

Dossiers écriture : 777
- storage/logs/
- storage/cache/
- storage/uploads/

Fichiers : 644
- Tous les fichiers .php
- .htaccess
- .env
```

### Étape 6 : Test

**URLs à tester :**

**Avec .htaccess racine :**
```
https://snew.fr/xproject/
```

**Sans .htaccess racine (fallback) :**
```
https://snew.fr/xproject/public/
```

**Routes de test :**
- `GET /` - Page d'accueil
- `GET /test` - Test routing
- `GET /user/123` - Test paramètres
- `GET /api/test` - Test API

---

## 🖥️ Installation Locale (Développement)

### Prérequis

- PHP >= 7.4
- MySQL >= 5.7
- Composer (optionnel)
- Apache/Nginx

### Étape 1 : Cloner le projet

```bash
git clone https://github.com/votre-compte/xproject.git
cd xproject
```

### Étape 2 : Installation des dépendances

**Avec Composer :**
```bash
composer install
```

**Sans Composer :**
L'autoloader PSR-4 intégré fonctionne sans Composer.

### Étape 3 : Configuration

```bash
# Copier .env.example
cp .env.example .env

# Éditer .env
nano .env
```

```env
APP_ENV=development
APP_DEBUG=true
APP_URL=http://localhost/xproject

DB_HOST=localhost
DB_NAME=xproject_db
DB_USER=root
DB_PASSWORD=
```

### Étape 4 : Base de données

```bash
# Créer la base
mysql -u root -p
CREATE DATABASE xproject_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
exit;

# Importer le schéma (quand disponible)
mysql -u root -p xproject_db < database/schema.sql
```

### Étape 5 : Configuration Apache

**VirtualHost (optionnel) :**
```apache
<VirtualHost *:80>
    ServerName xproject.local
    DocumentRoot /var/www/xproject/public
    
    <Directory /var/www/xproject/public>
        AllowOverride All
        Require all granted
    </Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/xproject-error.log
    CustomLog ${APACHE_LOG_DIR}/xproject-access.log combined
</VirtualHost>
```

**Ou utiliser le sous-dossier :**
```
http://localhost/xproject/public/
```

### Étape 6 : Permissions

```bash
chmod -R 755 storage/
chmod -R 755 bootstrap/cache/
```

### Étape 7 : Lancer le projet

**Option 1 : Serveur PHP intégré**
```bash
php -S localhost:8000 -t public/
```

**Option 2 : Apache/Nginx**
```
http://localhost/xproject/public/
```

**Option 3 : VirtualHost**
```
http://xproject.local/
```

---

## 🔧 Configuration Avancée

### Composer (optionnel)

Si vous utilisez Composer :

```bash
# Installation
composer install

# Mise à jour
composer update

# Autoload
composer dump-autoload
```

### Structure des fichiers

```
xproject/
├── app/                    # Code applicatif
│   ├── Core/              # Classes core
│   ├── Controllers/       # Contrôleurs MVC
│   ├── Models/           # Modèles
│   ├── Services/         # Services métier
│   ├── Middleware/       # Middlewares
│   └── Helpers/          # Fonctions helper
├── config/               # Configuration
├── database/             # Base de données
│   ├── migrations/       # Migrations
│   └── seeds/           # Seeds
├── public/               # Racine web
│   ├── index.php        # Point d'entrée
│   ├── .htaccess        # Apache config
│   └── assets/          # Assets publics
├── resources/            # Ressources
│   └── views/           # Templates
├── routes/               # Routes
│   └── web.php          # Routes web
├── storage/              # Stockage
│   ├── logs/            # Logs
│   ├── cache/           # Cache
│   └── uploads/         # Uploads
├── tests/                # Tests
├── vendor/               # Dépendances (Composer)
├── .env                  # Configuration env
├── .env.example          # Template env
├── .gitignore
├── composer.json
└── README.md
```

### Variables d'environnement

**Production :**
```env
APP_ENV=production
APP_DEBUG=false
```

**Développement :**
```env
APP_ENV=development
APP_DEBUG=true
```

---

## 🐛 Dépannage

### Erreur 500

**Causes :**
- Permissions incorrectes
- Erreur dans .env
- Erreur PHP

**Solutions :**
1. Vérifier les logs : `storage/logs/`
2. Activer le debug : `APP_DEBUG=true`
3. Vérifier les permissions

### Erreur 404

**Causes :**
- mod_rewrite désactivé
- .htaccess incorrect

**Solutions :**
1. Vérifier que mod_rewrite est actif
2. Vérifier le .htaccess
3. Utiliser `/public/` dans l'URL

### Classes not found

**Causes :**
- Autoloader non chargé
- Namespace incorrect

**Solutions :**
1. Vérifier `public/index.php`
2. Vérifier les namespaces PSR-4
3. `composer dump-autoload`

### Erreur base de données

**Causes :**
- Connexion refusée
- Base inexistante
- Credentials incorrects

**Solutions :**
1. Vérifier `.env`
2. Vérifier que la base existe
3. Tester la connexion MySQL

---

## ✅ Checklist d'installation

### FTP (Production)

- [ ] ZIP téléchargé et décompressé
- [ ] `.env` créé et configuré
- [ ] Upload FTP complet
- [ ] Base de données créée
- [ ] Permissions définies
- [ ] Test URL de base
- [ ] Test des routes

### Local (Développement)

- [ ] Projet cloné
- [ ] Composer installé (optionnel)
- [ ] `.env` créé
- [ ] Base de données créée
- [ ] Apache/Nginx configuré
- [ ] Permissions définies
- [ ] Serveur lancé
- [ ] Tests fonctionnels

---

## 🚀 Prochaines étapes

Après l'installation :

1. **Importer le schéma de base de données**
2. **Créer les premières routes**
3. **Développer les contrôleurs**
4. **Créer les vues**
5. **Implémenter l'authentification**

---

## 📞 Support

- **Documentation :** [docs/](docs/)
- **Issues :** GitHub Issues
- **Email :** support@xproject.com

---

**Bonne installation ! 🎉**
