Mes Projets

Projets réalisés

Application de réservation de DVD RFTG
Application Web, Mobile et API

RFTG

Applications de réservation et gestion autour de la location de DVD.

Interface principale de l’application MTCongés
Application Java • BTS SIO

MTCongés

Application de gestion des congés.

Logo client assureur
Expérience professionnelle

Assureur

Mission professionnelle pour un assureur.

DataConverter - bibliothèque Java de conversion de formats
Bibliothèque Java

DataConverter

Bibliothèque utilitaire Java permettant de convertir des données.

Site web de podologie d’Argentan
Développement Web

Site web pour une podologue

Création d’un site web professionnel pour une podologue à Argentan, incluant une présentation des services et des informations de contact.

Portfolio personnel de Camille Marsac
Projet Personnel

Portfolio personnel

Conception et réalisation de mon portfolio personnel, mettant en valeur mes compétences et mes projets.

Vous le consultez actuellement

En cours / À venir

Expense Tracker - application de suivi de dépenses
Application Web Full-Stack · En cours

Expense Tracker

Application web de suivi de dépenses personnelles avec tableau de bord interactif, budgets par catégorie et alertes de dépassement.

Retour aux projets

Site web pour une podologue

Développement Web · Déploiement · Référencement

L'objectif de ce projet était de créer un site vitrine professionnel pour une podologue à Argentan, afin d'attirer de la clientèle et d'établir une présence en ligne. Ce projet m'a surtout permis de m'entraîner sur la mise en ligne concrète d'une application web : choix et configuration d'un hébergeur, transfert des fichiers par FTP, sécurisation en HTTPS et travail sur le référencement naturel.

Hébergeur initial O2Switch
Hébergeur actuel Hostinger
Transfert FTP FileZilla
Résultat 1ère page Google
Mise en production

Déploiement et hébergement

Mise en ligne avec FileZilla

Le déploiement a été réalisé via FileZilla en FTP/FTPS : connexion au serveur distant, organisation des répertoires et transfert des fichiers statiques vers le dossier public de l'hébergeur. C'est ma première mise en production réelle d'un projet web, ce qui m'a permis de comprendre concrètement le cycle développement → hébergement → production.

O2Switch puis Hostinger

  • Départ sur O2Switch : découverte du panneau cPanel, gestion des DNS et configuration du nom de domaine
  • Migration vers Hostinger : comparaison des offres, export et réimport des fichiers, mise à jour des enregistrements DNS
  • Compréhension des différences de configuration entre hébergeurs mutualisés

