Une application mobile React Native complète pour la vente de montres de luxe avec authentification, paiements sécurisés, et dashboard administrateur.
- ✅ Inscription/Connexion avec Supabase Auth
- ✅ Séparation des rôles Admin/Utilisateur
- ✅ Gestion des profils avec photo, téléphone, adresse
- ✅ Système de sessions persistantes avec cookies
- ✅ Protection des routes selon les rôles
- ✅ 6 Catégories : Classique, Sport, Luxe, Vintage, Femme, Édition Limitée
- ✅ Cartes produits animées avec flip 3D et vidéos
- ✅ Système de favoris synchronisé avec base de données
- ✅ Panier persistant avec gestion des quantités
- ✅ Recherche et filtres par catégorie
- ✅ Intégration Stripe complète
- ✅ Paiements sécurisés avec 3D Secure
- ✅ Suivi des transactions et historique
- ✅ Gestion des erreurs et confirmations
- ✅ Statistiques en temps réel (ventes, utilisateurs, produits)
- ✅ Graphiques animés avec Victory Native
- ✅ CRUD complet pour produits et utilisateurs
- ✅ Gestion des commandes et statuts
- ✅ Système de messagerie bidirectionnel
- ✅ Messages utilisateur-admin en temps réel
- ✅ Interface de chat intuitive
- ✅ Notifications de nouveaux messages
- ✅ Historique des conversations
- ✅ Historique des commandes par utilisateur
- ✅ Statuts de livraison (en cours, expédié, livré)
- ✅ Numéros de suivi avec liens transporteurs
- ✅ Notifications email (à configurer)
- Frontend : React Native (Expo 53)
- Navigation : Expo Router
- Base de données : Supabase (PostgreSQL)
- Authentification : Supabase Auth
- Paiements : Stripe
- État global : React Context API
- Stockage local : AsyncStorage
- Graphiques : Victory Native
MonAppMontres/
├── app/ # Pages et navigation
│ ├── (tabs)/ # Onglets principaux
│ │ ├── index.tsx # Accueil
│ │ ├── products.tsx # Catalogue
│ │ ├── favorites.tsx # Favoris
│ │ ├── cart.tsx # Panier
│ │ ├── profile.tsx # Profil utilisateur
│ │ ├── auth.tsx # Authentification
│ │ └── admin.tsx # Dashboard admin
│ ├── category/ # Pages par catégorie
│ └── _layout.tsx # Layout principal
├── components/ # Composants réutilisables
│ ├── FlipCard.tsx # Carte produit animée
│ ├── PaymentForm.tsx # Formulaire de paiement
│ └── ui/ # Composants UI
├── contexts/ # Contextes React
│ └── AppContext.tsx # État global
├── lib/ # Utilitaires
│ ├── supabase.js # Configuration Supabase
│ ├── stripe.ts # Configuration Stripe
│ └── config.ts # Variables d'environnement
├── scripts/ # Scripts SQL
│ └── complete_database_setup.sql
└── supabase/ # Fonctions Edge
└── functions/
# Node.js 18+
node --version
# Expo CLI
npm install -g @expo/cli
# Supabase CLI (optionnel)
npm install -g supabase# Cloner le projet
git clone <votre-repo>
cd MonAppMontres
# Installer les dépendances
npm installCréez un fichier .env à la racine :
# Stripe Configuration
STRIPE_PUBLISHABLE_KEY=pk_test_VOTRE_CLE_PUBLIQUE_ICI
STRIPE_SECRET_KEY=sk_test_VOTRE_CLE_SECRETE_ICI
# Supabase Configuration
SUPABASE_URL=https://votre-projet.supabase.co
SUPABASE_ANON_KEY=votre_cle_anon
# App Configuration
APP_NAME=MonAppMontres
APP_VERSION=1.0.0- Créez un projet sur Supabase
- Exécutez le script
scripts/complete_database_setup.sqldans l'éditeur SQL - Configurez l'authentification (Email/Password)
- Activez RLS (Row Level Security)
- Créez un compte sur Stripe
- Récupérez vos clés API (Dashboard > Developers > API keys)
- Configurez les webhooks pour les paiements
- Déployez les fonctions Edge Supabase pour les PaymentIntents
# Démarrer le serveur de développement
npm start
# Ou spécifiquement pour une plateforme
npm run android
npm run ios
npm run web- users : Utilisateurs avec rôles admin/user
- products : Catalogue de montres avec catégories
- orders : Commandes avec statuts et paiements
- favorites : Favoris utilisateurs
- messages : Communication admin-user
- cart_items : Panier persistant (optionnel)
- Politiques de sécurité au niveau des lignes
- Accès restreint selon les rôles
- Chiffrement des données sensibles
- Synchronisation entre local et cloud
- Indicateurs visuels sur les cartes
- Gestion offline avec sync ultérieure
- Formulaires sécurisés avec 3D Secure
- Gestion des erreurs et retry automatique
- Historique des transactions
- Statistiques en temps réel
- Graphiques interactifs et animés
- Export des données (à implémenter)
- Interface de chat moderne
- Notifications push (à configurer)
- Historique des conversations
- Couleur principale : Or (#d4af37)
- Design moderne avec animations fluides
- Interface responsive multi-plateforme
- Composants réutilisables avec théming
- Cartes flip 3D pour les produits
- Transitions fluides entre les pages
- Micro-interactions pour les boutons
- Graphiques animés dans le dashboard
- Admin : admin123@gmail.com
- Utilisateur : Créez via l'inscription
- Succès : 4242 4242 4242 4242
- Échec : 4000 0000 0000 0002
- 3D Secure : 4000 0025 0000 3155
# Logs détaillés
npx expo start --clear
# Débogage React Native
npx react-native log-android
npx react-native log-ios# Android
eas build --platform android
# iOS
eas build --platform ios
# Web
npm run web- Remplacez les clés de test par les clés de production
- Configurez les webhooks Stripe
- Activez les notifications push
- ✅ Authentification sécurisée avec Supabase
- ✅ Chiffrement des données sensibles
- ✅ Validation côté serveur
- ✅ Protection CSRF et XSS
- ✅ Gestion sécurisée des sessions
- ✅ Clés API non exposées côté client
- Ne jamais exposer les clés secrètes Stripe
- Valider toutes les données côté serveur
- Utiliser HTTPS en production
- Configurer les CORS correctement
- Nombre d'utilisateurs actifs
- Ventes par période
- Produits les plus populaires
- Taux de conversion panier
- Messages support
- Supabase Analytics pour la base de données
- Stripe Dashboard pour les paiements
- Expo Analytics pour l'usage mobile
- Sentry pour le monitoring d'erreurs
- Fork le projet
- Créez une branche feature (
git checkout -b feature/nouvelle-fonctionnalite) - Committez vos changements (
git commit -m 'Ajout nouvelle fonctionnalité') - Push vers la branche (
git push origin feature/nouvelle-fonctionnalite) - Ouvrez une Pull Request
- ESLint pour la qualité du code
- Prettier pour le formatage
- TypeScript pour la sécurité des types
- Commentaires en français
- Email : support@monappmontres.com
- Documentation : [Wiki du projet]
- Issues : [GitHub Issues]
Q : Comment réinitialiser le mot de passe admin ? R : Utilisez la fonction de récupération de mot de passe ou modifiez directement en base.
Q : Les paiements ne fonctionnent pas ? R : Vérifiez vos clés Stripe et la configuration des webhooks.
Q : Comment ajouter une nouvelle catégorie ? R : Ajoutez la catégorie dans la base de données et mettez à jour les composants.
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
- Supabase pour la base de données et l'authentification
- Stripe pour les paiements sécurisés
- Expo pour le framework de développement
- Pexels pour les images et vidéos de démonstration
Version : 1.0.0
Dernière mise à jour : Décembre 2024
Statut : ✅ Production Ready