Compare commits

..

1 Commits

Author SHA1 Message Date
fd21fa27e3 fix: sécuriser les identifiants Firebase avec variables d'environnement
- Déplacement des identifiants Firebase vers .env
- Ajout de .env au .gitignore
- Installation de expo-constants
- Validation automatique des variables au démarrage
- Mise à jour de .env.example avec EXPO_PUBLIC_ prefix
- Mise à jour du README avec instructions .env

BREAKING CHANGE: Les identifiants Firebase doivent maintenant être configurés dans .env
2025-10-23 18:22:54 +02:00
6 changed files with 55 additions and 44 deletions

View File

@@ -2,12 +2,11 @@
# Copiez ce fichier en .env et remplissez avec vos vraies valeurs
# Ne commitez JAMAIS le fichier .env dans Git !
FIREBASE_API_KEY=your_api_key_here
FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
FIREBASE_PROJECT_ID=your_project_id
FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com
FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
FIREBASE_APP_ID=your_app_id
# Expo Configuration (optionnel)
EXPO_PUBLIC_API_URL=https://api.wallettracker.com
# IMPORTANT: Les variables doivent commencer par EXPO_PUBLIC_ pour être accessibles dans l'app
EXPO_PUBLIC_FIREBASE_API_KEY=your_api_key_here
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
EXPO_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com
EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
EXPO_PUBLIC_FIREBASE_APP_ID=your_app_id
EXPO_PUBLIC_FIREBASE_MEASUREMENT_ID=your_measurement_id

1
.gitignore vendored
View File

@@ -31,6 +31,7 @@ yarn-error.*
*.pem
# local env files
.env
.env*.local
# typescript

View File

@@ -21,33 +21,32 @@
```bash
# 1. Cloner le projet
git clone https://gitea.com/alempereur/WalletTracker.git
git clone git@git.fnix.fr:alempereur/WalletTracker.git
cd WalletTracker
# 2. Installer les dépendances
npm install
# 3. Configurer Firebase
# Copiez vos identifiants dans src/config/firebase.ts
cp .env.example .env
# Éditez .env avec vos identifiants Firebase
# 4. Lancer l'application
npm start
```
**📚 Pour la documentation complète, consultez le [Wiki](../../wiki)**
**📚 Documentation complète : [Wiki](../../wiki)**
## 📖 Documentation
Toute la documentation est disponible dans le Wiki :
**[📚 Wiki complet](../../wiki)** - Toute la documentation
- **[🏠 Home](../../wiki/Home)** - Vue d'ensemble du projet
- **[⚡ Quick Start](../../wiki/Quick-Start)** - Démarrage en 5 minutes
- **[🔥 Configuration Firebase](../../wiki/Configuration-Firebase)** - Setup Firebase complet
- **[🔧 Dépannage](../../wiki/Dépannage)** - Solutions aux problèmes courants
- **[🧪 Tests](../../wiki/Tests)** - Guide de test complet
- **[🚀 Déploiement](../../wiki/Déploiement)** - Publication sur les stores
### Liens rapides
- **[🏠 Accueil](../../wiki/Home)** - Vue d'ensemble
- **[📦 Installation](../../wiki/Installation)** - Installation rapide ou complète
- **[🔥 Configuration Firebase](../../wiki/Configuration-Firebase)** - Setup Firebase
- **[🔧 Dépannage](../../wiki/Dépannage)** - Solutions aux problèmes
- **[💻 Développement](../../wiki/Développement)** - Architecture et contribution
- **[📝 Changelog](../../wiki/Changelog)** - Historique des versions
## 🛠️ Stack Technique

29
package-lock.json generated
View File

