Tous les projets

2023 — en cours

Dev Platform — Plateforme de Collaboration pour Développeurs

Projet personnel ambitieux : construire une vraie plateforme collaborative pour développeurs, avec des fonctionnalités de gestion de projet, de communication temps réel et de suivi de contributions.

Symfony PHP MySQL Docker PHPUnit Mercure jQuery Bootstrap GitLab CI/CD

// niveau de départ

  • Symfony maîtrisé — Mercure et temps réel découverts pour ce projet
  • WebSockets connus théoriquement — jamais implémentés
  • CI/CD : notions de base, jamais configuré une pipeline complète

Contexte

Ce projet est né d’une idée simple : construire l’outil que j’aurais voulu utiliser pour gérer mes projets personnels. Au lieu de jongler entre GitHub Issues, un tableur et des messages Discord, une seule plateforme qui regroupe tout.

C’est aussi un terrain d’expérimentation pour des fonctionnalités plus complexes : communication temps réel, permissions fines, statistiques d’activité.

Communication temps réel avec Mercure

La fonctionnalité la plus intéressante techniquement : les mises à jour de tâches sont propagées en temps réel à tous les collaborateurs d’un projet, sans polling et sans rechargement de page.

Mercure utilise le protocole SSE (Server-Sent Events) natif du navigateur. Côté Symfony, le contrôleur publie des mises à jour sur le Hub Mercure après chaque modification. Côté client, un EventSource écoute et met à jour le DOM — pas de WebSocket, pas de polling.

Gestion des rôles et permissions

Chaque projet a ses propres membres avec des rôles distincts :

  • Owner : toutes les permissions, peut inviter/exclure des membres
  • Manager : créer/modifier/supprimer des tâches, assigner des membres
  • Developer : modifier les tâches qui lui sont assignées, commenter
  • Viewer : lecture seule

Les permissions sont vérifiées via des Voters Symfony — la logique d’accès est centralisée et testable unitairement.

Pipeline CI/CD GitLab

La pipeline GitLab CI/CD déclenche automatiquement à chaque push : lint PHP (PSR-12), exécution des tests PHPUnit avec base de test dédiée, puis build Docker sur la branche principale.

// points forts

  • Gestion de projets : création, assignation et suivi de tâches
  • Communication en temps réel via Mercure (WebSockets Symfony-native)
  • Tableau de bord personnalisable avec statistiques d'activité
  • Authentification sécurisée avec gestion des rôles et des accès
  • Suite de tests PHPUnit : unitaires et fonctionnels
  • Pipeline CI/CD GitLab : lint, tests, build automatiques
  • Containerisation Docker complète

// ce que j'ai appris

  • Mercure : protocole SSE pour la communication temps réel dans Symfony
  • Architecture d'une plateforme multi-utilisateurs avec rôles et permissions
  • PHPUnit avancé : tester des features complexes avec des fixtures
  • Pipeline CI/CD GitLab complète pour un projet Symfony