Projets
Systèmes livrés, produits en développement et prototypes. Filtrez par état.
The Mad Space
Marketplace bilingue · créations imprimées à la demande
The Mad Space permet aux créateurs de soumettre leurs œuvres, de les transformer en vêtements et de recevoir une commission sur chaque vente. Comme CTO, je prends en charge la direction technique, l'architecture et le développement de la plateforme — du parcours créateur jusqu'au paiement et à la production automatisée des commandes.
Cadence
App mobile coaching sportif
Application mobile coach ↔ athlète co-fondée avec Alexandre (design). 169+ issues structurées sur 13 sprints, audit concurrentiel de 8+ apps, conformité Loi 25 + PIPEDA + GDPR-ready. Beachhead : coachs musculation francophones au Québec.
CanTelcoX
BSS télécom événementiel · saga, Outbox, DLQ
Système de support commercial (BSS) d'un opérateur mobile : portabilité de numéro, activation de ligne, facturation, MFA et anti-fraude. Le système passe d'un découpage microservices synchrone à une architecture orientée événements — 6 services hexagonaux, aucun appel HTTP direct de service à service dans le flux métier, saga chorégraphiée sur RabbitMQ avec compensation, patron Outbox transactionnel, file de rebut et traçage distribué. Deux intégrations externes réelles sont isolées derrière une couche anticorruption : free5GC (cœur réseau 5G, provisionnement des MSISDN via les API UDM) et un hub de portabilité Java, en rôle receveur et donneur, par webhooks TMF Event v4 à signature vérifiée. Ce que j'en retiens n'est pas la liste de patrons mais la façon dont l'optimisation a été conduite : cinq paliers, chacun mesuré et consigné, y compris celui qui n'a rien donné. Le palier 2 est le plus instructif — accélérer la publication a amélioré l'accusé de réception sans améliorer la convergence, parce que le goulot s'était déplacé vers svc-subscription ; la mesure l'a localisé (3 960 messages en attente sur un seul consommateur) et les paliers suivants l'ont traité. Résultat final : accusé P95 divisé par 2,4, convergence des sagas passée de 47 % à 100 %, zéro erreur sur 22 031 requêtes.

