Incacook

L’app où les cuisiniers du Québec vendent leurs plats maison à leurs voisins.

Une place de marché québécoise où des cuisiniers à domicile, titulaires d’un permis, vendent leurs plats aux acheteurs du quartier. Quand Progix a repris la plateforme, elle tournait déjà : une app Flutter, une API Symfony, un back-office React et des versements Stripe Connect, bâtis par une autre équipe. Progix a refait l’application mobile bilingue, puis livré les correctifs des 35 points d’un audit de sécurité en 14 déploiements réversibles, avec au passage des gains de performance et des corrections sur les paiements.

  • IOS ET ANDROID
  • REFONTE
  • BILINGUE FR/EN
  • SÉCURITÉ
  • STRIPE CONNECT

01 — La reprise

Une place de marché en production a changé de mains, paiements compris.

Cuisinous tournait déjà : des cuisiniers vendaient, des acheteurs payaient par carte, les versements partaient par Stripe Connect. Le code venait d’une autre équipe, et le premier travail a été de comprendre ce qu’on reprenait.

  • Trois surfaces héritées

    Une app Flutter pour acheteurs et vendeurs, une API Symfony de 270 points d’entrée actifs et un back-office React. Il fallait comprendre les trois avant d’en toucher une.

  • Un marché réglementé

    Les vendeurs déposent leur permis du MAPAQ, gèrent TPS et TVQ et acceptent une entente vendeur. La politique de confidentialité doit respecter la Loi 25 : aucun raccourci possible sur les données personnelles.

  • Un audit avec cinq points critiques

    L’audit de septembre 2026 a relevé 35 points, dont cinq critiques, touchant les accès d’administration et la gestion des secrets.

02 — La refonte

Une app refaite pour ceux qui cuisinent et ceux qui commandent.

La refonte couvre les deux côtés de la place de marché : l’acheteur qui commande et récupère son plat, le cuisinier qui tient sa propre boutique.

  • Une interface en verre dépoli

    Les parcours acheteur et vendeur ont été redessinés sur douze domaines fonctionnels, sans casser une application déjà en production.

  • Écrite en français d’ici

    Un audit de langue et d’expérience a donné un guide de rédaction propre à l’app : les textes de l’interface suivent le français québécois, pas une traduction.

  • Bilingue de bout en bout

    Le français par défaut, l’anglais en second, sur chaque écran de l’application.

03 — La sécurité

Corriger d’abord le plus risqué, en petits déploiements qu’on peut annuler.

Une mise en production d’un seul bloc, sur une app qui encaisse de l’argent, était trop risquée. Les 35 points ont été classés par gravité et livrés par vagues, chacune réversible.

  • Le confinement d’abord

    La première vague, le 30 septembre 2026, a fermé les accès exposés et mis à jour les dépendances vulnérables avant tout autre correctif.

  • Chaque vague réversible

    Chaque déploiement prend une sauvegarde, note son point de retour, vérifie le serveur et se termine par la suite de tests de sécurité rejouée sur la production.

  • Les versions installées continuent de marcher

    Les correctifs qui demandent une nouvelle app sont partis en mode compatible. Ils deviennent stricts à la prochaine mise à jour obligatoire, pour que personne ne soit bloqué d’ici là.

  • Un test par point d’audit

    La suite de régression est partie d’un test par point relevé et compte aujourd’hui 199 tests. L’intégration continue bloque tout secret ajouté au code.

04 — Le paiement et la charge

L’argent ne bouge qu’une fois, et la plateforme tient la charge.

Le portefeuille du cuisinier n’est crédité que lorsqu’il saisit le code de retrait de l’acheteur : ce code est le secret le plus précieux de l’app. Il fallait le protéger, puis rendre la plateforme plus rapide.

  • Deviner est plafonné

    Cinq essais par code, vérifiés de façon atomique et en temps constant, et vingt essais par heure au plus pour chaque cuisinier.

  • Pas de double versement

    Deux saisies correctes simultanées pouvaient créditer le portefeuille deux fois. Une seule mise à jour conditionnelle en base garantit maintenant un crédit unique.

  • Plus rapide sous charge

    Le dimensionnement des processus PHP a fait passer le temps de réponse médian de 755 à 195 ms avec 200 acheteurs simulés. La liste des boutiques est passée de 95 requêtes à 21.

  • Une exploitation qui survit à un redémarrage

    Les fichiers téléversés vivent désormais sur un volume persistant ; avant, ils disparaissaient à chaque recréation du conteneur. S’y ajoutent une sauvegarde quotidienne vérifiée de la base et une API servie en HTTPS uniquement.

35
points d’audit de sécurité, chacun suivi du rapport jusqu’au correctif
14
déploiements en production, chacun avec sauvegarde, point de retour et tests
199
tests de sécurité automatisés, rejoués sur la production après chaque déploiement
755 → 195 ms
temps de réponse médian, avec 200 acheteurs simulés en test de charge

Travail livré, vérifiable dans le dépôt Cuisinous au commit 8a4a10d (octobre 2026). Le temps de réponse vient d’un test de charge local en mode production. Aucune donnée d’usage n’est publiée : elle appartient au client.

My Fleet

La location de voitures, de la remise des clés au retour, dans un téléphone.

All projects

Can we help?

Let’s talk about your project