Fullstack · Mobile

FurniGo — Application e-commerce 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.

React Native · Expo Spring Boot · PostgreSQL Stripe · OAuth2 RGPD
32Issues GitHub8 Epics structurées
4Docs de conceptionSpec · User Stories · Diagrammes
2Pipelines CI/CDBackend & Mobile
100%DéployéBackend · BDD · APK prod

Ce que ce projet démontre

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.

Projet technique

OAuth2 Google, Stripe Checkout, webhooks asynchrones, JWT stateless, cache local, conformité RGPD.

Conception documentée

Spec fonctionnelle, spec technique, user stories et diagrammes rédigés avant tout développement.

Méthodologie Agile

Kanban GitHub Projects, issues liées aux PR, milestones, Conventional Commits, GitHub Actions.

3 fonctionnalités clés

Connexion Google, paiement Stripe et gestion RGPD complète — trois intégrations métier réelles.

Fonctionnalités de l'application

L'application couvre l'intégralité d'un parcours e-commerce mobile, du mode invité jusqu'à la gestion RGPD du compte.

Connexion Google OAuth2
Mode invité avec onboarding
Catalogue filtré par catégories
Détail produit + suggestions
Favoris persistants (local)
Panier avec calcul temps réel
Flux paiement Stripe complet
Historique & détail commandes
Profil & gestion RGPD
Cache produits local (perf)

Démonstration

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

Aperçu de l'application

Captures d'écran réelles de l'application, organisées par parcours utilisateur.

Authentification & Onboarding
Connexion Google
Onboarding mode invité
Verrouillage écran protégé
Catalogue & Produits
Catalogue produits
Filtres catégories
Détail produit
Favoris & Panier
Écran favoris
Panier
Commandes
Stripe Checkout
Historique commandes
Détail commande
Profil & RGPD
Profil utilisateur
Gestion RGPD

Stack technique

Mobile

React NativeExpoTypeScriptZustandAsyncStorage

Backend

Spring Boot 3Java 21API RESTJWTOAuth2 Google

Base de données

PostgreSQLJPA / Hibernate

Infra & Outils

DockerGitHub ActionsStripeConventional Commits

Conception & documentation

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.

Du cahier des charges au code

01

Spécification fonctionnelle

Parcours utilisateur, règles métier et périmètre MVP définis avant tout développement.

02

User stories & backlog

32 issues GitHub structurées en 8 Epics, priorisées par milestone dans un Kanban.

03

Maquettes UI

Tous les écrans designés en light & dark avant d'écrire la première ligne de code.

04

Spec technique & diagrammes

Choix de stack documentés, diagrammes de flux, ERD et décisions techniques justifiées.

05

Développement & CI/CD

Git flow, Conventional Commits et GitHub Actions pour lint, tests et build automatisés.

Méthodologie & workflow

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.

Kanban GitHub Projects

Tableau Backlog → In Progress → In Review → Done. Chaque tâche correspond à une issue GitHub liée à une Pull Request.

Git Flow structuré

Branches feature/*, fix/*, chore/*, docs/* avec merge via PR sur develop, puis sur main en fin de epic.

Conventional Commits

Convention feat:, fix:, chore:, test:, docs:, ci: appliquée systématiquement pour un historique Git lisible.

GitHub Actions CI

Deux pipelines automatisés : backend (Maven + JUnit + Checkstyle) et mobile (ESLint + TypeScript + Expo Doctor).

GitHub Projects — Kanban du projet
Kanban GitHub Projects de FurniGo
Voir le Kanban sur GitHub

Pipelines CI/CD — GitHub Actions

Backend
  • Compilation Maven
  • Tests unitaires JUnit 5
  • Vérification Checkstyle

Déclenché sur push/PR — backend/**

Mobile
  • Install npm
  • ESLint + TypeScript check
  • Expo Doctor

Déclenché sur push/PR — mobile/**

Connexion Google OAuth2

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.

App MobileBouton "Se connecter avec Google"
expo-auth-sessionOuverture navigateur OAuth2
Google OAuth2Consentement utilisateur
id_token retournéCallback AuthSession
Backend valideVérification Google Token
JWT généréStocké en AsyncStorage

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.

Paiement Stripe Checkout

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.

App MobileValidation du panier
Backend APICommande PENDING créée
Stripe CheckoutSession de paiement
Webhook reçuSignature vérifiée
Commande PAIDStatut mis à jour

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

Gestion RGPD

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.

Droit à la consultation

Chaque donnée est expliquée à l'utilisateur avec sa classification : locale, stockée, anonymisée ou pseudonymisée.

Export JSON

L'utilisateur peut exporter l'ensemble de ses données personnelles dans un fichier JSON structuré.

Suppression & anonymisation

Suppression complète du compte avec anonymisation des données transactionnelles liées aux commandes.

Classification des données

Distinction claire entre données utilisateur (PII), pseudonymisées (Stripe/Orders) et anonymisées (stats).

Classification des données

Locale

Panier, favoris — stockés uniquement sur l'appareil

Stockée

Profil, email — données personnelles en base

Pseudonymisée

Commandes, paiements — liées à un ID anonyme

Anonymisée

Statistiques — aucun lien avec l'utilisateur

Profil développeur

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.