Vibe Montréal
Découverte locale intelligente · Prototype mobile + web
Guide local intelligent qui aide à décider quoi faire maintenant à Montréal selon le mood, l'heure, le budget, la localisation et la station STM. L'utilisateur choisit une ambiance — Chill, Romantique, Étudier, Aventure, Budget, Social ou Solo — et reçoit cafés, restos, bars, activités, parcs, rooftops et spots cachés ouverts autour de lui. Deux différenciateurs : STM Pulse, une carte du métro de Montréal qui transforme chaque station en interface de découverte (événements, spots, temps de marche, budget, ambiance autour de l'arrêt), et Vibe AI, un assistant conversationnel qui change une envie vague (« quoi faire ce soir en 2h ? », « date pas cher ») en plan concret. Une couche communauté légère (mini-reviews, votes de vibe, nouveaux spots proposés avec badge Découvreur). Prototype interactif couvrant accueil mood-first, Vibe AI, STM Pulse, Explorer, fiches lieux enrichies, communauté et version bureau — mobile-first, mais navigable sur web et bureau.
DPM Elevate
Agenda, tâches, habitudes & focus · App web
Application web personnelle de planification — agenda, tâches, habitudes, objectifs et focus — que je conçois et développe en solo, aujourd'hui déployée. Née d'une maquette détaillée d'une vingtaine d'écrans, elle est devenue un vrai produit Next.js : synchronisation réelle des calendriers Google et Microsoft, authentification multi-fournisseurs (NextAuth v5 — Google, Microsoft, Apple, GitHub, OIDC) et une attention sérieuse à la sécurité et à la vie privée — jetons OAuth chiffrés au repos (AES-256-GCM), row-level security en défense en profondeur, limitation de débit — avec conformité Loi 25 : suppression de compte, export des données et journal d'audit en libre-service. Bilingue FR/EN, thème clair/sombre, sur tRPC et Prisma/PostgreSQL.
Wise & Wealthy
Coach financier IA · Prototype mobile
Concept et prototype interactif de Wise & Wealthy, un coach financier personnel, assisté par l'IA, qui rend l'éducation financière plus accessible aux 18–35 ans peu à l'aise avec la finance. Le produit est pensé à partir d'un modèle d'affaires complet (12 pages : étude de marché, Business Model Canvas, analyse concurrentielle YNAB/Rocket Money/Wealthsimple, MVP, indicateurs) et d'un PRD de découverte, et se positionne à l'opposé des apps de trading : éducation, vulgarisation et accompagnement plutôt que spéculation. La maquette mobile couvre une vingtaine d'écrans et d'états — onboarding guidé, tableau de bord (revenus, dépenses, épargne, « série de clarté », action du jour), assistant conversationnel « Wiz », budget et budget setup, objectifs d'épargne, mini-leçons + flashcards + exercices, actualité financière vulgarisée, notifications, profil, confidentialité et paywall freemium. Identité rassurante et non intimidante (mascotte Wiz, verts apaisants, Bricolage Grotesque + Plus Jakarta Sans), bilingue FR/EN, thème clair/sombre. Plus qu'une seule app, c'est une petite suite : l'app adulte ; « Mes finances », surface de suivi avancée (Transactions, Prévu vs réel, Cashflow, Abonnements, Dettes, import banque/CSV) qui incarne le palier premium ; « Wise & Wealthy Kids », déclinaison ludique pour enfants (tirelire, pièces, étoiles, jalons) ; « Espace Famille », espace parents avec code PIN à 4 chiffres et profils enfants ; et Wiz, la mascotte réutilisable (6 humeurs) qui unifie le tout. Positionnement assumé : éducation financière, pas de conseil réglementé — orienté confiance et protection des données (Loi 25).
Kim Dubois Photographe
Site vitrine photographe animalière · Prototype
Reprise et refonte du site d'une photographe animalière primée à l'international (TIPPA 2024-2025, Bronze), dont le site Wix était resté inachevé. Démarche complète orientée premier client payant : formulaire de découverte Word de 60 questions, deck PowerPoint de 9 diapos pour cadrer l'appel, brief Claude Design structuré, puis maquette générée et implémentée. Au fil des itérations, le prototype est passé d'une page d'accueil unique à une maquette complète et interactive : multi-pages (accueil, galerie portfolio, page distinctions), une quinzaine de sections modulaires (héros, compteurs, parcours, forfaits, témoignages, boutique, espace client, infolettre, FAQ, pont de l'arc-en-ciel…), de vraies photos primées organisées par catégorie, un carrousel intelligent avec lightbox et un fil « cousu » animé au scroll. Le tout bilingue FR/EN, clair/sombre, sélecteur d'audience (particuliers/commercial), identité éditoriale dorée (Cormorant Garamond + Mulish), protection légère des images et un assistant-concierge menant à un contact réel. Un mode administrateur intégré — « liberté encadrée » — permet d'éditer contenu et apparence, masquer/réordonner les sections et gérer des codes promo, pour absorber les retours de la cliente sans jamais casser la maquette.

BOA — Chef privé
Site de réservation chef privé & service à table · Prototype bilingue
Conception et prototype interactif de BOA, la marque de chef privé et service à table à Montréal du chef Max. Repris d'un PRD rempli par le client (document Word) et d'une analyse concurrentielle (Take a Chef, The Culinistas, Cozymeal, Tock), le site vend une expérience — « When the love for food meets unforgettable memories » — plutôt qu'un simple traiteur : soupers privés, mariages, anniversaires et corporatif, préparés et servis à domicile. La maquette couvre tout le parcours : accueil éditorial (hero, piliers « l'art de recevoir », trust strip, « ce qui est inclus »), un concierge culinaire qui recommande un menu en 30 secondes (occasion, convives, budget, restrictions), les menus (fixe / événement / appel requis), les expériences, les lieux, une galerie photos, la présentation du chef et le contact. Le cœur est un parcours de réservation multi-étapes : menu → date (délai minimum 2 semaines, frais de dernière minute signalés, waitlist « me prévenir ») → format (service à table / table du chef / événement), convives (plafond 20, +20 → appel obligatoire), adresse (Île de Montréal · frais selon distance) et allergies → résumé (dépôt 25 % non remboursable, solde selon entente, taxes non appliquées) → paiement mocké (carte / débit / Interac) → confirmation (dépôt reçu, rappel 48 h, notification à Max). S'y ajoutent un chatbot « Concierge BOA » à réponses guidées, un sélecteur FR/EN, un thème clair/sombre bourgogne & crème (Newsreader + Hanken Grotesk + Allura), des animations premium respectant prefers-reduced-motion, et un mode administrateur avec emplacements photo en drag & drop pour brancher les vraies images. Tout est mocké proprement — aucun paiement réel, aucune IA branchée — en attendant de trancher prix, calendrier (Calendly), processeur de paiement (Stripe / Square) et textes légaux (Loi 25) avec le client.

