Summary
Linkr runs in two modes. The client-only mode (browser only) covers everything that can be done on local files or already-extracted data: dashboard design, statistical analyses, concept mapping, plugin authoring. The full-stack mode adds a Python backend that unlocks connection to a health data warehouse, authentication and permissions, Git versioning, and server-side code execution. A single variable, VITE_API_URL, decides the mode.
One app, two modes
The frontend code — the part of the application that runs in the browser, what you see and interact with — is identical in both modes. What changes is where storage and compute happen: in the browser, or on a backend, the server that processes requests and holds the data.
Client-only
Everything runs in the browser. No server install: you just open a web page. Ideal for exploring Linkr and working on local files on your own.
Full-stack
A Python backend joins the browser: data warehouse connection, accounts and permissions, Git versioning, server-side code execution.
A single variable decides the mode
The mode is not a setting in the interface: it is fixed when the app is built, by the VITE_API_URL variable. That is the only switch — see the local install.
VITE_API_URL=(empty)→ client-onlyVITE_API_URL=http://localhost:8000→ full-stackClient-only mode
Everything runs in the browser, thanks to tools compiled for the web:
Storage
IndexedDB + File System Access
In-browser database, and reading large local files without copying them.
Linkr can then be deployed as a static site on any hosting platform (GitLab Pages, GitHub Pages, Netlify, etc.). The public demo is one such deployment.
What you can do
- Import local files: CSV, Excel, Parquet, DuckDB.
- Design and test dashboards and widgets.
- Do concept mapping (local vocabularies to SNOMED, LOINC, RxNorm…).
- Run integrated statistical analyses.
- Write and run Python or R in the IDE, against the loaded data.
- Create and test analysis plugins.
- Save your work via ZIP export.
What requires full-stack mode
- Connecting directly to a hospital warehouse (PostgreSQL, SQL Server, Oracle…).
- Authentication, user, role and permission management.
- Git versioning on a remote repository: to share work, ZIP export remains the option.
- Installing from the catalog: the browser has no git client, so the catalog can be browsed but not installed from.
- Managed environments (
uv,renv) and server-side execution.
Full-stack mode
This mode adds a Python backend (FastAPI) that handles everything that, by nature, cannot live in the browser:
Warehouse connection
Query a DuckDB, PostgreSQL, SQL Server, Oracle… database directly, on-premise or in a private cloud.
Authentication and permissions
Users, organisations, roles, with rights at three levels: global, workspace, project.
Centralised storage
An application database (SQLite or PostgreSQL) for metadata, a data folder for large files.
Git versioning
Push, pull and branches against GitLab or GitHub repositories, built into the app.
Sharing
Projects, plugins and data shared between users in the same workspace.
Server-side execution
A terminal, Python and R notebooks on persistent processes, per-project package environments, dashboard widgets executed server-side.
Community catalog
Install and update published content (databases, projects, mappings) directly from the app.
The frontend architecture is the same: same React code, same pages. An internal abstraction routes operations either to DuckDB-WASM + IndexedDB (client-only) or to the FastAPI backend (full-stack).
A recent mode, still to be battle-tested
Full-stack mode is functional end to end: every Linkr entity (projects, databases, datasets, dashboards, mappings, pipelines…) is backed by the server, and a complete Docker deployment ships with the repo. It remains young, though: it has seen less real-world use than client-only mode. For an institutional deployment, plan a testing phase and back up the data folder.
Which features in which mode?
| Feature | Client-only | Full-stack |
|---|---|---|
| Data | ||
| Local file import (CSV, Excel, Parquet, DuckDB) | ||
| Warehouse connection (PostgreSQL, SQL Server, Oracle…) | — | |
| Data quality, ETL pipelines | ||
| Export / import ZIP | ||
| Analysis | ||
| Dashboards and widgets | ||
| Built-in analyses (Tableau descriptif, Constructeur de graphiques, Indicateur clé…) | ||
| Concept mapping | ||
| Cohort builder | on loaded files | directly on the warehouse |
| Patient-level view (individual trajectories) | on loaded files | |
| Code | ||
| IDE Python / R | Pyodide / webR, in the browser | persistent server processes |
| Terminal (Bash, Python, R) | — | |
Managed package environments (uv, renv) | — | |
| Plugin authoring and testing | ||
| Collaboration | ||
| Git versioning (push / pull / branches on a remote repository) | — | |
| Community catalog | Browse only | browse and install |
| Authentication, users, organisations, roles | — | |
| Sharing projects, plugins and data between users | — | |
Every documentation page states its scope through a Client and Backend badge placed under the summary.
Where does the data live?
This is the most concrete difference between the two modes, and the one with the most practical consequences.
Client-only
In your browser
Everything is stored in IndexedDB, specific to this browser and this profile. Nothing leaves for a server. Clearing site data wipes your Linkr content — ZIP export is your only backup.
Full-stack
On the server
Metadata goes to the application database (SQLite or PostgreSQL), large files to a dedicated folder (LINKR_DATA_DIR). That folder is what you back up, and what you find again from any browser once logged in.
In server mode the browser loads neither DuckDB-WASM nor IndexedDB: SQL queries, statistics and code all go to the backend. That is what makes it possible to work on volumes a browser could never hold.
How to choose
You want to try Linkr with nothing to install — right on the online demo.
Client-onlyYou design dashboards, run analyses or do concept mapping, on your own, on extracts.
Client-onlyYou must query your hospital warehouse directly (PostgreSQL, SQL Server, Oracle…).
Full-stackYou work as a team, with authentication, permissions and shared storage.
Full-stackYou need to version to GitLab or GitHub from within the app.
Full-stackNext steps
- Quickstart — try Linkr online in two minutes, with nothing to install.
- Local install — run Linkr on your machine, in either mode.
- Your first project — a guided end-to-end walkthrough.