@@ -14,6 +14,7 @@
"@react-navigation/native": "^7.1.18",
"@react-navigation/stack": "^7.5.0",
"expo": "~54.0.18",
"expo-constants": "~18.0.10",
"expo-image-picker": "^17.0.8",
"expo-status-bar": "~3.0.8",
"firebase": "^12.4.0",
@@ -5875,6 +5876,20 @@
}
}
},
"node_modules/expo-constants": {
"version": "18.0.10",
"resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.10.tgz",
"integrity": "sha512-Rhtv+X974k0Cahmvx6p7ER5+pNhBC0XbP1lRviL2J1Xl4sT2FBaIuIxF/0I0CbhOsySf0ksqc5caFweAy9Ewiw==",
"license": "MIT",
"dependencies": {
"@expo/config": "~12.0.10",
"@expo/env": "~2.0.7"
},
"peerDependencies": {
"expo": "*",
"react-native": "*"
}
},
"node_modules/expo-image-loader": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-6.0.0.tgz",
@@ -6317,20 +6332,6 @@
"react-native": "*"
}
},
"node_modules/expo/node_modules/expo-constants": {
"version": "18.0.10",
"resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.10.tgz",
"integrity": "sha512-Rhtv+X974k0Cahmvx6p7ER5+pNhBC0XbP1lRviL2J1Xl4sT2FBaIuIxF/0I0CbhOsySf0ksqc5caFweAy9Ewiw==",
"license": "MIT",
"dependencies": {
"@expo/config": "~12.0.10",
"@expo/env": "~2.0.7"
},
"peerDependencies": {
"expo": "*",
"react-native": "*"
}
},
"node_modules/expo/node_modules/expo-file-system": {
"version": "19.0.17",
"resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.17.tgz",

View File

@@ -15,6 +15,7 @@
"@react-navigation/native": "^7.1.18",
"@react-navigation/stack": "^7.5.0",
"expo": "~54.0.18",
"expo-constants": "~18.0.10",
"expo-image-picker": "^17.0.8",
"expo-status-bar": "~3.0.8",
"firebase": "^12.4.0",

View File

@@ -3,19 +3,29 @@ import { getAuth } from 'firebase/auth';
import { getFirestore } from 'firebase/firestore';
import { getStorage } from 'firebase/storage';
// Configuration Firebase
// IMPORTANT: Remplacez ces valeurs par celles de votre projet Firebase
// Allez sur https://console.firebase.google.com/ > Paramètres du projet > Vos applications
// Configuration Firebase depuis les variables d'environnement
// Les identifiants sont stockés dans le fichier .env (non commité dans Git)
// Pour configurer : copiez .env.example vers .env et remplissez vos valeurs
const firebaseConfig = {
apiKey: "AIzaSyCwPKnHnU2O_ABm6gi-pnvGB8PQZ3l4y5o",
authDomain: "wallettracket-a4738.firebaseapp.com",
projectId: "wallettracket-a4738",
storageBucket: "wallettracket-a4738.firebasestorage.app",
messagingSenderId: "21315540695",
appId: "1:21315540695:web:e7bffb54e26d3290b1c292",
measurementId: "G-VXMLZBRPEK"
apiKey: process.env.EXPO_PUBLIC_FIREBASE_API_KEY,
authDomain: process.env.EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN,
projectId: process.env.EXPO_PUBLIC_FIREBASE_PROJECT_ID,
storageBucket: process.env.EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET,
messagingSenderId: process.env.EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,
appId: process.env.EXPO_PUBLIC_FIREBASE_APP_ID,
measurementId: process.env.EXPO_PUBLIC_FIREBASE_MEASUREMENT_ID
};
// Vérification que toutes les variables sont définies
if (!firebaseConfig.apiKey || !firebaseConfig.projectId) {
throw new Error(
'❌ Configuration Firebase manquante!\n\n' +
'Veuillez créer un fichier .env à la racine du projet avec vos identifiants Firebase.\n' +
'Copiez .env.example vers .env et remplissez les valeurs.\n\n' +
'Consultez la documentation: Configuration-Firebase.md'
);
}
// Initialisation de Firebase
const app = initializeApp(firebaseConfig);