📝 Note

pro/syncs3 app/decisions

electronrclonekeytarcredentialsbuild-toolchain

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