Files
TravelMateAdmin/README.md
Van Leemput Dayron 74586c20ba first commit
2026-01-12 18:03:21 +01:00

7.0 KiB

TravelMate Admin - Panneau d'Administration .NET MAUI

Application desktop (Mac/Windows) pour gérer les demandes clients depuis une base de données MariaDB/MySQL.

🎯 Fonctionnalités

  • Dashboard : Vue d'ensemble avec statistiques des demandes (en attente vs traitées)
  • Messages : Gestion des demandes de suppression de données et messages généraux
  • Support : Gestion des demandes d'assistance technique
  • Filtres : Voir tout, seulement les demandes à faire, ou seulement les traitées
  • Actions : Marquer une demande comme traitée/non traitée d'un clic
  • Design : Interface moderne avec dark theme

🛠️ Stack Technique

  • .NET MAUI (Multi-platform App UI)
  • Pattern MVVM avec CommunityToolkit.Mvvm
  • MariaDB/MySQL via MySqlConnector
  • Injection de dépendance native MAUI

📋 Prérequis

  • .NET 8+ ou .NET 9+
  • Visual Studio 2022 17.8+ ou VS Code avec extension C# Dev Kit
  • MariaDB ou MySQL Server
  • macOS (pour MacCatalyst) ou Windows

🚀 Installation

1. Cloner le projet

git clone <your-repo-url>
cd TravelMateAdmin

2. Configurer la base de données

Exécutez le script SQL fourni pour créer la base de données et les tables :

mysql -u root -p < database_setup.sql

Ou manuellement dans MySQL/MariaDB :

source database_setup.sql

3. Configurer la connexion

Modifiez le fichier Configuration/AppSettings.cs avec vos paramètres :

public const string Server = "localhost";     // Votre serveur MySQL
public const string Port = "3306";            // Port MySQL (défaut: 3306)
public const string Database = "travelmateadmin";
public const string User = "root";            // Votre utilisateur MySQL
public const string Password = "yourpassword"; // Votre mot de passe MySQL

4. Restaurer les packages NuGet

dotnet restore

5. Lancer l'application

Pour macOS (MacCatalyst) :

dotnet build -t:Run -f net10.0-maccatalyst

Pour Windows :

dotnet build -t:Run -f net10.0-windows10.0.19041.0

Ou utilisez Visual Studio : sélectionnez la plateforme cible et appuyez sur F5.

📁 Structure du Projet

TravelMateAdmin/
├── Configuration/
│   └── AppSettings.cs              # Configuration de la connexion DB
├── Converters/
│   └── BoolConverters.cs           # Converters XAML pour les boutons
├── Models/
│   ├── Message.cs                  # Modèle pour les messages
│   └── SupportRequest.cs           # Modèle pour les demandes support
├── Services/
│   ├── IDatabaseService.cs         # Interface du service DB
│   └── DatabaseService.cs          # Implémentation du service DB
├── ViewModels/
│   ├── DashboardViewModel.cs       # ViewModel du dashboard
│   ├── MessagesViewModel.cs        # ViewModel des messages
│   └── SupportViewModel.cs         # ViewModel du support
├── Views/
│   ├── DashboardPage.xaml(.cs)     # Page dashboard
│   ├── MessagesPage.xaml(.cs)      # Page messages
│   └── SupportPage.xaml(.cs)       # Page support
├── App.xaml(.cs)                   # Configuration de l'app
├── AppShell.xaml(.cs)              # Navigation Shell
└── MauiProgram.cs                  # Configuration DI et services

🗃️ Structure de la Base de Données

Table messages

Colonne Type Description
id INT Clé primaire (auto-increment)
nom VARCHAR(100) Nom du demandeur
prenom VARCHAR(100) Prénom du demandeur
email VARCHAR(255) Email du demandeur
message TEXT Contenu du message
done BOOLEAN Statut (traité ou non)
created_at TIMESTAMP Date de création

Table support_requests

Colonne Type Description
id INT Clé primaire (auto-increment)
nom VARCHAR(100) Nom du demandeur
prenom VARCHAR(100) Prénom du demandeur
account_email VARCHAR(255) Email du compte
contact_email VARCHAR(255) Email de contact
message TEXT Description du problème
done BOOLEAN Statut (traité ou non)
created_at TIMESTAMP Date de création

💡 Utilisation

  1. Dashboard : Visualisez rapidement les statistiques. Cliquez sur une carte pour accéder aux détails.
  2. Messages/Support :
    • Utilisez le filtre en haut pour afficher tout, seulement les tâches à faire, ou seulement celles faites
    • Cliquez sur le bouton dans chaque carte pour changer le statut
    • Utilisez le bouton ↻ pour rafraîchir les données
  3. Navigation : Utilisez les onglets en bas (ou le menu) pour naviguer entre les sections

🎨 Personnalisation

Changer les couleurs

Modifiez les couleurs dans les fichiers XAML (section <ContentPage.Resources>) :

<Color x:Key="Primary">#1a1a1a</Color>      <!-- Fond principal -->
<Color x:Key="Secondary">#2d2d2d</Color>    <!-- Fond secondaire -->
<Color x:Key="Accent">#5E50D9</Color>       <!-- Couleur d'accent -->
<Color x:Key="Success">#4CAF50</Color>      <!-- Vert (succès) -->
<Color x:Key="Warning">#FFA726</Color>      <!-- Orange (warning) -->

Ajouter de nouvelles fonctionnalités

  1. Créez un nouveau Model dans Models/
  2. Ajoutez les méthodes nécessaires dans IDatabaseService et DatabaseService
  3. Créez un ViewModel dans ViewModels/
  4. Créez la Vue XAML dans Views/
  5. Enregistrez-les dans MauiProgram.cs
  6. Ajoutez la navigation dans AppShell.xaml

🐛 Dépannage

Erreur de connexion à la base de données

  • Vérifiez que MySQL/MariaDB est bien démarré
  • Vérifiez les paramètres dans AppSettings.cs
  • Vérifiez les droits de l'utilisateur MySQL
  • Regardez les logs dans la console de débogage

L'application ne se lance pas

  • Assurez-vous d'avoir restauré les packages NuGet
  • Vérifiez que vous avez la bonne version de .NET installée
  • Nettoyez et reconstruisez le projet :
    dotnet clean
    dotnet build
    

Les données ne s'affichent pas

  • Vérifiez que les tables existent dans la base de données
  • Vérifiez qu'il y a des données dans les tables
  • Regardez les logs de débogage pour voir les erreurs SQL

📦 Packages NuGet Utilisés

  • CommunityToolkit.Mvvm (8.3.2) - Pour le pattern MVVM
  • MySqlConnector (2.4.0) - Pour la connexion MySQL/MariaDB

📝 License

Ce projet est à usage personnel/éducatif.

👨‍💻 Développement

Créé avec ❤️ en utilisant .NET MAUI


Note: N'oubliez pas de modifier le mot de passe MySQL dans AppSettings.cs avant de déployer en production !