Comparez en un coup d'œil les prix annoncés sur quatre grands marchés de Brazzaville, et sachez tout de suite si traverser la ville vous fait vraiment économiser.
Marché Total · Poto-Poto · Moungali · Ouenzé
PWA installable · Fonctionne hors ligne · < 300 Ko au premier écran · Aucun compte · Aucune donnée envoyée
Riz, foufou, mpiodi, kwanga, makala… Le même sac de riz peut coûter 3 000 F de moins à l'autre bout de la ville. Mais l'aller-retour en taxi coûte lui aussi 2 000 à 3 000 F. Alors, est-ce que ça vaut le coup ?
Zando Prix fait le calcul à votre place. Ce n'est pas une simple liste de prix : l'application retire le prix du taxi depuis votre marché et vous donne une réponse claire, « ça vaut le déplacement » ou « restez où vous êtes ».
- 12 produits du quotidien comparés sur 4 marchés, avec le mot qu'emploie vraiment la vendeuse.
- Un verdict honnête : l'écart de prix est comparé au vrai coût de l'aller-retour.
- Tout le panier d'un coup : vos courses de la semaine, chiffrées marché par marché.
- Des prix datés : chaque relevé affiche son âge. Un prix trop vieux est mis de côté, jamais affiché comme s'il était neuf.
- Pensé pour Brazzaville : léger, installable sur l'écran d'accueil, utilisable sans réseau.
- Respect de la vie privée : pas de compte, pas de pistage, votre position ne quitte jamais le téléphone.
Vercel lance npm run build et sert public/, son dossier par défaut. vercel.json renvoie
index.html pour toute adresse sans extension (/carte, /produit/riz-sac…) : c'est l'application
qui affiche l'écran demandé. Les anciennes adresses à dièse (/#/carte) redirigent vers les nouvelles.
Tant que meta.dates_glissantes vaut true dans data/prix.json (données de démonstration),
l'application décale les dates à l'affichage : le relevé le plus récent date toujours d'hier,
et les prix ne périment jamais, même sans nouveau déploiement.
Le titre dit tout de suite combien de produits valent le déplacement depuis votre marché. Le tableau compare les 12 produits sur les 4 marchés. Le moins cher est surligné en vert et chaque prix indique son âge (« 4 j »). La recherche reconnaît aussi les noms locaux : loso, makala, mpondu…
Choisissez un produit : chaque marché affiche son prix directement sur la carte. L'épingle verte marque le moins cher relevé. À côté, les fiches indiquent la distance et le prix de l'aller-retour en taxi.
Ajoutez vos produits et leurs quantités. Zando Prix additionne tout, classe les marchés du moins cher au plus cher, puis retire le prix du taxi pour donner son verdict. Ici : le panier coûte 350 F de moins à Ouenzé, mais le taxi coûte 3 000 F. Restez au Marché Total.
Pour les mêmes prix, la réponse n'est pas la même selon votre quartier. Choisissez votre marché à la main, ou laissez l'application trouver le plus proche. La position n'est demandée que si vous appuyez sur le bouton, jamais au chargement.
Démo client : rien à faire. Avec les dates glissantes, les relevés restent au vert. Quand les vrais relevés terrain sont saisis, passer
dates_glissantesàfalsedansoutils/generer-donnees.js: les prix vieillissent alors normalement (orange à 7 jours, périmés après 14).
⚠ Les 48 prix du fichier de données sont provisoires : plausibles mais inventés, en attente des relevés terrain. Voir
../DEMANDES-AU-PM.md.
- Fraîcheur : un prix de moins de 7 jours est vert, de 7 à 14 jours il est orange « à vérifier », au-delà il est périmé et retiré des comparaisons.
- Vaut le déplacement : l'écart de prix doit dépasser le prix de l'aller-retour en taxi depuis votre point de départ (2 000 F par défaut). Il faut au moins 3 marchés sur 4 avec un prix récent.
- Badge « le moins cher relevé » : il faut au moins 2 marchés récents et un prix strictement plus bas que les autres.
- Panier : seuls les marchés qui ont un prix utilisable pour tous les produits du panier sont classés.
Toutes ces règles sont dans js/regles.js et js/panier.js, et couvertes par les tests.
Prérequis : Node.js 22+.
npm install
npm run build # données, validation, tests, CSS, publication dans public/
npm start # http://localhost:8000C'est un site statique : aucun serveur applicatif, aucune base de données.
Sur Vercel, npm run build produit le dossier public/, qui est servi tel quel.
Tout se passe dans outils/generer-donnees.js :
- Saisir les prix relevés dans
PRODUITSet les prix du taxi dansTRAJETS. - Mettre à jour
DATES_RELEVESavec les dates du passage sur le terrain. Ces dates sont fixes : un nouveau déploiement ne les rajeunit pas. - Lancer
npm run build. Le validateur bloque le déploiement si les données contiennent une erreur.
Pour voir l'application à une autre date sans toucher aux données : http://localhost:8000/?date=+9.
Pas de compte, pas de pistage. La position de l'appareil sert à un calcul local et n'est jamais envoyée. Les prix proposés restent sur le téléphone.
- Les prix sont provisoires, en attente des relevés terrain.
- La position du « Marché de Ouenzé » (Marché Soukissa sur OpenStreetMap) reste à confirmer.
- La carte utilise les serveurs OpenStreetMap, ce qui convient à un prototype mais pas à la production. Elle n'est pas disponible hors ligne.
Photos CC0 / domaine public · Police Plus Jakarta Sans (OFL) · Leaflet (BSD) · Tailwind CSS (MIT) · Icônes Lucide (ISC) · Fonds de carte © contributeurs OpenStreetMap (ODbL).




