Projects
Shipped systems, products in development and prototypes. Filter by state.
The Mad Space
Bilingual marketplace · print-on-demand creations
The Mad Space lets creators submit their artwork, turn it into apparel and earn a commission on every sale. As CTO, I own the technical direction, architecture and development of the platform — from the creator journey to payment and automated order fulfilment.
Cadence
Sports coaching mobile app
Coach ↔ athlete mobile app co-founded with Alexandre (design). 169+ issues structured across 13 sprints, competitive audit of 8+ apps, Loi 25 + PIPEDA + GDPR-ready compliance. Beachhead: francophone gym coaches in Quebec.
CanTelcoX
Event-driven telecom BSS · saga, Outbox, DLQ
The business support system (BSS) of a mobile carrier: number portability, line activation, billing, MFA and fraud screening. The system moves from synchronous microservices to an event-driven architecture — 6 hexagonal services, no direct service-to-service HTTP in the business flow, a choreographed saga over RabbitMQ with compensation, a transactional Outbox, a dead-letter queue and distributed tracing. Two real external integrations sit behind an anti-corruption layer: free5GC (5G core, MSISDN provisioning through the UDM APIs) and a Java number-portability hub, acting as both recipient and donor, over signature-verified TMF Event v4 webhooks. What I take from it isn't the pattern checklist but how the optimization was run: five stages, each measured and recorded, including the one that produced nothing. Stage 2 is the instructive one — speeding up publication improved acknowledgement without improving convergence, because the bottleneck had moved to svc-subscription; measurement located it (3,960 messages queued on a single consumer) and the later stages addressed it. Final result: acknowledgement P95 divided by 2.4, saga convergence up from 47% to 100%, zero errors across 22,031 requests.

Vibe Montréal
Smart local discovery · Mobile + web prototype
Smart local guide that helps you decide what to do right now in Montréal based on mood, time of day, budget, location and STM metro station. Users pick a vibe — Chill, Romantic, Study, Adventure, Budget, Social or Solo — and get cafés, restaurants, bars, activities, parks, rooftops and hidden spots open around them. Two differentiators: STM Pulse, a Montréal metro map that turns each station into a discovery interface (events, spots, walking time, budget, vibe around the stop), and Vibe AI, a conversational assistant that turns a vague urge ("what to do tonight in 2h?", "cheap date") into a concrete plan. A light community layer (mini-reviews, vibe votes, new spots submitted with a Discoverer badge). A interactive prototype spanning a mood-first home, Vibe AI, STM Pulse, Explore, enriched place pages, community and a desktop version — mobile-first, yet navigable on web and desktop.
DPM Elevate
Calendar, tasks, habits & focus · Web app
A personal planning web app — calendar, tasks, habits, goals and focus — that I design and build solo, and that's now deployed. It grew from a detailed ~20-screen mockup into a real Next.js product: real Google and Microsoft calendar sync, multi-provider authentication (NextAuth v5 — Google, Microsoft, Apple, GitHub, OIDC) and serious attention to security and privacy — OAuth tokens encrypted at rest (AES-256-GCM), defense-in-depth row-level security, rate limiting — with Loi 25 compliance: self-serve account deletion, data export and an audit log. Bilingual FR/EN, light/dark theme, on tRPC and Prisma/PostgreSQL.
Wise & Wealthy
AI financial coach · Mobile prototype
Concept and interactive prototype of Wise & Wealthy, an AI-assisted personal financial coach that makes financial literacy more approachable for 18–35 year-olds who aren't comfortable with finance. The product is grounded in a full business model (12 pages: market study, Business Model Canvas, competitive analysis of YNAB/Rocket Money/Wealthsimple, MVP, KPIs) and a discovery PRD, and is positioned as the opposite of trading apps: education, plain-language guidance and coaching rather than speculation. The mobile mockup spans around twenty screens and states — guided onboarding, dashboard (income, expenses, savings, a "clarity streak", daily action), conversational "Wiz" assistant, budget and budget setup, savings goals, mini-lessons + flashcards + exercises, simplified financial news, notifications, profile, privacy and a freemium paywall. A reassuring, non-intimidating identity (Wiz mascot, calming greens, Bricolage Grotesque + Plus Jakarta Sans), bilingual FR/EN, light/dark theme. More than a single app, it's a small suite: the adult app; "Mes finances", an advanced tracking surface (Transactions, Planned vs actual, Cashflow, Subscriptions, Debts, bank/CSV import) embodying the premium tier; "Wise & Wealthy Kids", a playful variant for children (piggy bank, coins, stars, milestones); "Family Space", a parent area with a 4-digit PIN and child profiles; and Wiz, the reusable mascot (6 moods) that unifies it all. A deliberate stance: financial education, not regulated advice — built around trust and data protection (Loi 25).
Kim Dubois Photographe
Pet photographer portfolio site · Prototype
Takeover and redesign of the site of an internationally awarded pet photographer (TIPPA 2024-2025, Bronze) whose Wix site had been left unfinished. A complete first-paying-client process: a 60-question Word discovery form, a 9-slide PowerPoint deck to frame the call, a structured Claude Design brief, then a generated mockup implemented in code. Across iterations the prototype grew from a single home page into a full, interactive mockup: multi-page (home, portfolio gallery, distinctions page), around fifteen modular sections (hero, counters, process, packages, testimonials, shop, client area, newsletter, FAQ, rainbow bridge…), real awarded photos organised by category, a smart carousel with lightbox and a signature thread "sewn" along the scroll. All bilingual FR/EN, light/dark, with an audience switcher (consumer/commercial), an editorial gold identity (Cormorant Garamond + Mulish), light image protection and a concierge assistant leading to real contact. A built-in admin mode — "bounded freedom" — lets you edit content and appearance, hide/reorder sections and manage promo codes, to absorb the client's feedback without ever breaking the mockup.

