Sommaire
L'essentiel
- La caisse fonctionne entièrement sans Internet, sur une base SQLite locale transactionnelle.
- Paiements répartis entre espèces, Orange Money, Wave, Moov Money et MTN MoMo, en FCFA entiers.
- Synchronisation automatique avec le serveur, sans doublon, sans clé à saisir.
- Impression thermique ESC/POS directe avec repli sur le pilote Windows, tickets cuisine par poste.
- Mises à jour automatiques qui n'interrompent jamais une session en cours.
Tuego est un logiciel de caisse pour restaurants et commerces, conçu d'abord pour la Côte d'Ivoire : prix entiers en FCFA, paiements répartis entre espèces et mobile money, tables et serveurs, plats composés, tickets cuisine. L'application Windows fonctionne entièrement sans Internet, se synchronise toute seule avec le serveur et se met à jour automatiquement.
Une caisse qui ne s'arrête jamais
Dans un restaurant, la caisse est l'outil le plus sollicité de la journée. Elle doit répondre vite, encaisser sans erreur et continuer de tourner quand Internet coupe, ce qui arrive. Les besoins locaux comptent aussi : en Côte d'Ivoire, un même ticket se règle souvent en partie en espèces et en partie par Orange Money ou Wave, et les montants n'ont pas de centimes.
Tuego répond à ces contraintes. Il sert aux restaurants (tables, serveurs, cuisine) comme aux commerces de comptoir, par exemple une quincaillerie ou une boutique, grâce à un mode commerce qui retire tables et « sur place / à emporter ». La caisse a un administrateur et des caissiers, chacun avec un code à 4 chiffres pour se connecter vite, sans clavier.
Le parcours d'une commande
- Ouvrir une table : choisir son numéro et son serveur, ou ouvrir une commande à emporter.
- Prendre la commande : un clic sur un produit simple l'ajoute ; un produit composé ouvre ses choix (taille, viandes, sauces) avec le total mis à jour.
- Envoyer en fabrication : un ticket part pour chaque poste, cuisine ou comptoir, avec les plats pas encore envoyés.
- Encaisser : régler le ticket avec un ou plusieurs moyens de paiement, calculer la monnaie, imprimer le ticket.
- Clôturer la journée : à l'heure de fin de service, la journée se ferme toute seule et les chiffres sont prêts.

Les fonctions principales
Vente et salle
- Tables numérotées automatiquement, renumérotables, désactivables ; chaque table garde son panier, même après un redémarrage.
- Serveurs nommés sur chaque ticket, distincts du caissier qui encaisse.
- Fusion de deux tables et commande à emporter dans un panier séparé.
- Commande à table par QR code : le client consulte la carte sur son téléphone et commande ; le règlement se fait au restaurant.
Catalogue
- Catégories ordonnées, produits avec photo ou icône, prix, TVA et prix libre.
- Groupes d'options réutilisables (viandes, sauces, tailles, couleurs) avec minimum, maximum et suppléments en FCFA.
- Choix répétable (double poulet), groupes facultatifs, compositions identiques regroupées en quantité.
- Affichage en liste ou en cartes, sélection et actions groupées, import et export du catalogue.
Paiements
- Cinq moyens par défaut : espèces, Orange Money, Wave, Moov Money et MTN MoMo, renommables, réordonnables et désactivables.
- Règlement réparti sur plusieurs moyens, « Diviser par 2 / 3 » et bouton « Le reste ».
- Calcul de la monnaie sur les billets réellement reçus.
Suivi
- Tableau de bord du jour : chiffre d'affaires, commandes, ticket moyen, courbe sur 14 jours, meilleures ventes.
- Statistiques par jour ou par période, heure de pointe, comparaison avec la période précédente.
- Tickets du jour filtrables par moyen de paiement et par serveur, journées clôturées consultables, export PDF et CSV.
Les difficultés techniques, et comment elles ont été résolues
Encaisser sans Internet, sans jamais perdre une vente
La caisse travaille sur une base SQLite locale. Les écritures sont transactionnelles, avec journal WAL et synchronisation complète sur le disque, pour qu'une coupure de courant ne laisse pas une vente à moitié enregistrée. Chaque ticket validé garde une copie figée des noms et des prix : modifier ou retirer un produit ensuite ne change pas les anciens tickets. Le panier en cours est conservé pour reprendre après un redémarrage.
Chaque demande d'encaissement porte un identifiant unique. Si l'opération échoue ou est répétée, la même demande peut être rejouée sans créer de doublon.
Une synchronisation qui se rattrape toute seule
Le restaurateur n'a ni adresse de serveur ni clé à saisir : une fois le commerce configuré, le poste s'enregistre tout seul sur le serveur dès qu'Internet est là. Les changements partent d'une file transactionnelle, dans leur ordre. Un envoi ne quitte la file qu'après confirmation de son identifiant et de son empreinte SHA-256. Une réponse perdue se rejoue sans doubler les ventes, et les journées précédentes encore en attente sont envoyées elles aussi.
Des paiements répartis sans centimes
Le franc CFA n'a pas de centimes : tous les montants sont des entiers. Diviser 1 001 FCFA en deux donne 500 et 501, la dernière part absorbant le reste. Chaque moyen de paiement est soit « espèces », qui accepte une monnaie à rendre, soit externe, réglé au montant exact. Exemple : un total de 20 000, payé 10 000 en Orange Money et 10 000 en espèces avec un billet de 15 000 reçu, donne 5 000 de monnaie. La base refuse toute répartition incomplète, excessive, fractionnaire ou utilisant un moyen désactivé. Tuego ne débite aucun compte : le caissier confirme le paiement mobile après l'avoir vérifié.

