- Add DEPLOYMENT.md with complete deployment instructions - Add CONTRIBUTING.md for contributors - Add CHANGELOG.md to track versions - Add .env.example for environment variables
342 lines
7.1 KiB
Markdown
342 lines
7.1 KiB
Markdown
# 🚀 Guide de déploiement - WalletTracker
|
|
|
|
Ce guide explique comment déployer WalletTracker en production.
|
|
|
|
## Prérequis
|
|
|
|
- Compte Expo (gratuit) : https://expo.dev/
|
|
- EAS CLI installé : `npm install -g eas-cli`
|
|
- Compte développeur Apple (pour iOS) ou Google Play (pour Android)
|
|
|
|
## Étape 1 : Configuration EAS
|
|
|
|
### Installer EAS CLI
|
|
|
|
```bash
|
|
npm install -g eas-cli
|
|
```
|
|
|
|
### Se connecter à Expo
|
|
|
|
```bash
|
|
eas login
|
|
```
|
|
|
|
### Initialiser EAS Build
|
|
|
|
```bash
|
|
eas build:configure
|
|
```
|
|
|
|
Cela créera un fichier `eas.json` avec la configuration de build.
|
|
|
|
## Étape 2 : Configurer les variables d'environnement
|
|
|
|
### Pour la production
|
|
|
|
Créez un fichier `.env.production` :
|
|
|
|
```env
|
|
FIREBASE_API_KEY=votre_clé_production
|
|
FIREBASE_AUTH_DOMAIN=votre_domaine_production
|
|
FIREBASE_PROJECT_ID=votre_projet_production
|
|
FIREBASE_STORAGE_BUCKET=votre_bucket_production
|
|
FIREBASE_MESSAGING_SENDER_ID=votre_sender_id
|
|
FIREBASE_APP_ID=votre_app_id
|
|
```
|
|
|
|
### Configurer les secrets EAS
|
|
|
|
```bash
|
|
eas secret:create --scope project --name FIREBASE_API_KEY --value "votre_clé"
|
|
eas secret:create --scope project --name FIREBASE_AUTH_DOMAIN --value "votre_domaine"
|
|
# ... répétez pour toutes les variables
|
|
```
|
|
|
|
## Étape 3 : Build pour iOS
|
|
|
|
### Configuration
|
|
|
|
1. Assurez-vous d'avoir un compte Apple Developer
|
|
2. Configurez votre Bundle Identifier dans `app.json`
|
|
|
|
### Lancer le build
|
|
|
|
```bash
|
|
# Build de développement
|
|
eas build --platform ios --profile development
|
|
|
|
# Build de preview (TestFlight)
|
|
eas build --platform ios --profile preview
|
|
|
|
# Build de production
|
|
eas build --platform ios --profile production
|
|
```
|
|
|
|
### Soumettre à l'App Store
|
|
|
|
```bash
|
|
eas submit --platform ios
|
|
```
|
|
|
|
## Étape 4 : Build pour Android
|
|
|
|
### Configuration
|
|
|
|
1. Configurez votre package name dans `app.json`
|
|
2. Générez un keystore (EAS le fait automatiquement)
|
|
|
|
### Lancer le build
|
|
|
|
```bash
|
|
# Build de développement
|
|
eas build --platform android --profile development
|
|
|
|
# Build de preview (Internal Testing)
|
|
eas build --platform android --profile preview
|
|
|
|
# Build de production
|
|
eas build --platform android --profile production
|
|
```
|
|
|
|
### Soumettre à Google Play
|
|
|
|
```bash
|
|
eas submit --platform android
|
|
```
|
|
|
|
## Étape 5 : Configuration eas.json
|
|
|
|
Exemple de configuration complète :
|
|
|
|
```json
|
|
{
|
|
"cli": {
|
|
"version": ">= 5.0.0"
|
|
},
|
|
"build": {
|
|
"development": {
|
|
"developmentClient": true,
|
|
"distribution": "internal",
|
|
"ios": {
|
|
"simulator": true
|
|
}
|
|
},
|
|
"preview": {
|
|
"distribution": "internal",
|
|
"ios": {
|
|
"simulator": false
|
|
}
|
|
},
|
|
"production": {
|
|
"env": {
|
|
"FIREBASE_API_KEY": "$FIREBASE_API_KEY",
|
|
"FIREBASE_AUTH_DOMAIN": "$FIREBASE_AUTH_DOMAIN",
|
|
"FIREBASE_PROJECT_ID": "$FIREBASE_PROJECT_ID",
|
|
"FIREBASE_STORAGE_BUCKET": "$FIREBASE_STORAGE_BUCKET",
|
|
"FIREBASE_MESSAGING_SENDER_ID": "$FIREBASE_MESSAGING_SENDER_ID",
|
|
"FIREBASE_APP_ID": "$FIREBASE_APP_ID"
|
|
}
|
|
}
|
|
},
|
|
"submit": {
|
|
"production": {
|
|
"ios": {
|
|
"appleId": "votre@email.com",
|
|
"ascAppId": "1234567890",
|
|
"appleTeamId": "ABCD123456"
|
|
},
|
|
"android": {
|
|
"serviceAccountKeyPath": "./google-service-account.json",
|
|
"track": "production"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Étape 6 : Over-The-Air (OTA) Updates
|
|
|
|
EAS Update permet de déployer des mises à jour sans passer par les stores.
|
|
|
|
### Configurer EAS Update
|
|
|
|
```bash
|
|
eas update:configure
|
|
```
|
|
|
|
### Publier une mise à jour
|
|
|
|
```bash
|
|
# Pour la branche de production
|
|
eas update --branch production --message "Fix bug XYZ"
|
|
|
|
# Pour la branche de preview
|
|
eas update --branch preview --message "New feature ABC"
|
|
```
|
|
|
|
## Étape 7 : Monitoring et Analytics
|
|
|
|
### Sentry (erreurs)
|
|
|
|
1. Créez un compte sur https://sentry.io/
|
|
2. Installez le SDK :
|
|
|
|
```bash
|
|
npm install @sentry/react-native
|
|
```
|
|
|
|
3. Configurez dans `App.tsx` :
|
|
|
|
```typescript
|
|
import * as Sentry from '@sentry/react-native';
|
|
|
|
Sentry.init({
|
|
dsn: 'votre_dsn_sentry',
|
|
enableInExpoDevelopment: false,
|
|
debug: false
|
|
});
|
|
```
|
|
|
|
### Firebase Analytics
|
|
|
|
Déjà inclus avec Firebase. Activez-le dans la console Firebase.
|
|
|
|
## Étape 8 : Checklist avant déploiement
|
|
|
|
### Code
|
|
|
|
- [ ] Tous les tests passent
|
|
- [ ] Pas de console.log en production
|
|
- [ ] Variables d'environnement configurées
|
|
- [ ] Version incrémentée dans `app.json`
|
|
- [ ] Changelog mis à jour
|
|
|
|
### Firebase
|
|
|
|
- [ ] Règles Firestore en mode production
|
|
- [ ] Règles Storage configurées
|
|
- [ ] Quotas vérifiés
|
|
- [ ] Backup configuré
|
|
- [ ] Monitoring activé
|
|
|
|
### App Stores
|
|
|
|
- [ ] Screenshots préparés
|
|
- [ ] Description de l'app rédigée
|
|
- [ ] Politique de confidentialité publiée
|
|
- [ ] Conditions d'utilisation publiées
|
|
- [ ] Icône et splash screen finalisés
|
|
|
|
### Sécurité
|
|
|
|
- [ ] HTTPS uniquement
|
|
- [ ] Pas de secrets hardcodés
|
|
- [ ] Validation côté serveur (règles Firestore)
|
|
- [ ] Rate limiting configuré
|
|
- [ ] Authentification sécurisée
|
|
|
|
## Étape 9 : Déploiement progressif
|
|
|
|
### Phase 1 : Beta Testing (1-2 semaines)
|
|
|
|
```bash
|
|
# Build preview
|
|
eas build --platform all --profile preview
|
|
|
|
# Inviter des beta testeurs
|
|
eas build:list
|
|
```
|
|
|
|
### Phase 2 : Soft Launch (1 mois)
|
|
|
|
- Déployer dans un pays test
|
|
- Monitorer les métriques
|
|
- Corriger les bugs critiques
|
|
|
|
### Phase 3 : Production
|
|
|
|
```bash
|
|
# Build production
|
|
eas build --platform all --profile production
|
|
|
|
# Soumettre aux stores
|
|
eas submit --platform all
|
|
```
|
|
|
|
## Étape 10 : Post-déploiement
|
|
|
|
### Monitoring
|
|
|
|
- Surveiller les crashs (Sentry)
|
|
- Analyser les métriques (Firebase Analytics)
|
|
- Vérifier les performances (Firebase Performance)
|
|
- Lire les reviews utilisateurs
|
|
|
|
### Mises à jour
|
|
|
|
```bash
|
|
# Mise à jour mineure (bug fixes)
|
|
eas update --branch production --message "Bug fixes"
|
|
|
|
# Mise à jour majeure (nouvelles fonctionnalités)
|
|
# Nécessite un nouveau build
|
|
eas build --platform all --profile production
|
|
```
|
|
|
|
## 📊 Métriques à surveiller
|
|
|
|
- **DAU/MAU** : Utilisateurs actifs quotidiens/mensuels
|
|
- **Retention** : Taux de rétention à J1, J7, J30
|
|
- **Crash rate** : Taux de crash < 1%
|
|
- **Performance** : Temps de chargement < 3s
|
|
- **Engagement** : Nombre de transactions par utilisateur
|
|
|
|
## 🔧 Dépannage
|
|
|
|
### Build échoue
|
|
|
|
```bash
|
|
# Nettoyer le cache
|
|
eas build:cancel
|
|
eas build --clear-cache --platform all
|
|
```
|
|
|
|
### Update ne fonctionne pas
|
|
|
|
```bash
|
|
# Vérifier la configuration
|
|
eas update:list --branch production
|
|
```
|
|
|
|
### Problèmes de certificats iOS
|
|
|
|
```bash
|
|
# Régénérer les certificats
|
|
eas credentials
|
|
```
|
|
|
|
## 💰 Coûts estimés
|
|
|
|
### Gratuit
|
|
- Expo (plan gratuit) : Builds limités
|
|
- Firebase (plan Spark) : Limité mais suffisant pour débuter
|
|
|
|
### Payant
|
|
- Apple Developer : 99€/an
|
|
- Google Play : 25€ (une fois)
|
|
- Expo (plan Production) : ~29$/mois (builds illimités)
|
|
- Firebase (plan Blaze) : Pay-as-you-go
|
|
|
|
## 📚 Ressources
|
|
|
|
- [EAS Build Documentation](https://docs.expo.dev/build/introduction/)
|
|
- [EAS Submit Documentation](https://docs.expo.dev/submit/introduction/)
|
|
- [EAS Update Documentation](https://docs.expo.dev/eas-update/introduction/)
|
|
- [App Store Guidelines](https://developer.apple.com/app-store/review/guidelines/)
|
|
- [Google Play Guidelines](https://play.google.com/about/developer-content-policy/)
|
|
|
|
---
|
|
|
|
**Bon déploiement ! 🎉**
|