À propos de RestoTrax
RestoTrax est un logiciel de gestion de restaurant : prise de commande sur borne, au comptoir et sur mobile, écran de cuisine, écran d'appel en salle, livraison, fidélité, et l'administration qui va avec — carte, fiches techniques, matières, factures, charges.
Licence : AGPL-3.0-or-later
Ce qui le distingue
Il refuse plutôt que d'inventer
C'est le principe qui gouverne tout le reste. Une donnée absente n'est jamais remplacée par une valeur plausible :
- pas de taux de TVA déclaré → aucune vente n'est possible ;
- pas de fiche technique → aucune marge n'est calculée ;
- une matière sans facture → son coût est
null, jamais0; - pas de taux de marge → aucun seuil de rentabilité n'est affiché ;
- la distance d'une adresse inconnue → le verdict est « on ne sait pas », pas « oui ».
Un chiffre faux est plus coûteux qu'un chiffre absent, parce qu'on prend des décisions avec.
Il compte en entiers
Aucun montant n'est un nombre à virgule. Tout est un entier de la plus petite unité — des centimes, des centimes de dinar — accompagné de sa devise et de son exposant décimal. La division n'a lieu qu'au moment de l'afficher, et l'arrondi une seule fois.
Rien qui décide d'un chiffre n'est écrit dans le code
Taux de TVA, rayon de livraison, minimum de commande, règle de fidélité, unité mineure, pas d'arrondi : tout vit dans des fichiers de données déclarés, qui se relisent et se discutent avec un comptable. Un fichier absent arrête le démarrage plutôt que de faire tourner l'application sur des valeurs que personne n'a choisies.
Il est utilisable en France et en Algérie
Devise, unité mineure, pas d'arrondi, langue et écriture sont déclarés. La France arrondit au centime, l'Algérie au dinar ; le français s'écrit de gauche à droite, l'arabe de droite à gauche. Le même code sert les deux — et c'est éprouvé par un jeu de données algérien complet, pas seulement affirmé.
Les droits appartiennent aux personnes, pas aux écrans
Une seule matrice rôle × permission. Les écrans reçoivent un peut() et sont fermés par défaut : un bouton offert « parce que l'écran s'appelle comptoir » finit par être offert à quelqu'un qui ne devait pas l'avoir.
Souverain
La base est un fichier, sur la machine de l'exploitant. Aucune donnée ne part vers un tiers, aucun appel sortant, aucune licence qui expire un matin. Les relevés bancaires et les tickets qui servent à l'analyse ne quittent jamais le poste.
Comment il est fait
RestoTrax n'est pas un bloc : c'est l'assemblage de modules @mostajs qui ne se connaissent pas entre eux.
| Module | Ce qu'il tient |
|---|---|
carte-restaurant | établissement, carte, prix datés par canal, TVA, options, formules, fiches techniques, livraison |
restauration | la commande et son cycle de vie, prix figés, horodatage, annulations |
stocks | matières, mouvements, approvisionnement depuis les factures, coût moyen pondéré |
compta | journal, charges récurrentes, seuil de rentabilité |
fidelite | la carte de fidélité : une clé, un compteur, un avantage qui se consomme |
paiement-tpe | le port des terminaux de paiement et ses dialectes |
ticket-extract | lecture d'un ticket ou d'une facture photographiée, avec contrôle arithmétique |
workflow, numbering, schema-form, app-shell-ui, markdown-html | les fondations |
Chaque module refuse plutôt que d'aller chercher ailleurs ce qu'il ne sait pas : restauration ne tarife pas, carte-restaurant ne connaît pas le coût matière, compta ne sait rien de la carte. C'est l'application, en un seul endroit, qui les branche les uns aux autres.
Cette séparation n'est pas une élégance : elle est ce qui a permis de trouver, en montant l'application, une demi-douzaine de défauts qui vivaient entre les modules et qu'aucun test unitaire ne pouvait voir.
Ce qu'il ne fait pas — et pourquoi
Il n'encaisse pas. Enregistrer un règlement fait entrer dans la loi anti-fraude à la TVA (caisse certifiée). Tant que la question n'est pas instruite avec un comptable, RestoTrax reste un journal de commandes — ce qui le garde hors du champ, et ce qui est déjà utile : il mesure les délais, les canaux, les annulations, la marge.
Il ne parle à aucun terminal de paiement. Le port existe, les six familles de terminaux sont étudiées et leurs capacités déclarées ; les pilotes attendent de savoir quel matériel est en place.
Il ne promet pas le hors-ligne. Le poste mobile est installable, pas résilient : prendre une commande sans réseau demanderait une file, un rejeu et un traitement des conflits. Le prétendre serait le pire des deux mondes — un serveur qui croit sa commande prise alors qu'elle est perdue.
L'auteur
Dr Hamid MADANI — docteur en médecine générale et en ophtalmologie ; ingénieur en informatique et recherche opérationnelle, diplômé du CNAM de Paris ; titulaire d'un master de recherche en bio-informatique de Paris 13. Ces titres ont obtenu leurs équivalences auprès du ministère de l'Enseignement supérieur et de la Recherche scientifique.
C'est de ce croisement que vient la manière dont RestoTrax est écrit. Un praticien sait ce qu'un chiffre engage quand on décide avec ; un ingénieur en recherche opérationnelle sait qu'une donnée absente ne se remplace pas par une moyenne. De là vient le principe qui gouverne tout le logiciel : refuser plutôt qu'inventer. Un seuil de rentabilité calculé sur un taux supposé, une marge déduite d'une fiche technique manquante, une TVA choisie par défaut — chacun de ces raccourcis produit un nombre crédible et faux, et c'est avec ces nombres-là qu'on ferme un restaurant.
RestoTrax est développé en Algérie, à Mostaganem, et repose sur une bibliothèque de composants souverains conçue et maintenue par son auteur. Aucune brique ne dépend d'un service étranger pour fonctionner — c'est aussi ce qui permet à la même application de servir un restaurant à Noailles et un autre à Alger.
Contact : drmdh@msn.com · Mostaganem, Algérie · site de l'auteur : www.amia.fr
Le site de l'auteur est nommé, pas lié. Une instance installée chez un exploitant ne porte aucune adresse sortante : celui qui veut s'y rendre la saisit, et la page ne fait sortir personne.
Le socle technique
node:http, zéro build, zéro dépendance native. Les pages sont du HTML rendu par le serveur ; la seule page qui exécute du script est l'écran d'appel, et uniquement pour le son.
Le journal des transitions est append-only : chaque étape d'une commande est horodatée et écrite sans jamais être effacée. C'est la brique la plus difficile de l'inaltérabilité, et elle est déjà en place — le jour où la certification de caisse sera instruite, elle ne sera pas à écrire.
Ce document et l'aide sont écrits en Markdown et rendus par @mostajs/markdown-html. Le HTML qu'ils contiendraient n'est pas interprété : une page de texte reste une page de texte.