Borne de Commande Restaurant

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

C# / WPF MySQL MVVM Janvier 2026 — en cours CFA Ingetis

Informations du Projet

Période

Janvier — Mars 2026

Contexte

CFA Ingetis (local)

Modalité

Projet individuel

Type

Application Desktop

Code source

GitHub (lien à venir)

Présentation du Projet

Contexte et Objectifs

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.

Parcours Utilisateur

1

Écran de Veille

Écran d'accueil affiché au démarrage. Un clic démarre la commande.

VeilleWindow

2

Choix du type

Le client sélectionne « Sur place » ou « À emporter ».

ChoixWindow

3

Menu

Navigation par catégories, ajout des produits au panier. Produits indisponibles bloqués.

MenuWindow

4

Panier

Consultation, modification des quantités, suppression d'articles, validation.

PanierWindow

5

Paiement

Choix CB ou espèces, traitement simulé, génération du n° de commande.

PaymentWindow

6

Administration

Accès sécurisé BCrypt pour gérer catégories et produits.

LoginWindow + AdminWindow

Captures d'écran

Écran de Veille

É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.

Écran de veille

Menu & Catalogue Produits

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.

Page de menu

Gestion du 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.

Page du Panier

Écran de Paiement

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.

Page de Paiement

Interface d'Administration

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é.

Page Admin

Architecture MVVM

Organisation du projet en couches

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.

📦 Models

  • Produit
  • Categorie
  • Panier
  • LigneCommande
  • Utilisateur

Classes de données pures, sans logique métier, utilisées par toutes les couches.

🎨 Views (XAML)

  • VeilleWindow
  • ChoixWindow
  • MenuWindow
  • PanierWindow
  • PaymentWindow
  • LoginWindow + AdminWindow

Code-behind minimal. Binding XAML pur vers les ViewModels.

🔄 ViewModels

  • VeilleViewModel
  • ChoixViewModel
  • MenuViewModel
  • PanierViewModel
  • PaymentViewModel
  • LoginViewModel

Héritent de ViewModelBase. Exposent des propriétés et des ICommand.

⚙️ Services

  • DataService

Centralise toutes les requêtes SQL (CRUD). Les ViewModels n'accèdent jamais directement à la BDD.

🛠️ Helpers

  • RelayCommand
  • ViewModelBase

RelayCommand implémente ICommand en une ligne. ViewModelBase gère INotifyPropertyChanged et SetProperty.

Base de Données

Schéma MySQL — restaurantdb

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.

categories
idINT AUTO_INCREMENTPK
nomVARCHAR(100)
tagVARCHAR(50)
couleurVARCHAR(7)
produits
idINT AUTO_INCREMENTPK
nomVARCHAR(150)
prixDECIMAL(10,2)
image_urlVARCHAR(255)
categorie_idINTFK
QuantiteINT
StatutVARCHAR(20)
Utilisateurs
IdINT AUTO_INCREMENTPK
NomUtilisateurVARCHAR(100)
MotDePasseHashVARCHAR(255)
RoleVARCHAR(50)

Technologies Utilisées

C#

Langage principal pour toute la logique applicative

WPF / XAML

Framework UI Windows, interfaces tactiles .NET 6+

Pattern MVVM

Architecture stricte avec DataBinding et ICommand

MySQL 8.1

Base de données + MySql.Data (ADO.NET)

XAMPP

Serveur local MySQL + phpMyAdmin

Git / GitHub

Versionnement et sauvegarde du code source

Environnement de Développement

Visual Studio

IDE principal C# / WPF

XAMPP

Serveur local Apache + MySQL

phpMyAdmin

Administration base de données

GitHub

Versionnement et hébergement du code

Docs Microsoft

Documentation officielle C# / WPF / .NET

Compétences Travaillées (Épreuve E6)

Concevoir et développer une solution applicative

Analyse des besoins, modélisation (MCD/MLD, diagrammes de cas d'utilisation), développement complet en C#/WPF avec architecture MVVM stricte.

Assurer la maintenance corrective ou évolutive d'une solution applicative

Évolution continue : ajout de fonctionnalités (admin, gestion stocks), corrections de bugs, documentation du code source pour faciliter la maintenance.

Gérer les données

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.

Fonctionnalités à Venir

🔴 Critique
Impression de tickets

Ticket client + cuisine avec numéro de commande (standard ESC/POS)

🟡 Haute
Base de données commandes

Historique complet, statuts des commandes, statistiques de vente

🟡 Haute
Paiement réel CB

Intégration TPE bancaire pour paiements sécurisés réels

🟢 Moyenne
Personnalisation produits

Options, suppléments, allergènes

🟢 Moyenne
Multi-langues

Interface disponible en français, anglais, espagnol

Retour à la liste des projets