Un système de caisse complet conçu de zéro — Raspberry Pi 4, scan de codes-barres, paiement QR code sur téléphone, impression de ticket automatique et rapports journaliers pour l'admin.
Née d'une expérience en job étudiant, KACHING reproduit fidèlement le fonctionnement d'une caisse de supermarché — Carrefour, Zeeman, Okay.
L'idée est simple : remplacer les caisses enregistreuses classiques par un système complet, connecté et abordable, fonctionnant sur un Raspberry Pi 4.
Chaque employé se connecte avec son propre identifiant, scanne les articles, puis le client paie en scannant un QR code depuis son téléphone — sans contact, sans friction.
L'imprimante sort le ticket automatiquement. L'administrateur consulte les rapports journaliers en temps réel, avec chaque vente horodatée et attribuée à l'employé concerné.
▶ Regarder la simulation en vidéoDe l'accueil de l'employé à l'export du rapport, KACHING couvre l'intégralité du cycle de vente.
Chaque employé s'identifie avec son propre numéro, vérifié en temps réel via AlwaysData. Aucun accès sans authentification.
Le scanner Eyoyo lit instantanément les codes. Le produit est reconnu dans SQLite et s'affiche avec nom, quantité et prix.
Le client scanne depuis son téléphone et valide. La confirmation arrive en 0,5 seconde côté caisse — sans contact.
Dès le paiement validé, la HP LaserJet imprime le ticket horodaté avec tous les articles, quantités et montant total.
Si le client a deux comptes, chaque panier est payé séparément avec son propre QR code — deux tickets distincts.
Un bouton dédié gère les retraits en liquide. Ils apparaissent en rouge dans le rapport admin, exclus du total de revenus.
Tout se contrôle depuis un écran tactile — sans clavier physique ni souris.
La caisse est bloquée de 18h à 6h automatiquement. Seul l'admin conserve l'accès pour les rapports.
Rapport journalier complet : heure, employé, produit, montant. Solde net affiché en bas, export en un clic.
Six étapes claires, une expérience fluide pour l'employé comme pour le client.
Il entre son ID. AlwaysData vérifie l'identifiant et autorise l'accès. Son nom s'affiche en haut de l'interface. Hors plage horaire (18h–6h), l'accès est bloqué automatiquement.
Le scanner Eyoyo envoie le code au Raspberry Pi. SQLite retrouve le produit instantanément. Le tableau se met à jour avec nom, quantité et prix. Le total recalcule à chaque ajout.
Si le client a un sous-compte, une fenêtre propose de choisir le panier principal ou le compte épargne. Chaque panier est traité séparément.
Le panier est envoyé vers PythonAnywhere. Un QR code s'affiche. Le client le scanne et appuie sur "Valider". La confirmation arrive en 0,5 seconde côté caisse.
Dès que "Paiement accepté" est pressé, le ticket horodaté est généré et envoyé directement à l'imprimante HP LaserJet connectée au Pi.
En fin de journée, toutes les ventes sont listées chronologiquement avec l'employé associé. Les retraits en rouge, le total net en bas, export en un clic.
Un ensemble de technologies open-source combinées pour créer un système de caisse complet et fiable.
Quatre composants soigneusement choisis pour un budget total de 200 €.
Le cerveau du projet. Lance l'application, gère la communication avec Flask, reçoit les données du scanner et pilote l'imprimante.
117 €Affiche l'interface de caisse et permet aux employés de travailler confortablement sur leur espace de travail.
PersonnelLit les codes-barres en une fraction de seconde. Transmet le code au Raspberry Pi qui identifie l'article dans SQLite.
22,99 €Connectée directement au Pi, elle imprime les tickets automatiquement dès que le paiement est validé.
ÉcoleChaque problème a été une occasion d'apprendre et de s'améliorer.
Certaines bibliothèques ne se comportaient pas de la même façon. Chaque différence a été identifiée et corrigée pour garantir un fonctionnement identique sur les deux systèmes.
Le site Flask était limité au réseau local. Migration vers PythonAnywhere pour le rendre accessible depuis n'importe quel réseau, y compris 4G/5G.
L'application revenait à la caisse sans gérer le second panier. Réécriture de la logique de basculement pour traiter chaque compte séquentiellement.
L'imprimante thermique n'imprimait que du charabia malgré les drivers. Remplacement par une HP LaserJet classique, pleinement compatible.
Instancier plusieurs interfaces simultanément provoquait des crashs. Solution : créer toutes les pages au démarrage et n'en afficher qu'une à la fois.
"C'est un projet qui m'a demandé beaucoup de travail, de recherches et de patience, mais dont je suis vraiment fière du résultat. J'ai voulu créer quelque chose de concret, inspiré de ma propre expérience — une vraie caisse, pas juste un exercice scolaire."