pro/syncs3 app/decisions
Decisions — syncS3-app
ADR légers · ordre antéchronologique Liens : Architecture · Journal
2026-06-01 — rclone.conf isolé dans userData
Contexte : rclone utilise par défaut ~/.config/rclone/rclone.conf. L’app doit gérer ses propres credentials R2 sans polluer ni être affectée par la config rclone globale de l’utilisateur.
Décision : Écrire le fichier de config dans app.getPath('userData')/rclone.conf et passer --config <path> à tous les appels rclone.
Raison : Isolation totale, pas de collision avec d’autres remotes rclone, fichier supprimé avec l’app.
Alternatives écartées : Config globale (risque de collision), remote env vars (pas supporté partout).
Voir aussi : Architecture · Journal
2026-06-01 — Credentials : keytar avec fallback AES-256-GCM
Contexte : Les credentials R2 (accessKey, secretKey) ne doivent jamais être stockés en plaintext.
Décision : Utiliser keytar (OS keychain natif) en priorité. Si keytar indisponible (CI, Linux sans libsecret), fallback sur fichier chiffré AES-256-GCM avec clé dérivée du chemin userData.
Raison : Sécurité maximale sur les plateformes supportées ; robustesse sur les environnements sans keychain.
Alternatives écartées : electron-store chiffré (pas de keychain natif), .env plaintext (inacceptable), safeStorage Electron (API plus récente, moins mature cross-platform).
Voir aussi : Architecture · Journal
2026-06-01 — electron-vite comme build toolchain
Contexte : Besoin d’un setup Electron + React + Vite avec HMR, TypeScript strict, et builds main/preload/renderer séparés.
Décision : Utiliser electron-vite (pas un setup custom Vite+Electron).
Raison : Configuration zéro pour les 3 bundles (main SSR, preload SSR, renderer SPA), HMR intégré, externalizeDepsPlugin gère les modules natifs automatiquement.
Alternatives écartées : electron-forge (plus lourd), setup custom (maintenabilité), create-react-app + Electron (obsolète).
Voir aussi : Architecture · Journal