# Guide First App Laravel — OFPPT Notes

**Public :** vrai débutant / stagiaire  
**Objectif :** créer une petite app Laravel. Elle a un login, des modules, et un calcul de note finale OFPPT.  
**Projet :** `first-app`  
**DB :** **SQLite** (défaut) **ou MySQL** (XAMPP / phpMyAdmin)  
**Formule :** `(Note1A × 1 + Note2A × 3 + EFF) ÷ 9` — réussi si ≥ **10/20**  
**Compte test :** `admin@ofppt.ma` / `password`

Ouvre **`index.html`** (FR | العربية). C’est le guide facile. Tu lis. Tu copies. Tu colles. Chaque bloc dit où écrire ou où coller.

---

## 12 étapes (résumé)

1. **Avant de commencer** — installe PHP 8.2+, Composer, VS Code. Pour MySQL, utilise XAMPP.
2. **Créer ton projet** — crée ton dossier, puis lance Laravel avec les commandes.
   - Pas besoin de `key:generate`. Laravel le fait tout seul.
3. **Trouver les dossiers** — Models, Controllers, migrations, views, `routes/web.php`.
4. **Préparer la base** — choisis SQLite **ou** MySQL. Puis crée `modules`, `calculs`, `notes_modules`. Lance `php artisan migrate`.
5. **Créer les models** — Module, Calcul, NoteModule. Garde bien `$table = 'notes_modules'`.
6. **Faire le login** — crée AuthController et `auth/login.blade.php`.
7. **Gérer les modules** — crée ModuleController pour ajouter, modifier, supprimer.
8. **Calculer la note** — crée CalculController avec la formule OFPPT.
9. **Créer les pages** — layout, modules/*, calcul/index.
10. **Relier les pages** — mets les routes dans `routes/web.php`.
11. **Ajouter des données test** — UserSeeder + ModuleSeeder. Puis `migrate:fresh --seed`. Puis login.
12. **Corriger les erreurs** — CSRF, migrations, `$table`, MySQL `.env`, etc.

---

## Base de données

### Option A — SQLite (défaut)

Tu n’as rien à changer. `.env` a déjà `DB_CONNECTION=sqlite`.

### Option B — MySQL (XAMPP)

1. Ouvre XAMPP. Start **Apache** et **MySQL**.  
2. Ouvre phpMyAdmin. Crée la base `first_app` avec `utf8mb4_unicode_ci`.  
3. Dans `.env`, colle ceci :

```env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=first_app
DB_USERNAME=root
DB_PASSWORD=
```

4. Lance `php artisan config:clear`. Puis lance `php artisan migrate`.

Le code des migrations, models et seeders est le même pour SQLite et MySQL.

---

## Commandes clés

1. Crée un dossier (clic droit → Nouveau → Dossier).
2. Ouvre-le. Dans la barre d’adresse, tape `cmd` puis Entrée.
3. Dans ce CMD :

```bash
composer create-project laravel/laravel first-app
cd first-app
code .
php artisan config:clear
php artisan migrate
php artisan migrate:fresh --seed
php artisan serve
```
---

**Fin.** Le guide complet à copier-coller est dans `index.html`.