CRCC — Refonte
Refonte de site OSBL · Maquette bilingue
Maquette de refonte complète pour le Club du Rex de Cornouailles du Canada (OSBL bilingue d'éleveurs). Site statique multi-pages organisé autour de trois parcours — adopter un chaton, devenir éleveur membre, soutenir le club. 10 pages (Accueil, La race, Annuaire des éleveurs, Codes & éthique, Règlements, Publications, Adhésion, Administrateurs & comités, Contact) avec explorateur d'anatomie interactif, carte de répartition filtrable et identité Rouge & Blanc dérivée du logo officiel. Bilingue FR/EN à bascule instantanée, thème clair/sombre, mobile-first (375px → bureau), accessibilité WCAG 2.2 AA, sans backend. Données réelles intégrées (11 chatteries, badges Anima-Québec, 7 associations félines, ressources officielles), sans inventer ni surpromettre.
FinanceJ
App desktop de finances personnelles
Application desktop Java de gestion de finances personnelles (revenus, dépenses, budgets). Équipe de 6 développeurs, cours LOG240 (Tests et Maintenance). 5 250+ LOC, 133 tests (100% couverture JaCoCo), 85 commits. Architecture MVC avec Singleton, DAO et AbstractTableModel. Contributeur le plus actif (28 commits).

Tatzy
Réservation de taxi en ligne · Prototype
Site de réservation de taxi cofondé avec Aimen Djebbar. Monorepo web + API : page d'accueil, tunnel de réservation et fondations d'une API, en Next.js 14 (App Router) avec Prisma/PostgreSQL, bilingue FR/EN. Le prototype est déployé sur Vercel. Encore au stade prototype — pas de trafic client réel pour l'instant.
LOG430 — Architecture logicielle
Du monolithe aux microservices événementiels
Série de laboratoires du cours d'architecture logicielle à l'ÉTS : une même application de gestion de magasin est réarchitecturée d'un labo à l'autre. Le parcours va d'un monolithe conteneurisé (Docker, CI/CD) vers du client-serveur avec DAO, du CQRS avec persistance polyglotte (PostgreSQL + Redis), des API REST puis GraphQL, du cache et de la répartition de charge (Nginx, tests de charge Locust), de l'observabilité (Prometheus), puis une décomposition en microservices derrière une passerelle d'API, un microservice de paiement isolé, une saga orchestrée avec traçage distribué (Jaeger), de l'architecture événementielle avec Kafka (event sourcing, saga chorégraphiée, patron Outbox) et enfin des bases de données distribuées (YugabyteDB / CockroachDB). Chaque labo isole un patron sur la même application jouet. Le projet de session, CanTelcoX, est l'endroit où ces patrons sont assemblés dans un seul système sur un domaine métier réel — Phase 1 en microservices synchrones (5 services DDD derrière une passerelle Kong en haute disponibilité, cache Redis, observabilité Prometheus/Grafana), Phase 2 en architecture événementielle : voir la fiche dédiée.
LOG210 — Analyse et conception
Modélisation UML & conception OO · Équipe
Laboratoire d'analyse et de conception logicielle à l'ÉTS, en équipe de 6. À partir d'un squelette « jeu de dés », l'équipe modélise et implémente une application de gestion de cours et de devoirs : modèle du domaine UML, cas d'utilisation, conception en couches avec le patron GRASP Contrôleur, passerelle/adaptateur vers un backend, et une suite de tests Jest avec couverture. Le tout appuyé par des rapports d'itération.

Tron Light Cycles — GTI350
Jeu 2 joueurs · Interfaces & manipulation directe · Équipe
Jeu « Tron » 2 joueurs codé en JavaScript vanilla (sans librairie) pour le cours d'interfaces utilisateurs à l'ÉTS, en équipe de 2. Rendu sur Canvas HTML5, deux modes d'entrée (clavier avec gestion QWERTY/AZERTY et gestes de souris pour diriger la moto directement sur le canvas), détection de collisions (traînées + murs), score multi-manches, boutons virtuels pause/reprise/redémarrage et accélération progressive. Architecture modulaire (9 modules à responsabilité unique) pensée pour le travail en parallèle sur Git.