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, alignement de concepts, création de plugins. Le mode full-stack ajoute un backend Python qui débloque la connexion à un entrepôt de données de santé, l’authentification et les permissions, le versioning Git, et l’exécution du code côté serveur. Une seule variable, VITE_API_URL, décide du mode.
Une application, deux modes
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 qui change, c’est où ont lieu le stockage et les calculs : dans le navigateur, ou sur un backend, le serveur qui traite les requêtes et garde les données.
Client-only
Tout tourne dans le navigateur. Aucune installation serveur : il suffit d’ouvrir une page web. Idéal pour explorer Linkr et travailler seul·e sur des fichiers locaux.
Full-stack
Un backend Python s’ajoute au navigateur : connexion à l’entrepôt de données, comptes et permissions, versioning Git, exécution du code sur le serveur.
Une seule variable décide du mode
Le mode n’est pas un réglage dans l’interface : il est fixé au moment où l’application est construite, par la variable VITE_API_URL. C’est la seule bascule — voir l’installation locale.
VITE_API_URL=(vide)→ client-onlyVITE_API_URL=http://localhost:8000→ full-stackLe mode client-only
Tout tourne dans le navigateur, grâce à des outils compilés pour le web :
Stockage
IndexedDB + File System Access
Base de données embarquée dans le navigateur, et lecture 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
- Importer des fichiers locaux : CSV, Excel, Parquet, DuckDB.
- Concevoir et tester des tableaux de bord et des widgets.
- Faire de l’alignement de concepts (vocabulaires locaux vers SNOMED, LOINC, RxNorm…).
- Lancer des analyses statistiques intégrées.
- Écrire et exécuter du Python ou du R dans l’IDE, sur les données chargées.
- Créer et tester des plugins d’analyse.
- Sauvegarder son travail via l’export ZIP.
Ce qui demande le mode full-stack
- Se connecter directement à un entrepôt hospitalier (PostgreSQL, SQL Server, Oracle…).
- L’authentification, la gestion d’utilisateurs, de rôles et de permissions.
- Le versioning Git sur un dépôt distant : pour partager, il reste l’export ZIP.
- L’installation depuis le catalogue : le navigateur n’a pas de client git, le catalogue s’y parcourt mais ne s’y installe pas.
- Les environnements gérés (
uv,renv) et l’exécution sur le serveur.
Le mode full-stack
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
Interroger directement une base DuckDB, PostgreSQL, SQL Server, Oracle, etc., sur site ou dans un cloud privé.
Authentification et permissions
Utilisateurs, organisations, rôles, avec des droits à trois niveaux : global, workspace, projet.
Stockage centralisé
Une base applicative (SQLite ou PostgreSQL) pour les métadonnées, un dossier de données pour les fichiers volumineux.
Versioning Git
Push, pull et branches sur des dépôts GitLab ou GitHub, intégrés à l'application.
Partage
Projets, plugins et données partagés entre les utilisateurs d'un même workspace.
Exécution serveur
Terminal, notebooks Python et R sur des processus persistants, environnements de paquets par projet, widgets exécutés côté serveur.
Catalogue communautaire
Installer et mettre à jour des contenus publiés (bases, projets, alignements) directement depuis l'application.
L’architecture frontend reste la même : le même code React, les mêmes pages. Une abstraction interne fait pointer les opérations soit vers DuckDB-WASM + IndexedDB (client-only), soit vers le backend FastAPI (full-stack).
Un mode récent, à éprouver
Le mode full-stack est fonctionnel de bout en bout : toutes les entités de Linkr (projets, bases, jeux de données, tableaux de bord, alignements, pipelines…) sont portées côté serveur, et un déploiement Docker complet est fourni. Il reste néanmoins jeune : il a été moins éprouvé en conditions réelles que le mode client-only. Pour un déploiement institutionnel, prévoyez une phase de test et des sauvegardes du dossier de données.
Quelles fonctionnalités dans quel mode ?
| Fonctionnalité | Client-only | Full-stack |
|---|---|---|
| Données | ||
| Import de fichiers locaux (CSV, Excel, Parquet, DuckDB) | ||
| Connexion à un entrepôt (PostgreSQL, SQL Server, Oracle…) | — | |
| Qualité des données, pipelines ETL | ||
| Export / import ZIP | ||
| Analyse | ||
| Tableaux de bord et widgets | ||
| Analyses intégrées (Tableau descriptif, Constructeur de graphiques, Indicateur clé…) | ||
| Alignement de concepts | ||
| Cohort builder | sur fichiers chargés | directement sur l'entrepôt |
| Vue patient-level (trajectoires individuelles) | sur fichiers chargés | |
| Code | ||
| IDE Python / R | Pyodide / webR, dans le navigateur | processus serveur persistants |
| Terminal (Bash, Python, R) | — | |
Environnements de paquets gérés (uv, renv) | — | |
| Création et test de plugins | ||
| Collaboration | ||
| Versioning Git (push / pull / branches sur un dépôt distant) | — | |
| Catalogue communautaire | Parcourir seulement | parcourir et installer |
| Authentification, utilisateurs, organisations, rôles | — | |
| Partage de projets, plugins et données entre utilisateurs | — | |
Chaque page de documentation précise son périmètre via un badge Client et Backend placé sous le résumé.
Où vivent les données ?
C’est la différence la plus concrète entre les deux modes, et celle qui a le plus de conséquences pratiques.
Client-only
Dans votre navigateur
Tout est stocké dans IndexedDB, propre à ce navigateur et à ce profil. Rien ne part vers un serveur. Vider les données de site efface le contenu de Linkr — l’export ZIP est votre seule sauvegarde.
Full-stack
Sur le serveur
Les métadonnées vont dans la base applicative (SQLite ou PostgreSQL), les fichiers volumineux dans un dossier dédié (LINKR_DATA_DIR). C’est ce dossier que l’on sauvegarde, et que l’on retrouve depuis n’importe quel navigateur après connexion.
En mode serveur, le navigateur ne charge ni DuckDB-WASM ni IndexedDB : les requêtes SQL, les statistiques et le code partent au backend. C’est ce qui permet de travailler sur des volumes qu’un navigateur ne pourrait pas tenir.
Comment choisir ?
Vous voulez essayer Linkr sans rien installer — directement sur la démo en ligne.
Client-onlyVous concevez des tableaux de bord, faites des analyses ou de l’alignement de concepts, seul·e, sur des extractions.
Client-onlyVous devez interroger directement l’entrepôt de votre hôpital (PostgreSQL, SQL Server, Oracle…).
Full-stackVous travaillez à plusieurs, avec authentification, permissions et stockage partagé.
Full-stackVous avez besoin de versionner sur GitLab ou GitHub depuis l’application.
Full-stackPour aller plus loin
- Démarrage rapide — essayer Linkr en ligne en deux minutes, sans rien installer.
- Installation locale — lancer Linkr sur sa machine, dans l’un ou l’autre mode.
- Votre premier projet — un parcours guidé de bout en bout.