Application bureau WPF/C# permettant aux clients de commander de manière autonome via une interface interactive — architecture MVVM complète avec base de données MySQL
Janvier — Mars 2026
CFA Ingetis (local)
Projet individuel
Application Desktop
GitHub (lien à venir)
Ce projet consiste en la conception et le développement d'une application bureau de type borne de commande pour un restaurant. L'application permet à un client d'effectuer une commande de manière autonome via une interface interactive, sans intervention du personnel.
Elle intègre également un espace d'administration permettant de gérer les produits et les catégories du menu. L'application a été développée en C# avec le framework WPF, en suivant l'architecture MVVM. Elle se connecte à une base de données MySQL via le connecteur MySql.Data.
Objectifs clés : réduire les files d'attente, minimiser les erreurs de commande, offrir une expérience utilisateur moderne et intuitive, et permettre à l'administrateur de gérer le catalogue en autonomie.
Écran d'accueil affiché au démarrage. Un clic démarre la commande.
VeilleWindow
Le client sélectionne « Sur place » ou « À emporter ».
ChoixWindow
Navigation par catégories, ajout des produits au panier. Produits indisponibles bloqués.
MenuWindow
Consultation, modification des quantités, suppression d'articles, validation.
PanierWindow
Choix CB ou espèces, traitement simulé, génération du n° de commande.
PaymentWindow
Accès sécurisé BCrypt pour gérer catégories et produits.
LoginWindow + AdminWindow
Écran d'accueil affiché en attente de client. Un clic sur l'écran démarre le parcours de commande. Interface conçue pour être attrayante et visible à distance sur un écran tactile.
Navigation par catégories (avec tag et couleur personnalisée), affichage des produits avec nom, prix et image. Les produits avec le statut « Indispo » ou une quantité à 0 ne peuvent pas être ajoutés au panier.
Affichage en temps réel de tous les articles ajoutés avec sous-totaux et total général. Le client peut augmenter/diminuer les quantités ou supprimer un article.
Choix du mode de paiement (carte bancaire ou espèces). Traitement simulé avec indicateur de progression (3 secondes), génération d'un numéro de commande unique, puis retour automatique à l'écran de veille.
Accès sécurisé par authentification (nom d'utilisateur + mot de passe haché BCrypt). L'administrateur peut ajouter, modifier, supprimer des catégories et des produits, et gérer les stocks et statuts de disponibilité.
L'application respecte strictement le patron de conception MVVM (Model-View-ViewModel) et s'appuie sur deux interfaces clés de .NET : INotifyPropertyChanged pour notifier automatiquement l'interface des changements de propriétés, et ICommand pour lier les actions utilisateur directement aux ViewModels sans code métier dans les vues.
Classes de données pures, sans logique métier, utilisées par toutes les couches.
Code-behind minimal. Binding XAML pur vers les ViewModels.
Héritent de ViewModelBase. Exposent des propriétés et des ICommand.
Centralise toutes les requêtes SQL (CRUD). Les ViewModels n'accèdent jamais directement à la BDD.
RelayCommand implémente ICommand en une ligne. ViewModelBase gère INotifyPropertyChanged et SetProperty.
La base de données comprend 3 tables principales reliées par des clés étrangères. Les mots de passe administrateurs sont stockés sous forme de hachage BCrypt. La relation entre produits et catégories est assurée par une clé étrangère categorie_id.
Langage principal pour toute la logique applicative
Framework UI Windows, interfaces tactiles .NET 6+
Architecture stricte avec DataBinding et ICommand
Base de données + MySql.Data (ADO.NET)
Serveur local MySQL + phpMyAdmin
Versionnement et sauvegarde du code source
IDE principal C# / WPF
Serveur local Apache + MySQL
Administration base de données
Versionnement et hébergement du code
Documentation officielle C# / WPF / .NET
Analyse des besoins, modélisation (MCD/MLD, diagrammes de cas d'utilisation), développement complet en C#/WPF avec architecture MVVM stricte.
Évolution continue : ajout de fonctionnalités (admin, gestion stocks), corrections de bugs, documentation du code source pour faciliter la maintenance.
Conception de la base de données MySQL (MCD → MLD → SQL), opérations CRUD via DataService, sécurisation par hachage BCrypt, gestion des clés étrangères.
Ticket client + cuisine avec numéro de commande (standard ESC/POS)
Historique complet, statuts des commandes, statistiques de vente
Intégration TPE bancaire pour paiements sécurisés réels
Options, suppléments, allergènes
Interface disponible en français, anglais, espagnol