BOA — Chef privé
Private chef & table-service booking site · Bilingual prototype
Design and interactive prototype of BOA, chef Max's private-chef and table-service brand in Montreal. Built from a client-filled PRD (Word document) and a competitive analysis (Take a Chef, The Culinistas, Cozymeal, Tock), the site sells an experience — "When the love for food meets unforgettable memories" — rather than plain catering: private dinners, weddings, birthdays and corporate events, cooked and served at your home. The mockup covers the whole journey: an editorial home (hero, "the art of hosting" pillars, trust strip, "what's included"), a culinary concierge that recommends a menu in 30 seconds (occasion, guests, budget, restrictions), the menus (fixed / event / call required), experiences, venues, a photo gallery, the chef's story and contact. At its core is a multi-step booking flow: menu → date (2-week minimum lead time, last-minute fees flagged, "notify me" waitlist) → format (table service / chef's table / event), guests (capped at 20, 20+ → mandatory call), address (Island of Montreal · distance-based fee) and allergies → summary (25% non-refundable deposit, balance per agreement, taxes not applied) → mocked payment (card / debit / Interac) → confirmation (deposit received, 48h reminder, notification to Max). It also ships a guided "BOA Concierge" chatbot, an FR/EN switcher, a burgundy & cream light/dark theme (Newsreader + Hanken Grotesk + Allura), premium animations honouring prefers-reduced-motion, and an admin mode with drag-and-drop photo slots to wire in real images. Everything is cleanly mocked — no real payment, no live AI — pending decisions on pricing, calendar (Calendly), payment processor (Stripe / Square) and legal copy (Loi 25) with the client.

CRCC — Refonte
Nonprofit website redesign · Bilingual mockup
Complete redesign mockup for the Cornwall Rex Club of Canada (bilingual nonprofit breeder community). Static multi-page site organised around three journeys — adopt a kitten, become a member breeder, support the club. 10 pages (Home, The Breed, Breeder Directory, Codes & Ethics, By-laws, Publications, Membership, Board & Committees, Contact) with an interactive anatomy explorer, a filterable distribution map and a Red & White identity derived from the official logo. Bilingual FR/EN with instant toggle, light/dark theme, mobile-first (375px → desktop), WCAG 2.2 AA accessibility, no backend. Real data integrated (11 catteries, Anima-Québec badges, 7 feline associations, official resources), without inventing or overpromising.
FinanceJ
Personal finance desktop app
Java desktop personal finance app (income, expenses, budgets). Team of 6 developers, LOG240 course (Testing & Maintenance). 5,250+ LOC, 133 tests (100% JaCoCo coverage), 85 commits. MVC architecture with Singleton, DAO and AbstractTableModel patterns. Most active contributor (28 commits).

Tatzy
Online taxi booking · Prototype
Taxi-booking site co-founded with Aimen Djebbar. Web + API monorepo: landing page, booking flow and API foundations, in Next.js 14 (App Router) with Prisma/PostgreSQL, bilingual FR/EN. The prototype is deployed on Vercel. Still at prototype stage — no real customer traffic yet.
LOG430 — Architecture logicielle
From monolith to event-driven microservices
Lab series from ÉTS's software-architecture course: a single store-management app is re-architected from one lab to the next. The path runs from a containerized monolith (Docker, CI/CD) to client-server with DAO, CQRS with polyglot persistence (PostgreSQL + Redis), REST then GraphQL APIs, caching and load balancing (Nginx, Locust load tests), observability (Prometheus), then a break-up into microservices behind an API gateway, an isolated payment microservice, an orchestrated saga with distributed tracing (Jaeger), event-driven architecture with Kafka (event sourcing, choreographed saga, Outbox pattern) and finally distributed databases (YugabyteDB / CockroachDB). Each lab isolates one pattern on the same toy application. The term project, CanTelcoX, is where those patterns get assembled into a single system on a real business domain — Phase 1 in synchronous microservices (5 DDD services behind a high-availability Kong gateway, Redis caching, Prometheus/Grafana observability), Phase 2 event-driven: see its dedicated entry.
LOG210 — Analyse et conception
UML modeling & OO design · Team
Analysis-and-design lab at ÉTS, in a team of 6. Starting from a "dice game" skeleton, the team models and builds a course-and-assignment management app: UML domain model, use cases, layered design with the GRASP Controller pattern, a gateway/adapter to a backend, and a Jest test suite with coverage. Backed by iteration reports.

Tron Light Cycles — GTI350
2-player game · UI & direct manipulation · Team
Two-player "Tron" game written in vanilla JavaScript (no libraries) for ÉTS's user-interfaces course, in a team of 2. Rendered on an HTML5 Canvas, two input modes (keyboard with QWERTY/AZERTY handling, and mouse gestures to steer the cycle directly on the canvas), collision detection (trails + walls), multi-round scoring, virtual pause/resume/restart buttons and progressive acceleration. Modular architecture (9 single-responsibility modules) designed for parallel work on Git.