Aller au contenu

Web app

AntiGalère — plan de fin de mois fondé sur des prix relevés

Application web mobile-first qui découpe le reste du mois en enveloppes et sélectionne des courses à partir de relevés de prix réels (Open Prices), avec recalcul et IA frugale.

Nature
Web app
Stack
Next.js 15React 19NestJSGraphQLPrismaPostgreSQLClaude (Anthropic)Turborepo

Entre le 20 du mois et la paie, la question n'est pas « combien j'ai » mais « comment répartir ce qu'il reste ». AntiGalère transforme un budget restant en plan concret, et le recalcule quand la semaine ne se passe pas comme prévu.

Ce que fait l'app

  • Génération d'un plan jusqu'à la prochaine paie : budget par jour, enveloppes courses, sortie et imprévu, selon des objectifs (économique, étudiant, famille, végétarien…).
  • Recalcul après une dépense imprévue, un écart au restaurant ou une paie retardée.
  • Recherche de prix autour d'une ville (géocodage IGN), à partir de relevés Open Prices : produit, quantité, magasin, date et lien vers la source restent affichés.
  • Quota freemium (un plan par semaine en gratuit), paiement Stripe, backoffice d'administration et blog.

Stack et architecture

  • Monorepo pnpm et Turborepo : Next.js 15 (App Router), React 19, TypeScript strict, Tailwind et shadcn/ui.
  • API NestJS en GraphQL code-first, architecture en couches (domaine, application, infrastructure, présentation), Prisma sur PostgreSQL, Redis et BullMQ pour les jobs.
  • Authentification par cookies HttpOnly, rotation des refresh tokens, argon2id, verrouillage progressif ; limites de profondeur et de complexité GraphQL.
  • Le moteur budgétaire est un paquet TypeScript pur, testé avec Vitest ; des tests Playwright couvrent l'écran des prix.

Ce qui a été difficile

Les prix. La première version s'appuyait sur des scrapers d'enseignes et des données de secours : le rendu était convaincant, mais rien ne prouvait qu'un prix existe dans un magasin donné. Lors d'un audit de reprise, ces sources ont été retirées, ainsi que les menus au coût codé en dur et le faux adaptateur IA. Le moteur n'utilise plus que des relevés Open Prices filtrés : rayon de 10 km, moins de 30 jours, en euros, avec preuve et conditionnement exploitable. Aucune médiane ne mélange des conditionnements différents, et une absence de résultat reste visible comme telle. Le principe est que l'IA ne fait que reformuler : le calcul est déterministe côté serveur et mis en cache par hash d'entrée.

État du projet

En développement, pas encore en production : domaine, hébergement, sauvegardes et parcours authentifiés complets restent à vérifier. Open Prices est contributif et ne garantit ni le stock ni la couverture des enseignes ; les menus sont suspendus tant que les recettes ne sont pas reliées à une source vérifiable. Pas d'application iOS : c'est une application web.