README file from
GithubRedsmite Sync — Plugin Obsidian
Synchronise automatiquement vos comptes-rendus (CRs) Redsmite dans votre vault Obsidian.
Fonctionnalités
- Sync automatique — poll périodique (configurable, 1-60 min) des CRs en attente
- Smart placement — le plugin propose un dossier basé sur le nom du client, et apprend vos préférences (après 2 confirmations identiques, le placement devient automatique)
- Idempotence — un CR déjà présent dans le vault n'est pas re-téléchargé
- Desktop only — fonctionne sur Windows, macOS, Linux (pas mobile)
Installation
Le plugin est disponible sur le Community Plugin Store d'Obsidian :
- Ouvrir Obsidian → Paramètres → Plugins tiers
- Désactiver le "Mode restreint" si ce n'est pas déjà fait
- Cliquer Parcourir → rechercher "Redsmite"
- Cliquer Installer → Activer
Les mises à jour sont automatiques via Obsidian.
Configuration
Après activation, aller dans Paramètres → Redsmite Sync :
| Paramètre | Description | Défaut |
|---|---|---|
| Token API | Token d'authentification Redsmite (fourni par votre administrateur) | — |
| Dossier cible | Dossier par défaut pour les CRs sans correspondance client | Redsmite |
| Intervalle de sync | Fréquence de vérification des nouveaux CRs (minutes) | 5 min |
Le bouton Tester la connexion vérifie que le token est valide.
Les correspondances client-dossier sont apprises automatiquement : après 2 placements confirmés dans le même dossier pour un client, les CRs suivants y sont classés sans intervention.
Architecture
Plugin (desktop, TypeScript)
↓ poll toutes les N minutes
Supabase Edge Function /obsidian-pending
↓ retourne les CRs non synchronisés
Plugin : smart placement (propose dossier → confirmation utilisateur)
↓
Plugin : télécharge le markdown via /obsidian-cr-md/:id
↓ écrit le fichier .md dans le vault
Supabase Edge Function /obsidian-ack/:id
↓ marque le CR comme synchronisé (obsidian_synced = true)
Développement
Prérequis
- Node.js 18+
- npm
Commandes
npm install # installer les dépendances
npm run build # compiler main.ts → main.js (production)
npm run dev # compiler en mode watch (développement)
Structure
main.ts # Plugin principal (polling, sync, smart placement)
settings.ts # Types et valeurs par défaut des settings
settings-tab.ts # UI de configuration dans Obsidian
smart-placement-modal.ts # Modale de validation du dossier cible
folder-suggest-modal.ts # Sélecteur de dossier fuzzy
manifest.json # Métadonnées du plugin (id, version, compatibilité)
esbuild.config.mjs # Config de build esbuild
Publier une mise à jour
- Modifier le code
- Bumper la version dans
manifest.jsonETpackage.json - Build :
npm run build - Commit + push
- Créer une GitHub Release avec le tag = version (ex:
1.1.0) - Attacher
main.jsetmanifest.jsoncomme assets de la release - Les utilisateurs BRAT reçoivent la mise à jour automatiquement
Backend requis
Ce plugin nécessite les Edge Functions Supabase suivantes déployées en production :
obsidian-pending— GET, retourne les CRs en attente de syncobsidian-ack— POST, marque un CR comme synchroniséobsidian-cr-md— GET, retourne le contenu markdown d'un CR
Et la migration api_tokens_obsidian appliquée (table api_tokens + colonne obsidian_synced sur meeting_notes).
Licence
Propriétaire — Redsmite SAS