Add deployment guide, contributing guidelines and changelog
- Add DEPLOYMENT.md with complete deployment instructions - Add CONTRIBUTING.md for contributors - Add CHANGELOG.md to track versions - Add .env.example for environment variables
This commit is contained in:
341
DEPLOYMENT.md
Normal file
341
DEPLOYMENT.md
Normal file
@@ -0,0 +1,341 @@
|
||||
# 🚀 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 ! 🎉**
|
||||
Reference in New Issue
Block a user