Aller au contenu principal

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 role ou table roles + relation).
  • Protection : middleware auth sur 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 .env né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èreExigence
AuthInscription, connexion, déconnexion, rôles (user/admin)
CRUDUne ressource complète (liste, création, lecture, modification, suppression) avec relations
APIAu moins index + show + store (ou plus) avec Sanctum et API Resources
TestsAu moins 3 tests feature pertinents, verts
SécuritéCSRF, XSS, hash mots de passe, validation, policies
DéploiementProcé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.