feat: application n8n Pilot complète (Expo managed workflow)
- Stack : Expo Router, Axios, Zustand, React Native Paper (thème sombre), date-fns - Sécurité : secrets dans Android Keystore via expo-secure-store, TLS obligatoire, headers X-N8N-API-KEY + X-App-Token injectés par intercepteur Axios - API : client.ts centralisé + workflows.ts + executions.ts (TypeScript strict) - Store : Zustand appStore avec chargement depuis secure store au démarrage - Hooks : usePolling (générique), useWorkflows, useExecutions - Composants : StatusBadge, WorkflowCard, ExecutionCard, SkeletonLoader - Screens : Dashboard, Workflows, Executions, Logs (détail exécution), Settings - Navigation Expo Router : 4 tabs + stack Logs + écran Setup initial - Docs : INSTALL.md, UPDATE.md, BACKUP.md, HAPROXY.md, SECURITY.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
# Sauvegarde de n8n Pilot
|
||||
|
||||
## Ce qu'il faut sauvegarder
|
||||
|
||||
### 1. Credentials de signature EAS (`credentials.json`)
|
||||
|
||||
**Où** : généré par EAS lors du premier build dans `~/.eas/` ou téléchargeable depuis le dashboard Expo.
|
||||
|
||||
**Pourquoi** : sans le keystore de signature, il est **impossible** de mettre à jour l'APK sur un appareil
|
||||
qui a déjà la version signée avec ce keystore. Android refuse les mises à jour avec un keystore différent.
|
||||
|
||||
**Comment sauvegarder** :
|
||||
|
||||
```bash
|
||||
# Télécharger les credentials depuis EAS
|
||||
eas credentials
|
||||
|
||||
# Choisir : Android > Keystore > Download
|
||||
# Sauvegarder le fichier .jks et les mots de passe associés
|
||||
```
|
||||
|
||||
> **Criticalité : MAXIMALE** — perte du keystore = obligation de désinstaller l'app sur tous les appareils
|
||||
> avant de pouvoir installer une nouvelle version.
|
||||
|
||||
---
|
||||
|
||||
### 2. Fichier `.env` de développement
|
||||
|
||||
**Où** : racine du projet (jamais dans git)
|
||||
|
||||
**Pourquoi** : contient l'URL de l'instance, la clé API et le token HAProxy pour l'environnement de dev.
|
||||
Sans ce fichier, les développeurs doivent reconfigurer manuellement l'environnement.
|
||||
|
||||
**Comment sauvegarder** : gestionnaire de mots de passe (Bitwarden, 1Password, Vault) avec les champs :
|
||||
- `N8N_BASE_URL`
|
||||
- `N8N_API_KEY`
|
||||
- `N8N_APP_TOKEN`
|
||||
|
||||
---
|
||||
|
||||
### 3. Configuration EAS (`eas.json`)
|
||||
|
||||
**Où** : racine du projet, **committé dans git**
|
||||
|
||||
**Pourquoi** : définit les profils de build (development, preview, production).
|
||||
|
||||
**Statut** : déjà sauvegardé via git — aucune action supplémentaire requise.
|
||||
|
||||
---
|
||||
|
||||
### 4. Données utilisateur sur l'appareil
|
||||
|
||||
Les credentials (URL, clé API, token) sont chiffrés dans l'**Android Keystore** de l'appareil.
|
||||
Ils ne sont **pas** sauvegardés dans les sauvegardes Android standard (par conception de sécurité).
|
||||
|
||||
**Conséquence** : après réinitialisation usine ou changement d'appareil, l'utilisateur doit
|
||||
reconfigurer l'app depuis l'écran Paramètres.
|
||||
|
||||
---
|
||||
|
||||
## Fréquence recommandée
|
||||
|
||||
| Élément | Fréquence | Stockage |
|
||||
|---------|-----------|----------|
|
||||
| Keystore EAS | À chaque rotation + après génération | Coffre chiffré hors-ligne |
|
||||
| `.env` dev | À chaque rotation des tokens | Gestionnaire de mots de passe |
|
||||
| Code source | En continu via git push | Gitea self-hosted |
|
||||
|
||||
---
|
||||
|
||||
## Procédure de restauration
|
||||
|
||||
### Restaurer le keystore
|
||||
|
||||
```bash
|
||||
# Uploader le keystore sauvegardé vers EAS
|
||||
eas credentials
|
||||
# Choisir : Android > Keystore > Upload existing keystore
|
||||
```
|
||||
|
||||
### Restaurer l'environnement de développement
|
||||
|
||||
```bash
|
||||
git clone https://homegit.gyozamancave.fr/billisdead/n8n-mobile.git
|
||||
cd n8n-mobile
|
||||
cp .env.example .env
|
||||
# Remplir .env depuis le gestionnaire de mots de passe
|
||||
npm install --legacy-peer-deps
|
||||
```
|
||||
Reference in New Issue
Block a user