Projet technique
OAuth2 Google, Stripe Checkout, webhooks asynchrones, JWT stateless, cache local, conformité RGPD.
Fullstack · Mobile
Projet fullstack complet : conception, documentation, CI/CD, API REST sécurisée, paiement Stripe et conformité RGPD — du cahier des charges à l'APK buildé en production.
FurniGo est conçu autour de quatre axes complémentaires qui reflètent une approche professionnelle du développement — bien au-delà d'un simple exercice de code.
OAuth2 Google, Stripe Checkout, webhooks asynchrones, JWT stateless, cache local, conformité RGPD.
Spec fonctionnelle, spec technique, user stories et diagrammes rédigés avant tout développement.
Kanban GitHub Projects, issues liées aux PR, milestones, Conventional Commits, GitHub Actions.
Connexion Google, paiement Stripe et gestion RGPD complète — trois intégrations métier réelles.
L'application couvre l'intégralité d'un parcours e-commerce mobile, du mode invité jusqu'à la gestion RGPD du compte.
Workflow complet de l'application : connexion Google, navigation dans le catalogue, ajout au panier et paiement via Stripe Checkout.
Démonstration complète — connexion, catalogue, panier, paiement Stripe
Captures d'écran réelles de l'application, organisées par parcours utilisateur.













Avant d'écrire la première ligne de code, l'ensemble du projet a été spécifié, structuré et documenté. Chaque document est accessible directement dans le dépôt GitHub.
Périmètre, parcours utilisateur, règles métier et fonctionnalités MVP.
Architecture, stack, flux de données et décisions techniques documentées.
27 user stories réparties en 9 Epics avec critères d'acceptation.
Flux auth, paiement, RGPD, modèle de données ERD et architecture globale.
32 tâches structurées en 8 Epics, liées aux issues GitHub.
Parcours utilisateur, règles métier et périmètre MVP définis avant tout développement.
32 issues GitHub structurées en 8 Epics, priorisées par milestone dans un Kanban.
Tous les écrans designés en light & dark avant d'écrire la première ligne de code.
Choix de stack documentés, diagrammes de flux, ERD et décisions techniques justifiées.
Git flow, Conventional Commits et GitHub Actions pour lint, tests et build automatisés.
Le projet a été géré comme un vrai produit : backlog priorisé, issues liées aux Pull Requests, pipelines CI automatisés et convention de commits systématique.
Tableau Backlog → In Progress → In Review → Done. Chaque tâche correspond à une issue GitHub liée à une Pull Request.
Branches feature/*, fix/*, chore/*, docs/* avec merge via PR sur develop, puis sur main en fin de epic.
Convention feat:, fix:, chore:, test:, docs:, ci: appliquée systématiquement pour un historique Git lisible.
Deux pipelines automatisés : backend (Maven + JUnit + Checkstyle) et mobile (ESLint + TypeScript + Expo Doctor).
Déclenché sur push/PR — backend/**
Déclenché sur push/PR — mobile/**
L'authentification repose sur Google OAuth2 via expo-auth-session côté mobile, avec validation de l'id_token côté backend Spring Boot. L'application propose également un mode invité avec onboarding, verrouillage des écrans protégés et redirection vers la connexion.
Le token Google est validé côté backend via l'API de vérification Google — le JWT applicatif n'est généré qu'après validation. Les sessions sont stateless : aucune donnée de session côté serveur.
Le flux de paiement implique une coordination entre l'application mobile, le backend et Stripe. La gestion du webhook asynchrone garantit que le statut de commande est mis à jour de façon fiable, indépendamment du comportement de l'app après le paiement.
La signature du webhook Stripe est vérifiée côté backend à chaque réception — protection contre les appels frauduleux et idempotency des événements. Le prix unitaire est figé au moment de la commande (snapshot dans OrderItem).
L'écran profil intègre une gestion complète des droits utilisateur. Chaque donnée est expliquée et classifiée directement dans l'interface, avec les actions correspondantes disponibles.
Chaque donnée est expliquée à l'utilisateur avec sa classification : locale, stockée, anonymisée ou pseudonymisée.
L'utilisateur peut exporter l'ensemble de ses données personnelles dans un fichier JSON structuré.
Suppression complète du compte avec anonymisation des données transactionnelles liées aux commandes.
Distinction claire entre données utilisateur (PII), pseudonymisées (Stripe/Orders) et anonymisées (stats).
Panier, favoris — stockés uniquement sur l'appareil
Profil, email — données personnelles en base
Commandes, paiements — liées à un ID anonyme
Statistiques — aucun lien avec l'utilisateur
Ce projet illustre ma capacité à cadrer, concevoir et développer une application mobile e-commerce complète — des spécifications jusqu'au déploiement. Je recherche un poste de développeur web pour m'impliquer sur des projets concrets au sein d'une équipe.