← Retour au tableau de bord
Politique de DEV · v1.0

Politique de DEV

Standards PSR-12, OWASP Top 10, conventions PR, checklists déploiement et performance.

Standards de code

PSR-12 — PHP Laravel

// ✅ BON — Standards PSR-12 + Harambee conventions
namespace App\Services;

class InvestissementService
{
    public function create(Investisseur $investisseur, Project $project, float $montant): Investissement
    {
        return DB::transaction(function () use ($investisseur, $project, $montant) {
            $this->assertCanInvest($investisseur, $project, $montant);

            $investissement = Investissement::create([
                'investisseur_id' => $investisseur->id,
                'project_id'      => $project->id,
                'montant'         => $montant,
                'reference'       => $this->generateReference(),
            ]);

            event(new InvestissementCreated($investissement));

            return $investissement;
        });
    }
}
Règles clés PSR-12 appliquées
RègleApplication Harambee
4 espaces, pas de tabsEditorConfig + PHP CS Fixer configurés
Accolade ouvrante sur nouvelle ligne (classes/méthodes)Vérification automatique CI
Une classe par fichier, namespace correspondant au cheminPSR-4 autoloading Composer
PHPDoc sur toutes les méthodes publiques@param, @return, @throws obligatoires
Longueur de ligne max 120 caractèresPHP CS Fixer rule: line_length
snake_case pour propriétés DB, camelCase pour méthodes PHPConvention Eloquent respectée

Code Review

Checklists Pull Request

👤 Auteur — avant d'ouvrir la PR
  • Tous les tests existants passent (php artisan test)
  • Nouveaux tests écrits pour la feature
  • Couverture ≥ 80 % maintenue
  • Code respecte PSR-12 (php-cs-fixer fix --dry-run)
  • PHPDoc à jour sur les méthodes publiques
  • Aucun dd() ou var_dump() oublié
  • Variables d'environnement ajoutées dans .env.example
  • Migration réversible (méthode down() fonctionnelle)
  • Charte graphique Harambee respectée (si front-end)
  • Description PR complète avec lien vers spec
🔍 Reviewer — avant d'approuver
  • Logique métier conforme au CDC
  • Pas de régression sur fonctionnalités existantes
  • Gestion d'erreurs correcte (exceptions typées)
  • Pas de requêtes N+1 (eager loading vérifié)
  • Données utilisateur validées/filtrées avant DB
  • Pas de secrets hardcodés dans le code
  • Transactions DB pour les opérations critiques
  • Events/Jobs pour les opérations asynchrones
  • Performance : index DB appropriés
  • CI GitHub Actions vert (obligatoire)

Sécurité

OWASP Top 10 — Mitigations Harambee

#VulnérabilitéSévéritéMitigation Harambee
A01Broken Access ControlCritiqueLaravel Policies + middleware AdminOnly + RBAC sur chaque route
A02Cryptographic FailuresCritiquebcrypt (rounds=12), HTTPS forcé, secrets dans .env chiffré, S3 SSE-S3
A03Injection (SQL/XSS)CritiqueEloquent ORM (PDO paramétré), Blade auto-escape, Input::validate() systématique
A04Insecure DesignÉlevéThreat modeling par module, revue architecture avant implémentation
A05Security MisconfigurationÉlevéAPP_DEBUG=false en prod, headers sécurité Nginx, .htaccess protect includes/
A06Vulnerable ComponentsÉlevéDependabot activé, composer audit en CI, mise à jour mensuelle deps
A07Auth FailuresCritiqueSanctum tokens, rate-limit 5 tentatives/min, 2FA TOTP, session timeout 2h
A08Software & Data IntegrityMoyenSignature webhooks paiements, hachage documents KYC, SRI assets front
A09Security Logging FailuresMoyenLaravel Log + audit trail DB, alertes Sentry, logs horodatés immuables
A10SSRFÉlevéAllowlist URLs webhooks, validation domaines, pas d'URLs user dans HTTP client

Déploiement

Checklists pre / post déploiement

⬆️ Avant déploiement
  • Tous les tests passent en staging
  • Coverage ≥ 80 % confirmé
  • Migrations testées (up ET down)
  • .env production vérifié et chiffré
  • Backup base de données effectué
  • composer install --no-dev --optimize-autoloader
  • Mode maintenance activé (artisan down)
  • Assets compilés (npm run build)
✅ Après déploiement
  • artisan migrate --force exécuté
  • artisan config:cache et route:cache
  • Mode maintenance désactivé (artisan up)
  • Smoke tests manuels (login, projet, investissement)
  • Monitoring Sentry — aucune erreur 5xx
  • Queue workers redémarrés (Horizon)
  • Performance Lighthouse ≥ 90
  • Tag Git créé (ex: v1.0.0)

Performance

Règles de performance Laravel

RègleCommentOutils
Éviter les requêtes N+1Utiliser with() pour eager loading systématiqueLaravel Debugbar, Telescope
Paginer les listes->paginate(20) ou ->cursorPaginate() sur toutes les listes
Cache Redis pour les données fréquentesCache::remember('categories', 3600, ...)Redis, Laravel Cache
Jobs pour les opérations lentesEnvoi email, génération PDF, KYC asynchroneLaravel Horizon
Index DB sur les colonnes de filtrecategorie_id, statut, date_fin, investisseur_idMigration + EXPLAIN
Optimiser les assetsVite + code splitting + lazy loading imagesVite, Lighthouse