En résumé
Linkr fonctionne selon deux modes. Le mode client-only (navigateur seul) couvre tout ce qui peut être fait sur des fichiers locaux ou des données déjà extraites : design de tableaux de bord, analyses statistiques, concept mapping, conception de protocole, création de plugins. Le mode full-stack, en cours de développement, ajoute un backend Python qui débloque la connexion à un entrepôt de données de santé, l’authentification, le partage et le versioning Git côté serveur.
Une application, deux modes
Linkr peut être déployé de deux manières différentes selon le cas d’usage. Le code frontend (la partie de l’application qui s’exécute dans le navigateur, ce que l’on voit et avec quoi on interagit) est identique dans les deux modes ; ce sont les opérations de stockage et de requêtage qui basculent vers le navigateur ou vers le backend (le serveur distant qui traite les requêtes et garde les données, invisible pour l’utilisateur).
Mode client-only (navigateur seul)
Recommandé pour démarrer et pour beaucoup d'usages individuels
Aucune installation serveur, aucune infrastructure. Il suffit d’ouvrir une page web. Idéal pour explorer Linkr et travailler sur des fichiers locaux.
Tout tourne dans le navigateur :
- SQL : DuckDB-WASM (moteur SQL analytique compilé en WebAssembly).
- Python : Pyodide (distribution Python compilée pour le navigateur).
- R : webR (R compilé en WebAssembly).
- Stockage : IndexedDB (base de données embarquée dans le navigateur), plus File System Access API pour lire de gros fichiers locaux sans les recopier.
Linkr est alors déployable comme un site statique sur n’importe quel hébergement (GitLab Pages, GitHub Pages, Netlify, etc.). La démo publique en est un exemple.
Ce que vous pouvez faire en client-only :
- Importer des fichiers locaux : CSV, Excel, Parquet, DuckDB.
- Concevoir et tester des tableaux de bord et des widgets.
- Faire de l’alignement de concepts (mise en correspondance de vocabulaires locaux avec SNOMED, LOINC, RxNorm…).
- Lancer des analyses statistiques intégrées (Table 1, Key Indicator, Plot Builder).
- Écrire et exécuter du Python ou du R dans l’IDE intégré, sur les données chargées.
- Créer et tester des plugins d’analyse.
- Sauvegarder son travail via l’export ZIP.
Ce que le mode client-only ne permet pas :
- Se connecter directement à un entrepôt de données hospitalier (PostgreSQL, SQL Server, Oracle…). Cela nécessite le mode serveur.
- L’authentification, la gestion d’utilisateurs et de permissions.
- Le versioning Git (push / pull / branches sur un dépôt distant) : pour partager, il reste l’export ZIP.
Mode full-stack (avec backend FastAPI)
En cours de développement
Le backend FastAPI est en développement actif. La documentation de ce mode sera complétée au fil des livraisons. Pour un usage en production aujourd’hui, le mode client-only est la voie recommandée.
Ce mode ajoute un backend Python (FastAPI) qui prend en charge tout ce qui ne peut pas, par nature, vivre dans le navigateur :
- Connexion aux entrepôts de données : interroger directement une base DuckDB, PostgreSQL, SQL Server, Oracle, etc., qu’elle soit sur site ou dans un cloud privé.
- Authentification et gestion d’utilisateurs, organisations, permissions.
- Stockage centralisé persistant (PostgreSQL pour la métadonnée applicative).
- Versioning Git côté serveur : push / pull / branches sur des dépôts GitLab ou GitHub, intégré à l’application.
- Partage de projets, plugins et données entre utilisateurs d’un même workspace.
- Exécution serveur de scripts et de plugins lourds (gros volumes, calculs longs, accès à des ressources serveur ou GPU).
L’architecture frontend reste la même : le même code React, les mêmes pages. Une abstraction interne (queryDataSource(), interfaces de stockage) fait pointer les opérations soit vers DuckDB-WASM + IndexedDB (client-only), soit vers le backend FastAPI (full-stack).
Quelles fonctionnalités dans quel mode ?
| Fonctionnalité | Client-only | Full-stack |
|---|---|---|
| Import de fichiers locaux (CSV, Excel, Parquet, DuckDB) | ✅ | ✅ |
| Connexion à un entrepôt (DuckDB, PostgreSQL, SQL Server, Oracle…) | — | ✅ |
| Tableaux de bord et widgets | ✅ | ✅ |
| Analyses intégrées (Table 1, Plot Builder, Key Indicator) | ✅ | ✅ |
| Alignement de concepts | ✅ | ✅ |
| Cohort builder | ✅ (sur fichiers chargés) | ✅ (directement sur l’entrepôt) |
| Vue patient-level (trajectoires individuelles) | ✅ (sur fichiers chargés) | ✅ |
| IDE Python / R dans le navigateur (Pyodide / webR) | ✅ | ✅ |
| Exécution serveur (gros volumes, GPU…) | — | ✅ |
| Création et test de plugins | ✅ | ✅ |
| Plugins exécutés côté serveur | — | ✅ |
| Historique local d’un projet | — | ✅ |
| Versioning Git (push / pull / branches sur un dépôt distant) | — | ✅ |
| Export / import ZIP | ✅ | ✅ |
| Authentification, utilisateurs, organisations | — | ✅ |
| Partage de projets, plugins et données entre utilisateurs | — | ✅ |
Au fil du développement du backend, des fonctionnalités supplémentaires apparaîtront en mode full-stack. Chaque page de documentation précise son périmètre via un badge Client-only, Les deux modes ou Full-stack uniquement.
Comment choisir ?
- Vous voulez essayer Linkr sans rien installer → mode client-only, directement sur la démo en ligne.
- Vous concevez des tableaux de bord, vous avez besoin de faire des analyses statistiques ou vous voulez faire de l’alignement de concepts → mode client-only suffit.
- Vous devez interroger directement l’entrepôt de votre hôpital (DuckDB, PostgreSQL, SQL Server…) → mode full-stack (à suivre, au fil du développement).
- Vous déployez Linkr à l’échelle d’un service ou d’une institution avec plusieurs utilisateurs, de l’authentification et du stockage centralisé → mode full-stack.
Pour aller plus loin
- Démarrage rapide — essayer Linkr en ligne en 2 minutes.
- Installation locale — lancer Linkr sur sa machine.