# XPROJECT

Application SaaS multi-tenant développée en PHP avec architecture MVC personnalisée.

## 📋 Prérequis

- PHP >= 7.4
- MySQL >= 5.7
- Apache avec mod_rewrite activé
- Composer (optionnel pour développement)

## 🚀 Installation

### 1. Cloner ou télécharger le projet

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

### 2. Configuration

```bash
# Copier le fichier d'environnement
cp .env.example .env

# Éditer .env avec vos paramètres
nano .env
```

### 3. Installation des dépendances (optionnel)

```bash
# Si vous utilisez Composer
composer install

# Sans Composer, l'autoloader PSR-4 intégré fonctionnera
```

### 4. Configuration de la base de données

```sql
CREATE DATABASE xproject_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```

Importez le schéma SQL depuis `/database/schema.sql`

### 5. Permissions

```bash
chmod -R 755 storage/
chmod -R 755 storage/logs/
chmod -R 755 storage/cache/
chmod -R 755 storage/uploads/
```

## 🌐 Déploiement FTP (snew.fr)

### Étape 1 : Upload FTP

Uploadez tous les fichiers dans `/www/xproject/` via FTP

### Étape 2 : Configuration serveur

Assurez-vous que votre `.htaccess` racine est présent :

```apache
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /xproject/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
```

### Étape 3 : Accès

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

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

## 📂 Structure du projet

```
xproject/
├── app/                    # Code de l'application
│   ├── Core/              # Classes core (Router, Request, Response)
│   ├── Controllers/       # Contrôleurs
│   ├── Models/           # Modèles de données
│   ├── Services/         # Services métier
│   ├── Middleware/       # Middlewares
│   └── Helpers/          # Fonctions helper
├── config/               # Fichiers de configuration
├── database/             # Migrations et seeds
├── public/               # Point d'entrée web (index.php)
│   ├── assets/          # CSS, JS, Images
│   └── .htaccess        # URL rewriting
├── resources/            # Vues et templates
│   └── views/
├── routes/               # Définition des routes
│   └── web.php
├── storage/              # Fichiers générés
│   ├── logs/
│   ├── cache/
│   └── uploads/
├── tests/                # Tests unitaires et fonctionnels
├── vendor/               # Dépendances Composer
├── .env.example          # Template de configuration
├── .gitignore
└── composer.json
```

## 🛣️ Routes disponibles

### Routes de test
- `GET /` - Page d'accueil
- `GET /test` - Test du routing
- `GET /user/{id}` - Test des paramètres
- `GET /api/test` - Test API (JSON)

### Ajouter des routes

Éditez `/routes/web.php` :

```php
<?php

use App\Core\Router;

$router = new Router();

// Vos routes ici
$router->get('/ma-route', function($request) {
    return response()->html('<h1>Ma route</h1>');
});

return $router;
```

## 🔧 Configuration

### Environnement (.env)

```env
APP_NAME=XPROJECT
APP_ENV=development
APP_DEBUG=true
APP_URL=https://snew.fr/xproject

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

### Base de données

Configuration dans `/config/database.php` (à créer)

## 🧪 Tests

```bash
# Lancer les tests
composer test

# Ou avec PHPUnit directement
./vendor/bin/phpunit
```

## 📖 Documentation

- [Architecture MVC](docs/architecture.md)
- [Routing](docs/routing.md)
- [Base de données](docs/database.md)
- [Authentification](docs/authentication.md)

## 🐛 Dépannage

### Erreur 500
- Vérifier les permissions (755 pour dossiers, 644 pour fichiers)
- Vérifier les logs dans `/storage/logs/`

### Erreur 404
- Vérifier que mod_rewrite est activé
- Vérifier le `.htaccess` dans `/public/`

### Classes not found
- Vérifier l'autoloader dans `/public/index.php`
- Vérifier les namespaces (PSR-4)

## 📝 Licence

Propriétaire - XPROJECT Team

## 👥 Équipe

- Développement : XPROJECT Team
- Support : support@xproject.com

## 🔗 Liens utiles

- [Documentation complète](https://docs.xproject.com)
- [Support](https://support.xproject.com)
- [Changelog](CHANGELOG.md)