Sécurisation HTTPS

  • Activation et configuration du certificat SSL/TLS (Let's Encrypt) via le panneau d'administration
  • Mise en place de la redirection HTTP → HTTPS pour garantir la sécurité des visiteurs
  • Vérification de la validité du certificat et du cadenas dans le navigateur
Référencement

SEO et visibilité Google

L'un des objectifs principaux était que le site soit trouvable par de futurs patients. J'ai travaillé le référencement naturel pour positionner le site sur la première page de résultats Google sur les requêtes locales.

  • Rédaction de balises <title> et <meta description> ciblant les mots-clés pertinents (podologue, Argentan, soins des pieds…)
  • Structure sémantique HTML correcte (titres h1/h2, balises alt sur les images)
  • Déclaration et indexation via Google Search Console
  • Ajout de l'établissement sur Google Maps / Google Business pour le référencement local
  • Résultat : site accessible en première page de recherche sur les requêtes locales ciblées
Relation client

Répondre aux besoins du client

  • Recueil des besoins : présentation des services, informations de contact, horaires et accès
  • Itérations sur le design et le contenu en fonction des retours du client
  • Livraison d'un site responsive, accessible sur mobile comme sur desktop
  • Accompagnement post-mise en ligne : explication de la gestion du domaine et de l'hébergement
Retour aux projets

RFTG - Raised From The Graveyard

Projet Full-Stack • BTS SIO 2024-2026

RFTG est un projet global de location de DVDs en ligne réalisé dans le cadre du BTS SIO option SLAM. Il réunit trois applications interconnectées autour d'une même base de données, chacune portant un nom issu de l'univers Mario : une application mobile Android pour les clients, une application web Laravel de gestion pour le personnel administratif, et une API REST qui orchestre le tout.

Cadre BTS SIO SLAM · 2024-2026
Base de données MySQL (dérivée Sakila)
Mobile · Android

Luigi

Application cliente

App Android native en Java pour parcourir le catalogue, gérer un panier et louer des films.

Web · Laravel

Mario

Application administrative

Interface web interne pour la gestion des films, DVDs, clients et locations en temps réel.

Backend · Spring Boot

Toad

API REST centrale

67 endpoints sécurisés par JWT, pont unique entre clients, personnel et base de données.

Data · MySQL

Peach

Base de données

Schéma dérivé de Sakila, enrichi de migrations versionnées (v0.2 → v0.7).

Luigi

Application mobile Android

Interface de l'application mobile Luigi

Démonstration

Stack technique

LangageJava (Android SDK)
Communication réseauHttpURLConnection + AsyncTask
AuthentificationHachage MD5 + token JWT

Architecture en couches

  • Activities - gestion de l'interface et des interactions utilisateur
  • AsyncTask - opérations réseau non bloquantes avec callbacks
  • Managers (Singleton) - logique métier centralisée (panier, session, URL)
  • DatabaseHelper - accès SQLite encapsulé
  • Adapters - liaison données ↔ vues (ListView)

Parcours utilisateur

Connexion Catalogue filtrable Détail film Ajout au panier Checkout
Liens avec le tableau de synthèse E4
C1
Gérer le patrimoine informatique
Analyser les objectifs et les modalités d'organisation d'un projet

Le projet a nécessité une phase d'analyse du cahier des charges et de découpage des fonctionnalités avant tout développement.

C1
Gérer le patrimoine informatique
Exploiter des référentiels, normes et standards adoptés par le prestataire informatique

L'application respecte les standards REST, le protocole HTTP et les conventions JWT pour l'authentification.

C2
Répondre aux incidents et aux demandes
Mettre en place et vérifier les niveaux d'habilitation associés à un service

La connexion par identifiants hachés et le token JWT garantissent que seuls les utilisateurs autorisés accèdent au service de location.

C2
Répondre aux incidents et aux demandes
Traiter des demandes concernant les applications

Chaque code d'erreur retourné par l'API est intercepté et traduit en retour utilisateur intelligible, simulant un premier niveau de support applicatif.

C4
Travailler en mode projet
Recenser et identifier les ressources numériques

Le catalogue recense et expose l'ensemble des ressources films disponibles côté serveur, rendues navigables et filtrables côté client.

C5
Mettre à disposition des utilisateurs un service informatique
Déployer un service

L'application a été configurée pour fonctionner sur un large parc d'appareils Android, avec une gestion des URL de déploiement adaptable selon l'environnement (émulateur, serveur de test, production).

C5
Mettre à disposition des utilisateurs un service informatique
Réaliser les tests d'intégration et d'acceptation d'un service

Chaque endpoint REST a été testé manuellement et les scénarios nominaux / erreurs ont été vérifiés avant livraison.

Mario

Application web Laravel

Interface de l'application web Mario - CMA

Démonstration

Contexte

Application web de gestion interne pour gérer l'application de réservation de DVD. Elle permet au personnel de gérer l'ensemble des opérations métier : catalogue de films, stock de DVDs, clients et locations. Aucune base locale, toutes les données sont consommées via l'API REST Toad.

Stack technique

BackendPHP 8.2 · Laravel 12
FrontendBlade · Bootstrap 5 · Bootstrap Icons
BuildVite · Sass
API externeREST API "Toad" (microservice Java)
AuthentificationSHA-256 + JWT (guard Laravel dédié)

Architecture

Architecture MVC avec couche de services. Authentification sur mesure sans Eloquent ni Breeze : le mot de passe est envoyé hashé (SHA-256) à l'endpoint /staffs/verify. En retour, un token JWT est stocké en session et transmis en Bearer sur chaque appel API sécurisé. Toutes les routes sont protégées par le middleware auth.

Fonctionnalités

  • Films - liste, fiche détail, création, modification, suppression
  • DVDs / Inventaire - gestion du stock physique par film
  • Clients - CRUD complet avec gestion de l'état actif / inactif
  • Locations - suivi temps réel avec changement de statut (En cours / Dans le panier / Terminé)
Liens avec le tableau de synthèse E4
C1
Gérer le patrimoine informatique
Analyser les objectifs et les modalités d'organisation d'un projet

Le projet a nécessité de définir en amont les entités métier, les flux de données et la répartition des responsabilités entre les couches de l'application.

C2
Répondre aux incidents et aux demandes
Mettre en place et vérifier les niveaux d'habilitation associés à un service

Le système d'authentification différencie les utilisateurs non authentifiés (redirigés vers /login) des membres du personnel autorisés, via un UserProvider personnalisé et un guard Laravel dédié.

C2
Répondre aux incidents et aux demandes
Traiter des demandes concernant les applications

Les modules Clients et Locations répondent directement aux besoins opérationnels du personnel : création, consultation, mise à jour et suppression de données via des formulaires reliés à l'API.

C4
Travailler en mode projet
Recenser et identifier les ressources numériques

Le module inventaire permet de recenser chaque exemplaire physique (DVD) associé à un film et d'en suivre la disponibilité.

C5
Mettre à disposition des utilisateurs un service informatique
Réaliser les tests d'intégration et d'acceptation d'un service

Chaque module a été validé de bout en bout : vérification des appels HTTP, des codes de retour de l'API, des cas d'erreur (connexion échouée, ressource absente) et du comportement des formulaires.

Toad

API REST

Présentation

Toad est une API REST de gestion de location de DVDs, développée dans le cadre du BTS SIO (option SLAM) - année 2025-2026. L'API permet à des clients de consulter un catalogue de films, de gérer un panier et de louer des DVDs. Elle expose également un ensemble de routes d'administration pour piloter les stocks, les employés, les magasins et les transactions.

Stack technique

BackendSpring Boot 3.1 (Java 17)
SécuritéSpring Security + JWT
PersistanceSpring Data JPA / Hibernate
Base de donnéesMySQL 8
BuildMaven
Documentation APIOpenAPI 3.0 (Swagger) + Postman

Architecture

L'API REST expose 67 endpoints organisés en 13 controllers, suivant une architecture en couches classique : Controller → Service → Repository → JPA Entity. La base de données est dérivée du schéma Sakila (Oracle), enrichie de migrations versionnées (v0.2 → v0.7).

  • Authentification - connexion sécurisée par token JWT (expiration 24h), gestion des rôles client / staff

Tests & documentation

La collection Postman et la spécification OpenAPI (Toad.yaml) permettent de tester et documenter l'intégralité des endpoints.

Liens avec le tableau de synthèse E4
C1
Gérer le patrimoine informatique
Exploiter des référentiels, normes et standards adoptés par le prestataire informatique

L'utilisation de standards reconnus (OpenAPI 3.0, JWT, REST, Maven) reflète une démarche professionnelle alignée sur les pratiques du secteur.

C1
Gérer le patrimoine informatique
Gérer des sauvegardes / Gérer le patrimoine informatique

Les migrations SQL versionnées assurent la traçabilité et la reproductibilité de l'évolution du schéma de base de données.

C2
Répondre aux incidents et aux demandes
Mettre en place et vérifier les niveaux d'habilitation associés à un service

La mise en œuvre de JWT et de Spring Security garantit que chaque utilisateur accède uniquement aux ressources correspondant à son rôle.

C2
Répondre aux incidents et aux demandes
Traiter des demandes concernant les applications

Développement d'endpoints REST répondant aux besoins fonctionnels (consultation, recherche, détail) et implémentation d'un processus métier complet (panier jusqu'à confirmation de location), avec gestion des états et contrôles de cohérence.

C4
Travailler en mode projet
Recenser et identifier les ressources numériques

L'ensemble des entités métier (films, stocks, clients, magasins…) est modélisé, recensé et administrable via l'API.

C4
Travailler en mode projet
Analyser les objectifs et les modalités d'organisation d'un projet

La structuration du projet (backend modulaire, migrations versionnées, documentation API) témoigne d'une organisation planifiée et d'une répartition claire des responsabilités.

C5
Mettre à disposition des utilisateurs un service informatique
Vérifier les conditions de la continuité d'un service informatique

La vérification de disponibilité avant location évite les incohérences de stock et garantit la fiabilité du service pour l'utilisateur.

C5
Mettre à disposition des utilisateurs un service informatique
Réaliser les tests d'intégration et d'acceptation d'un service

Les tests Postman couvrent les scénarios nominaux et permettent de valider le comportement de chaque endpoint avant mise en production.

Retour aux projets

Mission professionnelle - Assureur

Expérience professionnelle · BTS SIO 2024-2026

Mission réalisée au sein de mon entreprise pour le compte d'un client assureur. J'ai contribué à la maintenance corrective et à l'évolution technique d'une application web interne développée en PHP / Laravel, en intervenant sur deux axes principaux : la résolution d'incidents et la migration vers une version plus récente du framework.

Contexte Mission en entreprise dans le secteur de l'assurance
Stack PHP · Laravel · SQL · JavaScript
Livraisons Correctifs · Migration · Documentation · Cahiers de tests
Mission 1 · Laravel

Correctifs d'incidents

Maintenance corrective

Analyse, reproduction et résolution de bugs dans l'application PHP/Laravel, accompagnés de documentation et de cahiers de tests.

Mission 2 · Laravel

Migration de version

Évolution technique

Montée en version du projet Laravel vers une version récente, avec adaptation du code, correctifs de compatibilité et documentation.

Mission 1

Correctifs d'incidents

Contexte

L'application interne du client présentait des dysfonctionnements signalés par les équipes métier. La mission consistait à analyser chaque incident, reproduire les comportements anormaux, appliquer les correctifs dans le code PHP / Laravel, puis valider et documenter les corrections.

Interventions réalisées

  • Analyse des incidents - lecture des rapports, reproduction du bug en environnement de développement
  • Modification du code - correctifs ciblés dans les contrôleurs, modèles et vues Laravel
  • Rédaction de la documentation - description du problème, de la cause racine et de la solution appliquée
  • Cahiers de tests - scénarios de validation couvrant les cas nominaux et les régressions

Stack technique

BackendPHP · Laravel
Base de donnéesSQL
FrontendJavaScript · Blade
LivrablesCode corrigé · Documentation · Cahiers de tests
Mission 2

Migration de version Laravel

Contexte

Le projet Laravel du client nécessitait une montée en version afin de bénéficier des améliorations de sécurité, de performances et des nouvelles fonctionnalités du framework. La mission couvrait l'adaptation du code existant à la nouvelle version, la correction des incompatibilités et la validation du bon fonctionnement de l'application après migration.

Interventions réalisées

  • Analyse des breaking changes - identification des incompatibilités entre l'ancienne et la nouvelle version de Laravel
  • Adaptation du code - mise à jour des dépendances, refactoring des parties concernées par les changements d'API du framework
  • Correctifs de compatibilité - résolution des erreurs apparues lors de la montée en version
  • Rédaction de la documentation - guide de migration, description des modifications apportées
  • Cahiers de tests - vérification du comportement de l'application après migration (fonctionnalités, sécurité, intégrité des données)

Stack technique

BackendPHP · Laravel (version antérieure → version récente)
Base de donnéesSQL
FrontendJavaScript · Blade
LivrablesCode migré · Guide de migration · Cahiers de tests
Liens avec le tableau de synthèse E4
C1
Gérer le patrimoine informatique
Exploiter des référentiels, normes et standards adoptés par le prestataire informatique

Le projet suit les conventions Laravel (MVC, Artisan, Blade) et les pratiques PHP reconnues en entreprise, dans un cadre professionnel contraint par les normes du secteur de l'assurance.

C2
Répondre aux incidents et aux demandes
Collecter, suivre et orienter les demandes

Chaque incident signalé par les équipes métier a été analysé, reproduit et tracé avant intervention, selon un processus structuré de gestion des demandes.

C2
Répondre aux incidents et aux demandes
Traiter des demandes concernant les applications

Analyse des causes racines, modification ciblée du code PHP / Laravel et validation des correctifs - directement en réponse aux incidents remontés par le client.

C3
Développer la présence en ligne
Participer à l'évolution d'un site Web exploitant les données de l'organisation

L'application interne consomme et restitue les données métier de l'assureur via une interface web structurée. Les deux missions contribuent directement à son évolution et à sa stabilité.

C3
Développer la présence en ligne
Réaliser les tests nécessaires à la validation d'un service

Rédaction de cahiers de tests couvrant les scénarios nominaux, les cas limites et les régressions, pour les deux missions (correctifs et migration).

C4
Travailler en mode projet
Analyser les objectifs et les modalités d'organisation d'un projet

La migration Laravel a nécessité une phase d'analyse préalable des changements de version et une planification des adaptations à réaliser avant toute modification du code.

C5
Mettre à disposition des utilisateurs un service informatique
Réaliser les tests d'intégration et d'acceptation d'un service

Validation end-to-end de chaque correctif et de la migration via des cahiers de tests documentés, garantissant la stabilité de l'application après chaque intervention.

Retour aux projets

MTCongés - Application de gestion des congés

Application Java • BTS SIO
Interface principale du calendrier de MTCongés

Présentation

Application de gestion des congés développée dans le cadre d'un projet BTS SIO SLAM. Conçue en Java 17 avec une interface Swing et une base de données MySQL, elle suit une architecture MVC structurée permettant une séparation claire entre logique métier, interface et persistance des données.

Objectifs du projet

Créer une solution complète permettant aux employés de demander des congés, aux responsables de les valider et aux administrateurs de gérer les comptes utilisateurs, le tout dans un environnement sécurisé et conforme aux bonnes pratiques.

Fonctionnalités principales

  • Authentification sécurisée : Connexion avec verrouillage automatique, réinitialisation de mot de passe, contrôles de session
  • Gestion des rôles : Admin (gestion utilisateurs), Responsable (validation demandes), Employé (dépôt et suivi)
  • Architecture MVC : Modèle (POJO + DAO), Vue (Swing adaptative), Contrôleur (logique métier)

Aspects techniques et sécurité

  • Protection contre injections SQL
  • Durée de session limitée
  • Vérifications côté client et serveur
  • Système de logging complet pour traçage et débogage
  • Conformité RGPD

Technologies utilisées

  • Langage : Java 17
  • Interface : Java Swing
  • Base de données : MySQL
  • Architecture : MVC avec DAO et POJO
  • Sécurité : Authentification, RGPD, logging

Compétences développées

Développement Java 17 & Swing • Architecture logicielle MVC • Conception de base de données MySQL • DAO & POJO • Sécurité, authentification, RGPD • Logging, débogage et gestion des erreurs • Gestion des rôles et permissions

Liens avec le tableau de synthèse E4
C1
Gérer le patrimoine informatique
Mettre en place et vérifier les niveaux d'habilitation associés à un service

Système de rôles (Super-Admin, Admin, Responsable, Employé) avec permissions distinctes - table role, RoleDao.java, AdminController.java.

C1
Gérer le patrimoine informatique
Vérifier le respect des règles d'utilisation des équipements et services informatiques

Acceptation des CGU/RGPD tracée en base de données (ConditionsAcceptees), déconnexion automatique après 15 min d'inactivité dans BaseView.java.

C1
Gérer le patrimoine informatique
Exploiter des référentiels, normes et standards adoptés par le prestataire informatique

Architecture MVC, hachage BCrypt des mots de passe, JDBC, Maven - standards reconnus en entreprise.

C1
Gérer le patrimoine informatique
Recenser et identifier les ressources numériques

Schéma BDD documenté (adpv1), gestion des utilisateurs, projets et rôles dans UtilisateurDao.java.

C1
Gérer le patrimoine informatique
Vérifier les conditions de la continuité d'un service informatique

Journalisation complète via Logger.javalogs/appli.log (niveaux INFO / WARNING / ERROR).

C2
Répondre aux incidents et aux demandes
Collecter, suivre et orienter les demandes

Cycle de vie complet des demandes de congé : statuts En attenteApprouvé / Refusé, table demandeconge, DemandeCongeDao.java.

C2
Répondre aux incidents et aux demandes
Traiter des demandes concernant les applications

Le cœur du projet : soumission, traitement et réponse aux demandes de congé via EmployeController.java et ResponsableController.java.

C2
Répondre aux incidents et aux demandes
Traiter des demandes de support - Système de notification

Suivi des réponses aux demandes via NotificationDao.java (état non-ouverte / lue, titre, contenu).

C4
Travailler en mode projet
Analyser les objectifs et les modalités d'organisation d'un projet

Conception d'un système multi-rôles répondant à un besoin métier précis (gestion des congés) avec découpage clair des responsabilités par profil.

C4
Travailler en mode projet
Planifier les activités

Vue calendrier dans EmployeView.java et ResponsableView.java ; gestion d'événements dans la table evenement.

C4
Travailler en mode projet
Recenser et identifier les ressources numériques

Suivi du solde de congés (NombreCongeRestant, NombreCongesParAn) - indicateur chiffré exploitable dans le tableau de bord.

C4
Travailler en mode projet
Mettre en place des outils de gestion de projet

Architecture MVC structurée, répartition claire Controller / DAO / POJO / View, gestion de dépendances Maven.

C5
Mettre à disposition des utilisateurs un service informatique
Déployer un service

Packaging Maven → JAR exécutable (mon-projet-javafx-1.0-SNAPSHOT.jar), configuration de la connexion BDD dans Main.java.

C5
Mettre à disposition des utilisateurs un service informatique
Réaliser les tests d'intégration et d'acceptation d'un service

Jeux d'essai avec utilisateurs de test (VAL, cma, mqu, bpa) couvrant tous les rôles ; scénarios de connexion, dépôt et validation de demandes vérifiés.

C5
Mettre à disposition des utilisateurs un service informatique
Accompagner les utilisateurs dans la mise en place d'un service

Interfaces adaptées par rôle (AdminView, EmployeView, ResponsableView), réinitialisation du mot de passe, gestion des droits d'accès.

C6
Organiser son développement professionnel
Mettre en place son environnement d'apprentissage personnel

Mise en place d'un environnement de développement complet : Eclipse, Maven, MySQL / phpMyAdmin, JDK 22.

C6
Organiser son développement professionnel
Réaliser une veille informationnelle

Utilisation de technologies récentes et standards reconnus : BCrypt, MVC, JDBC, Java 22.

C6
Organiser son développement professionnel
Gérer son développement professionnel

Ce projet illustre des compétences de développement d'application métier full-stack (base de données + logique métier + interface utilisateur).

Captures d'écran

Écran de connexion de MTCongés
Retour aux projets

DataConverter - Bibliothèque de conversion multi-formats

Bibliothèque Java · Projet Personnel

DataConverter est une bibliothèque utilitaire Java conçue pour convertir des données structurées entre quatre formats de fichiers : JSON, CSV, XLSX (Excel) et XML. Elle repose sur un modèle hub-and-spoke : tous les formats transitent par une représentation intermédiaire centrale (Map<String, Object>) avant d'être réexportés dans le format cible, offrant ainsi 12 + chemins de conversion bidirectionnels.

Langage Java 17
Build Maven 4.0.0
Tests JUnit Jupiter 5 · 11 classes + 2 intégration
Formats JSON · CSV · XLSX · XML
Architecture

Hub-and-Spoke

Représentation intermédiaire

Tous les formats passent par un Map<String,Object> central - 12+ conversions bidirectionnelles sans duplication de logique.

Extensibilité

Interfaces ouvertes

Importer / Exporter

Ajouter un nouveau format nécessite seulement deux classes implémentant les interfaces Importer et Exporter.

Qualité

Tests automatisés

Round-trip & comparateurs

11 classes de tests unitaires, 2 tests d'intégration round-trip et deux comparateurs (caractère par caractère et structurel profond).

Architecture

Modèle Hub-and-Spoke

Principe de fonctionnement

Plutôt que de coder N² convertisseurs dédiés pour chaque paire de formats, DataConverter utilise un format pivot central : Map<String, Object>. Chaque format dispose d'un Importer (format → Map) et d'un Exporter (Map → format). Toute conversion entre deux formats quelconques s'effectue en deux étapes, ce qui réduit la complexité de N² à 2×N.

Schéma d'architecture

JSON
Map<String, Object>
CSV
XML
XLSX

Structures imbriquées

Les objets et tableaux JSON/XML sont préservés à travers les conversions grâce à la notation pointée en CSV (ex. : employees.0.projects.1.name). L'algorithme CSV en 3 passes permet de reconstruire fidèlement des structures imbriquées complexes.

Technique

Stack & Fonctionnalités

Stack technique

LangageJava 17
BuildMaven 4.0.0
Excel XLSXApache POI 5.3.0
JSONGoogle Gson 2.10.1 · Jackson 2.17.2
TestsJUnit Jupiter 5.10.2
DocumentationJavadoc (FR/EN) avec exemples et notes de conception

Fonctionnalités principales

  • Conversion multi-formats - 4 formats supportés, toutes les combinaisons sont possibles (12+ chemins bidirectionnels)
  • Préservation des types - String, Integer, Double, Boolean conservés à travers toutes les conversions
  • Structures imbriquées - objets et tableaux JSON/XML préservés via notation pointée en CSV
  • Tests round-trip - vérification que JSON → CSV → JSON donne un résultat identique à l'original
  • FileComparator - diff caractère par caractère entre deux fichiers
  • MapComparator - comparaison structurelle profonde de deux Map<String, Object>

Points forts algorithmiques

  • Interfaces Importer / Exporter - design extensible : ajouter un format = deux nouvelles classes, zéro modification du code existant
  • Algorithme CSV 3 passes - reconstruction fidèle de structures imbriquées arbitrairement profondes
  • Sélection algorithmique adaptative - comparateur de fichiers : DP O(n×m) pour petits fichiers, linéaire O(n+m) pour grands fichiers
  • Javadoc complet - documentation bilingue FR/EN avec exemples d'utilisation et notes de conception

Tests & qualité

11 classes de tests unitaires couvrant chaque convertisseur et chaque comparateur, complétées par 2 tests d'intégration vérifiant les conversions round-trip de bout en bout.

Liens avec le tableau de synthèse E4
C1
Gérer le patrimoine informatique
Recenser et identifier les ressources numériques

Les 4 formats de données (JSON, CSV, XLSX, XML) sont recensés et standardisés via une interface commune, constituant un patrimoine de ressources numériques structurées et interopérables.

C1
Gérer le patrimoine informatique
Exploiter des référentiels, normes et standards adoptés par le prestataire informatique

Respect des standards reconnus : JSON RFC 8259, Open XML OOXML pour Excel, W3C XML - ainsi que les conventions Maven et les pratiques Java de l'écosystème professionnel.

C2
Répondre aux incidents et aux demandes
Traiter des demandes concernant les applications

Développement d'un service de conversion applicatif répondant à un besoin concret : rendre des données interopérables entre systèmes utilisant des formats différents, sans perte d'information.

C4
Travailler en mode projet
Analyser les objectifs et les modalités d'organisation d'un projet

Conception de l'architecture hub-and-spoke avant tout développement : identification des formats cibles, définition des interfaces Importer/Exporter et du format pivot central.

C4
Travailler en mode projet
Planifier les activités

Développement itératif par format (JSON → CSV → XLSX → XML) avec conception de l'architecture en amont et intégration progressive des tests à chaque étape.

C5
Mettre à disposition des utilisateurs un service informatique
Réaliser les tests d'intégration et d'acceptation d'un service

11 classes de tests unitaires couvrant chaque convertisseur et comparateur, complétées par 2 tests d'intégration round-trip vérifiant que les conversions aller-retour produisent un résultat identique à l'original.

C5
Mettre à disposition des utilisateurs un service informatique
Déployer un service

Packaging Maven en JAR distribuable, configuration du build reproductible et documentation Javadoc complète permettant une prise en main immédiate par un développeur tiers.

C6
Organiser son développement professionnel
Mettre en œuvre des outils et services de veille informationnelle

Sélection et intégration de bibliothèques reconnues de l'écosystème Java : Apache POI (Excel), Google Gson et Jackson (JSON) - en évaluant leurs avantages respectifs.

C6
Organiser son développement professionnel
Mettre en place son environnement d'apprentissage personnel

Configuration d'un environnement de développement Java complet : JDK 17, Maven, JUnit Jupiter 5 - avec maîtrise des outils de build et de test professionnels.

Retour aux projets

Expense Tracker

Application Web Full-Stack · Projet Personnel · En cours

Expense Tracker est une application full-stack de suivi de dépenses personnelles permettant à chaque utilisateur de gérer son budget au quotidien, visualiser ses habitudes de consommation et recevoir des alertes en cas de dépassement. Ce projet a été conçu dans un but d'apprentissage et de mise en pratique de technologies modernes du développement web. La première modélisation de la base de données a été réalisée avec Looping.

Runtime Node.js
Base de données PostgreSQL + Prisma
Déploiement Docker · Railway
Statut En cours de développement
Sécurité

Authentification

JWT + bcrypt

Inscription et connexion sécurisées - chaque utilisateur n'accède qu'à ses propres données.

Gestion

Dépenses & Catégories

CRUD complet

Ajout, modification et suppression de dépenses avec filtres par date et par catégorie personnalisée.

Visualisation

Tableau de bord

Chart.js

Graphiques de répartition par catégorie, comparaison mois par mois et historique des dernières dépenses.

Alertes

Budgets mensuels

Indicateurs visuels

Définition d'un budget par catégorie avec indicateur de dépassement et récapitulatif du restant disponible.

Fonctionnalités

Ce que permet l'application

Authentification

  • Inscription et connexion sécurisées
  • Authentification par token JWT
  • Isolation totale des données par utilisateur

Gestion des dépenses

  • Ajouter, modifier et supprimer une dépense
  • Chaque dépense comporte : montant, catégorie, date et description
  • Filtrage par date ou par catégorie

Catégories

  • Catégories personnalisées (alimentation, transport, loisirs…)
  • Couleur associée à chaque catégorie
  • Budget mensuel défini par catégorie

Tableau de bord

  • Total des dépenses du mois en cours
  • Répartition par catégorie (graphique Chart.js)
  • Comparaison des dépenses mois par mois
  • Historique des dernières dépenses

Alertes budget

  • Indicateur visuel en cas de dépassement du budget d'une catégorie
  • Récapitulatif du budget restant par catégorie

Parcours utilisateur

Inscription Connexion JWT Saisie dépenses Tableau de bord Alertes budget
Stack technique

Technologies utilisées

RuntimeNode.js
Framework backendExpress.js
Base de donnéesPostgreSQL
ORMPrisma
AuthentificationJWT + bcrypt
FrontendHTML / CSS / JavaScript vanilla
GraphiquesChart.js
Documentation APISwagger
ConteneurisationDocker + docker-compose
DéploiementRailway
Modélisation BDDLooping