menuFerme menuOuvert

Projet de conception d'une plateforme de vote démocratique

VoxPopuli – Plateforme de vote démocratique

Équipe : 4 développeurs

Durée : 3 semaines (méthodologie Agile)

Description : Application web pour des votes démocratiques en ligne.

Type de projet : Universitaire

Contraintes : Temps, collaboration en équipe, respect des spécifications.

Technologies utilisées : MVC, bases de données sécurisées, HTML, BULMA, PHP, gestion des sessions utilisateurs.

Contribution personnelle :

Compétences développées :

Bilan et perspectives :

VoxPopuli a renforcé mon intérêt pour les projets à impact social et a confirmé l’importance de la confiance dans le développement logiciel.

Trace du système de connexion :

Un système d’authentification robuste n’est pas seulement une formalité technique : c’est le fondement de la crédibilité, de la sécurité et de l’équité d’une plateforme de vote en ligne.

C'est pourquoi, j'ai réalisé un système de connexion :

video_connexion

Dans cette vidéo, on peut voir plusieurs cas de figures :

Voici le code qui permet de gérer la connexion de l'utilisateur :

trace_codeConnexion

Dans le code ci-dessus, j'ai réalisé de nombreuses vérifications.

Via un système de pop-up qui s'affiche, j'ai pu rendre une bonne expérience utilisateurs et supprimer des vues inutiles.

Optimisation de l’Expérience Utilisateur (UX) : Gestion des Redirections Post-Connexion :

Comment j’ai transformé une frustration en un parcours utilisateur fluide et intuitif.

Le problème initial : une rupture dans le parcours utilisateur

Scénario classique (et problématique) :

  1. Un utilisateur non connecté clique sur un bouton pour voter, consulter une proposition, ou accéder à une page réservée.
  2. Au lieu d’être guidé vers l’action souhaitée, il atterrit sur une page d’erreur générique (ex. : "Vous devez être connecté pour accéder à cette page").
  3. Conséquences :
  • Frustration : L’utilisateur doit rechercher manuellement la page initiale après connexion.
  • Abandon : Risque qu’il quitte le site, surtout sur mobile oĂą la navigation est moins intuitive.
  • Manque de professionnalisme : Une UX maladroite nuit Ă  la crĂ©dibilitĂ© de la plateforme.

Ce problème est courant sur les sites avec des zones restreintes, mais il est critique pour un outil démocratique où chaque voix compte.

Première solution : Redirection vers la page de connexion

Implémentation basique :

  • J'ai rĂ©alisĂ© des vĂ©rifications systĂ©matique du statut de connexion avant toute action protĂ©gĂ©e.
  • Si l'utilisateur n'est pas connectĂ©, je le redirige vers le formulaire de connexion.

Limite majeure :

Après connexion, l’utilisateur est redirigé vers la page d’accueil (ou un tableau de bord par défaut), pas vers l’action initiale.

Exemple : Il voulait voter pour la proposition #42 → après connexion, il doit re-trouver cette proposition.

Solution améliorée : Stocker la "destination" dans l’URL

Principe :

J'ai ajouter un paramètre redirect dans l’URL de la page de connexion, contenant l’URL de la page originale. Exemple : /login?redirect=/propositions/42/vote

Avantages :

  • Après connexion, l’utilisateur est automatiquement redirigĂ© vers /propositions/42/vote.
  • Simple Ă  implĂ©menter (via les query strings).

Nouveau problème :

Certaines actions nécessitent plus qu’une simple URL pour fonctionner. Exemples concrets dans VoxPopuli :

  • Voter pour une proposition : Il faut connaĂ®tre l’ID de la proposition et le type de vote (pour/contre/abstention).
  • Consulter un rĂ©sultat : Il faut parfois des filtres (ex. : "rĂ©sultats par circonscription").
  • Modifier un profil : Certains champs prĂ©-remplis dĂ©pendent du contexte.

→ Une simple URL ne suffit pas pour restaurer l’état exact de la page.

Solution finale : Un champ params dynamique dans l’URL

Comment ça marche :

Détection de l’action initiale :

Quand un utilisateur non connecté tente d’accéder à une action protégée, le système :

  • Je capture le controleur et l'action suivante (ex. : afterControleur=proposition&afterAction=voter&params=id=42).
  • Je stocke les donnĂ©es dans un champ params.

Visuel du site :

siteRedirectionLorsquePasConnecte

Extrait de mon code de redirection :

systemeRedirection

Système de Notifications : Pourquoi et comment il résout un problème clé dans VoxPopuli ?

Contexte : Un Besoin Client Incomplet

Demande initiale du client :

Permettre à l’administrateur du site de valider les consultations (ex. : une proposition citoyenne).

Problème identifié :

Le client n’avait pas prévu de mécanisme pour avertir l’organisateur (créateur de la consultation) que sa demande avait été validée, rejetée, ou modifiée.

Conséquence :

L’organisateur devait vérifier manuellement le statut de sa consultation (perte de temps, risque d’oubli, frustration).

→ Un processus démocratique repose sur la transparence et la réactivité : sans notification, le système devenait opaque et peu efficace.

Pourquoi un Système de Notifications Était Indispensable

Améliorer l’Expérience Utilisateur (UX) pour les Organisateurs

Sans notifications :

L’organisateur doit rafraîchir constamment la page ou contacter l’administrateur pour savoir si sa consultation est validée.

Exemple : Un militant associatif qui lance une pétition ne sait pas si elle est en ligne → découragement.