Les plats composés
Un tacos se commande avec une taille, une ou deux viandes, des garnitures et des sauces, chacune avec ses règles. Les groupes d'options sont réutilisables d'un produit à l'autre, avec un minimum et un maximum par produit. Les règles obligatoires doivent être respectées avant l'ajout au ticket. Le processus principal de l'application recalcule les montants et refuse un choix inconnu, indisponible ou hors limites, même si l'interface a été contournée. Les choix et suppléments sont repris sur le ticket, le PDF, l'impression et l'export CSV.

L'impression thermique
Les imprimantes de caisse sont nombreuses et inégales. Tuego propose deux modes. Le mode Windows passe par le pilote de l'imprimante, comme un document ordinaire. Le mode direct envoie au spouleur Windows un flux ESC/POS brut avec le ticket tramé, pour les imprimantes thermiques 58 et 80 mm, et commande la coupe du papier. Si l'imprimante refuse ce flux, Tuego repasse en mode Windows et le signale. Les modèles de ticket de caisse et de fabrication se composent avec un aperçu 80 mm en direct.

Une journée de service qui ne finit pas à minuit
Un restaurant ferme souvent après minuit. La journée de Tuego change donc à l'heure de fin de service, 4 h du matin par défaut en heure d'Abidjan, et chaque journée repart du ticket 1. La clôture automatique est contrôlée toutes les minutes ; si le PC était éteint, elle est faite au lancement suivant. Les tables encore ouvertes à ce moment sont reportées telles quelles sur la nouvelle journée. La clôture manuelle, elle, demande que toutes les commandes soient terminées.
La commande à table par QR code
Chaque table a son QR code. Le client ouvre la carte du restaurant sur pay.tuego.fr, compose sa commande et la confirme ; elle arrive sur la caisse et part en fabrication. Pour éviter les commandes fantômes, la caisse signale régulièrement qu'elle est active : sans signal depuis dix minutes, ou si la journée est close, la commande en ligne est suspendue avec un message clair. Le nombre de commandes est limité par adresse et par table, et le client règle au restaurant.
Des mises à jour qui ne coupent jamais un service
Le restaurant installe Tuego une seule fois. Les nouvelles versions sont téléchargées et vérifiées (SHA-512) en arrière-plan. Une session ouverte n'est jamais interrompue : l'installation automatique attend un écran de connexion calme depuis deux minutes et une caisse vide, et elle patiente pendant une impression, une clôture ou une synchronisation. Avant chaque évolution de la base, une copie de sauvegarde est faite et la migration s'exécute dans une seule transaction. Une base venant d'une version plus récente est refusée. La publication d'une version se termine par un vrai téléchargement de contrôle, comme le ferait une caisse.
La pile technique
- Caisse : Electron, React, TypeScript, Tailwind CSS et SQLite. L'interface est isolée dans un contexte sandboxé, sans accès réseau ; seul le processus principal touche la base.
- Serveur : PHP et MySQL, avec limites de débit et en-têtes de sécurité.
- Commande à table : page web légère servie par le même serveur.
- Distribution : installeur Windows NSIS en français et canal de mise à jour privé.
- Tests : tests unitaires des calculs et des règles, tests de bout en bout avec Playwright, test d'intégration du serveur sur MariaDB.
Ce que ce projet montre
Tuego a été conçu et développé de bout en bout par Ahmed Sanoko : caisse Electron, serveur PHP et MySQL, commande par QR code, publication et déploiement. Il réunit ce qu'une caisse exige : rapidité au comptoir, exactitude des montants, fonctionnement hors ligne, matériel d'impression varié et mises à jour sans interruption, le tout adapté aux habitudes de paiement locales.
Vous avez un projet de caisse, de logiciel de vente ou d'application qui doit tenir sans Internet ? Me contacter. Vous pouvez aussi voir toutes les captures de Tuego.
Questions fréquentes
La caisse fonctionne-t-elle si Internet est coupé ?
Oui. Tuego encaisse, imprime et clôture les journées sans Internet. Les opérations restent dans la base locale et partent au serveur au retour de la connexion.
Tuego encaisse-t-il directement les paiements mobile money ?
Non. Tuego enregistre la répartition entre espèces et mobile money ; le caissier vérifie le paiement sur son téléphone ou son terminal puis le confirme. Le logiciel ne débite aucun compte.
Quelles imprimantes sont prises en charge ?
Toute imprimante installée avec son pilote Windows, et un mode direct ESC/POS pour les imprimantes thermiques 58 et 80 mm avec coupe du papier. Une page de test permet de vérifier chaque imprimante.