Contexte du projet
EasySave est un projet réalisé au cours de mon cursus CESI école d'ingénieurs. Le défi était de concevoir une solution robuste et professionnelle de sauvegarde de données offrant à la fois une interface en ligne de commande (CLI) et une interface graphique (GUI), avec un système de version et une architecture modulaire.
Le projet couvre les cycles complets de développement logiciel : conception architecturale, implémentation multi-projets, gestion des versions, et évolution itérative du produit de V1.0 à V3.0 en ajoutant progressivement des fonctionnalités et améliorations ainsi que les mises à jours du changelog.
Architecture technique
EasySave est structuré en plusieurs projets C# interconnectés pour respecter la séparation des responsabilités et faciliter l'évolution :
Composants principaux
- EasySave.Core : Le moteur du logiciel. Contient la logique de sauvegarde (copie de fichiers, calcul différentiel), les modèles de données (Job, Config) et la gestion multi-langue (français/anglais).
- EasyLog.dll : Composant transverse pour la journalisation. Responsable de l'écriture des logs en JSON/XML. Il est conçu pour être réutilisable par d'autres projets.
- EasySave.Cli : Interface utilisateur console (CLI) pour V1.0 et V1.1. Analyse des arguments de ligne de commande et affichage interactif des menus.
- EasySave.Gui : Interface graphique (GUI) conçu avec Avalonia pour V2.0 et V3.0. Architecture MVVM.
Fonctionnalités clés
EasySave offre une gestion complète et sécurisée des sauvegardes :
Gestion des sauvegardes
- Types : Sauvegardes complètes et différentielles
- Sources/Cibles : Disques locaux, externes, lecteurs réseau (chemins UNC)
- Exécution : Unitaire, séquentielle (V1/V2) et parallèle (V3)
- Flexibilité : Jusqu'à 5 travaux définis en V1/V1.1, illimité en V2+
Suivi et journalisation
- Formats : Logs en JSON (V1.0) et XML/JSON (V1.1+)
- État temps réel : Fichier state.json pour suivre progression, taille et % d'avancement
- Logs journaliers : Organisation par date (YYYY-MM-DD)
Sécurité et métier
- CryptoSoft : Module de cryptage externe pour fichiers sensibles (V2.0+)
- Logiciel Métier : Détection automatique des applications de travail avec arrêt (V2.0) ou pause (V3.0) des sauvegardes pour éviter corruption et perte de performance
Évolution des versions
Le projet suit une évolution itérative et progressive, avec chaque version apportant de nouvelles fonctionnalités et améliorations :
V1.0 - Prototype CLI
Interface console basique avec support JSON, 5 travaux maximum, exécution séquentielle, français et anglais. Foundation du logiciel.
V1.1 - Amélioration CLI
Ajout du support XML pour les logs, améliorations UX et stabilité. Interface console toujours active.
V2.0 - Interface graphique
Transition vers GUI, travaux illimités, intégration du cryptage CryptoSoft, détection et arrêt des logiciels métier. Architecture modulaire complète.
V3.0 - Production
Exécution parallèle des sauvegardes, pause intelligente des logiciels métier, centralisation des logs, optimisations de performance. Prête pour environnement professionnel.
Stack technique
- Langage : C# .NET 10
- Architecture : Multi-projets avec séparation des responsabilités
- GUI : Avalonia (multi-plateforme)
- Pattern : Architecture MVVM + Design Patterns
- Formats : JSON et XML pour la sérialisation des logs
- Gestion : Git pour le contrôle de version
Résultat

Apprentissages et compétences
Ce projet a développé mes compétences en :
- Conception architecturale : Structurer un projet en composants réutilisables
- C# et .NET : Développement multi-projets, async/await, gestion des ressources
- Versioning : Gérer l'évolution itérative d'un produit logiciel
- CLI et GUI : Concevoir deux interfaces utilisateur pour le même moteur
- Journalisation : Implémentation robuste des logs et suivi d'état
- Travail en équipe : Collaboration sur architecture partagée