Avec notifications :

Message clair et instantané : "Votre consultation 'Réforme des transports' a été validée par l’administrateur. Elle est maintenant visible par les votants."

Gain de temps : L’organisateur peut se concentrer sur la mobilisation plutôt que sur le suivi administratif.

Renforcer la Transparence et la Confiance

Dans un outil démocratique, chaque acteur doit savoir où en est son initiative.

Les notifications documentent les décisions (ex. : date de validation, nom de l’administrateur) → traçabilité en cas de litige.

Exemple : Si un organisateur conteste un rejet, les logs des notifications servent de preuve.

Réduire la Charge de Travail de l’Administrateur

Sans notifications :

L’administrateur reçoit des emails ou messages répétés du type "Ma consultation est-elle validée ?".

Avec notifications :

Automatisation : Le système informe l’organisateur → moins de sollicitations manuelles.

Bénéfice : L’administrateur peut se concentrer sur des tâches à plus forte valeur (ex. : modération, analyse des résultats).

Éviter les Erreurs et les Oublis

Scénario risque :

Une consultation est validée, mais l’organisateur ne le sait pas → pas de communication aux votants → faible participation.

Avec notifications :

L’organisateur est alerté en temps réel et peut lancer sa campagne de mobilisation.

Voici le code du controleur de notification que j'ai réalisé :

controleurNotification

C'est ce code qui va permettre de réaliser l'affichage de tous les notifications et de les supprimer.

systemeNotificationSite

Démonstration de la validation des consultations sur le site que j'ai réalisées :

demonstrationValidationConsultation

Sécurité des données (chiffrement des mots de passe)

Dans le développement de notre plateforme VoxPopuli, j'ai compris à quel point la sécurité des mots de passe est un enjeu critique pour toute application manipulant des données utilisateurs. Le chiffrement des mots de passe n'est pas une simple bonne pratique - c'est une obligation éthique et technique qui protège à la fois les utilisateurs et la réputation du service.

Pourquoi chiffrer les mots de passe ?

Protéger les utilisateurs contre les fuites de données

Respecter les obligations légales

Préserver la confiance des utilisateurs

Les bonnes pratiques de chiffrement

Pour notre projet, nous avons mis en place un système robuste :

Le hachage avec salage (salt)

Le poivre (pepper)

Des algorithmes adaptés

Les conséquences d'une mauvaise gestion

Une base de données contenant des mots de passe en clair ou mal protégés expose à :

chiffrementMotDePasse

Collaboration et gestion de projet : Leçons apprises

Ce projet universitaire en équipe de 5 personnes, réalisé en seulement 3 semaines, a été une véritable école de la collaboration et de la gestion de projet. Travailler dans un cadre aussi contraint m'a appris des leçons précieuses sur l'importance de l'organisation collective et de la flexibilité individuelle.

La collaboration a été le fondement de notre réussite. Dès le début, nous avons établi une répartition claire des tâches en fonction des compétences et des affinités de chacun. Cette organisation initiale nous a permis d'éviter les chevauchements de travail et les oublis. Nous avons mis en place des points réguliers (tous les 2-3 jours) pour faire le point sur l'avancement, partager nos difficultés et ajuster notre stratégie si nécessaire. Ces réunions courtes mais efficaces nous ont permis de maintenir une communication fluide et de garder tout le monde aligné sur les objectifs. J'ai particulièrement apprécié cette dynamique où chacun pouvait exprimer ses idées et ses préoccupations, créant ainsi un environnement de travail collaboratif et bienveillant.

La gestion du temps a été notre plus grand défi. Avec seulement 3 semaines pour livrer un projet complet, chaque minute comptait. J'ai appris à prioriser les tâches en fonction de leur importance et de leur urgence. Nous avons utilisé une approche inspirée des méthodologies agiles, en découpant le projet en petites étapes réalisables. Cette méthode nous a permis de :

Enfin, ce projet m'a enseigné l'importance de l'adaptabilité. Malgré une planification minutieuse, nous avons dû faire face à des contraintes techniques imprévues et des retards dans certaines tâches. Plutôt que de nous décourager, nous avons appris à :

Cette expérience intense m'a montré que le succès d'un projet ne dépend pas seulement des compétences techniques, mais aussi de la capacité à travailler ensemble efficacement, à gérer son temps intelligemment et à s'adapter aux imprévus. Ces compétences en gestion de projet et en travail d'équipe sont devenues pour moi aussi importantes que les compétences techniques purement informatiques, et je suis convaincu qu'elles me seront précieuses tout au long de ma carrière.

Gestion de l'avancé du groupe en utilisant Trello

Lors de ce projet, j’ai endossé le rôle de Scrum Master, une fonction centrale visant à accompagner l’équipe au quotidien. Mes responsabilités incluaient le suivi de l’avancement des tâches, l’évaluation de la charge de travail individuelle, ainsi que la capitalisation sur les livrables réutilisables pour optimiser l’efficacité collective.

Cette expérience m’a également permis de découvrir et maîtriser Trello, un outil collaboratif qui s’est révélé indispensable pour notre organisation. Grâce à cette plateforme, nous avons pu attribuer clairement les tâches, visualiser en temps réel l’état d’avancement du travail, et ainsi fluidifier la coordination entre les membres de l’équipe. Trello a joué un rôle clé dans la transparence et la réactivité de notre processus de développement.

trello
Voir le site
top-pages github cv linkedin