# Backend Laravel - SAR

## 📋 Prérequis

- PHP >= 8.1
- Composer
- MySQL >= 5.7 ou MariaDB >= 10.3
- Extensions PHP requises :
  - OpenSSL
  - PDO
  - Mbstring
  - Tokenizer
  - XML
  - Ctype
  - JSON
  - BCMath
  - Fileinfo

## 🚀 Installation

1. **Installer les dépendances :**
```bash
composer install
```

2. **Configurer l'environnement :**
```bash
cp .env.example .env
php artisan key:generate
```

3. **Configurer la base de données MySQL dans `.env` :**
```env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=sar_db
DB_USERNAME=root
DB_PASSWORD=votre_mot_de_passe
```

4. **Créer la base de données MySQL :**
```sql
CREATE DATABASE sar_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```

5. **Exécuter les migrations :**
```bash
php artisan migrate
```

6. **Créer le lien symbolique pour le stockage :**
```bash
php artisan storage:link
```

7. **Démarrer le serveur de développement :**
```bash
php artisan serve
```

Le serveur sera accessible sur `http://localhost:8000`

## 📁 Structure du projet

```
backend/
├── app/
│   ├── Http/
│   │   └── Controllers/
│   │       └── Api/
│   │           └── ActualiteController.php
│   └── Models/
│       └── Actualite.php
├── config/
│   ├── database.php
│   ├── cors.php
│   └── filesystems.php
├── database/
│   └── migrations/
│       └── 2024_01_01_000000_create_actualites_table.php
├── routes/
│   └── api.php
└── public/
    └── media/  (pour les images)
```

## 🔌 API Endpoints

### Liste des actualités
```
GET /api/actualites
```

**Paramètres de requête :**
- `locale` (optionnel) : `fr` ou `en` (défaut: `fr`)
- `search` (optionnel) : Recherche par mot-clé
- `featured` (optionnel) : `true` pour le format liste (page d'accueil)

**Exemple :**
```
GET /api/actualites?locale=en&featured=true
```

### Détails d'une actualité
```
GET /api/actualites/{id}
```

**Paramètres de requête :**
- `locale` (optionnel) : `fr` ou `en` (défaut: `fr`)

**Exemple :**
```
GET /api/actualites/1?locale=en
```

## 🔧 Configuration CORS

Les origines autorisées sont configurées dans `config/cors.php` et peuvent être modifiées via la variable d'environnement `CORS_ALLOWED_ORIGINS` :

```env
CORS_ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
```

## 🚀 Déploiement

### Railway

Le fichier `nixpacks.toml` est configuré pour Railway. Assurez-vous de configurer les variables d'environnement :

```env
APP_KEY=base64:...
DB_CONNECTION=mysql
DB_HOST=...
DB_PORT=3306
DB_DATABASE=...
DB_USERNAME=...
DB_PASSWORD=...
CORS_ALLOWED_ORIGINS=https://votre-frontend.vercel.app
```

### Variables d'environnement requises

- `APP_KEY` : Clé de chiffrement Laravel (générée avec `php artisan key:generate`)
- `DB_*` : Configuration MySQL
- `CORS_ALLOWED_ORIGINS` : Origines autorisées pour CORS

## 📝 Notes

- Les images sont stockées dans `public/media/actualites/`
- La détection de la locale se fait via le paramètre `locale` ou le header `Accept-Language`
- Le format de date est localisé (français/anglais)
