Projet 1 – Application Laravel complète
Niveau 6 – certification
Objectif
Réaliser une application Laravel professionnelle qui démontre la maîtrise des niveaux 1 à 5 : PHP solide, Laravel fondamental et avancé, API, tests, sécurité et déploiement. Ce projet sert de référence pour le portfolio et la certification.
Cahier des charges
1. Authentification
- Inscription : email, nom, mot de passe (+ confirmation) ; validation, hash du mot de passe.
- Connexion / Déconnexion : session web (Breeze ou équivalent recommandé).
- Rôles : au moins user et admin (champ
roleou tableroles+ relation). - Protection : middleware
authsur les zones réservées ; policies pour les actions sensibles (ex. seul l’admin ou le propriétaire peut modifier/supprimer une ressource).
2. CRUD avancé
- Au moins une ressource métier (ex. articles, projets, produits) avec :
- Liste paginée, avec éventuels filtres (statut, recherche).
- Création : formulaire, Form Request, politique d’autorisation (create).
- Lecture : détail (show) avec relations (ex. auteur, catégories).
- Modification : formulaire pré-rempli, Form Request, policy (update).
- Suppression : policy (delete), confirmation côté interface.
- Relations Eloquent : au moins une relation (ex. article → user, article → category) avec eager loading pour éviter N+1.
- Migrations : schéma cohérent (clés étrangères, index si besoin).
3. API
- Routes API (ex.
/api/v1/articles) pour la même ressource (ou un sous-ensemble) :- Index (liste paginée) et show (détail) en GET.
- Store, update, destroy protégés par Sanctum (token).
- API Resources pour formater les réponses JSON.
- Versioning : préfixe
/api/v1/. - (Optionnel) Endpoint de login API renvoyant un token pour les tests (Postman, Insomnia).
4. Tests
- Tests feature au minimum :
- Accès aux routes protégées (redirection si non connecté).
- Création d’une ressource quand connecté (données valides).
- Échec de création si validation en échec (erreurs en session ou JSON).
- (Optionnel) Modification / suppression avec policy (autorisé / refusé).
- Utilisation de RefreshDatabase, factories, actingAs.
- Les tests doivent passer (
php artisan test).
5. Sécurité
- CSRF : tous les formulaires web avec
@csrf. - XSS : affichage avec
{{ }}(Blade) ; pas de{!! !!}sur contenu utilisateur non sécurisé. - Mots de passe : uniquement hashing (Hash::make / bcrypt), jamais en clair.
- Validation : toutes les entrées utilisateur validées (Form Request ou
$request->validate()). - Autorisation : policies (ou Gates) pour les actions sensibles ; pas d’accès direct par URL sans vérification.
- (Recommandé) Rate limiting sur login et/ou API.
6. Déploiement
- Documentation ou procédure de déploiement : environnement (PHP, BDD, extensions), variables
.envnécessaires, commandes (composer install,migrate,config:cache,storage:link), queue worker et cron si utilisés. - (Optionnel) Déploiement effectif sur un hébergement (Forge, shared hosting, VPS) avec HTTPS et APP_DEBUG=false, APP_ENV=production.
Structure recommandée
- Models : User, Article (ou ressource choisie), éventuellement Category, etc.
- Controllers : ArticleController (web), Api/ArticleController (api).
- Form Requests : StoreArticleRequest, UpdateArticleRequest.
- Policies : ArticlePolicy (view, create, update, delete).
- API Resources : ArticleResource, ArticleCollection (si besoin).
- Migrations : users (avec role ou table roles), articles, categories, etc.
- Factories : User, Article (et autres modèles).
- Tests : Feature/ArticleTest, Feature/AuthTest, éventuellement Feature/Api/ArticleApiTest.
Critères de validation (projet 1)
| Critère | Exigence |
|---|---|
| Auth | Inscription, connexion, déconnexion, rôles (user/admin) |
| CRUD | Une ressource complète (liste, création, lecture, modification, suppression) avec relations |
| API | Au moins index + show + store (ou plus) avec Sanctum et API Resources |
| Tests | Au moins 3 tests feature pertinents, verts |
| Sécurité | CSRF, XSS, hash mots de passe, validation, policies |
| Déploiement | Procédure écrite ou déploiement effectif (prod-ready) |
Le projet peut être étendu (commentaires, tags, recherche avancée, export PDF, etc.) tant que les points ci-dessus sont couverts et de qualité professionnelle.
Suite
Recommandation : avoir réalisé le Projet 0 (essentiel) et le Projet intermédiaire avant d’attaquer ce Projet 1. Une fois le Projet 1 validé, vous pouvez enchaîner sur le Projet 2 – Projet libre encadré (portfolio) puis demander la Certification Dresseur de Code si les conditions sont remplies.