En résumé
En mode client-only, il suffit de Node.js 20+ et de trois commandes pour avoir une instance Linkr locale fonctionnelle. Aucun backend, aucune base de données à configurer. Vous pouvez ensuite publier le résultat comme site statique sur GitLab Pages, GitHub Pages ou tout autre hébergement.
Client-only
L’installation du backend full-stack sera documentée progressivement.Prérequis
- Node.js 20+ et npm. Installation via nodejs.org ou via un gestionnaire de version comme nvm.
- Git pour cloner le dépôt.
- Environ 1 Go d’espace disque (principalement pour
node_modules). - Un navigateur moderne : Firefox, Safari, Chrome ou Edge récents.
Pourquoi Node.js alors que tout tourne dans le navigateur ?
Node.js sert uniquement pendant le développement : pour installer les dépendances, lancer le serveur de dev (Vite) et produire le build statique. Une fois compilée, l’application n’a plus besoin de Node.js : elle se déploie comme un simple site statique.
Lancer Linkr en local
Cloner le dépôt
Le dépôt est hébergé sur FramaGit. Clonez-le via HTTPS ou SSH, puis placez-vous dans le dossier du projet.
# HTTPS
git clone https://framagit.org/interhop/linkr/linkr.git
# ou SSH (si vous avez configuré votre clé)
git clone git@framagit.org:interhop/linkr/linkr.git
cd linkrInstaller les dépendances
À la racine du monorepo, npm install récupère et installe les dépendances de tous les workspaces (apps/web, packages/default-plugins, etc.). Cette étape peut prendre 1 à 2 minutes au premier lancement.
npm installLancer le serveur de développement
Le frontend démarre sur http://localhost:3000. Le rechargement à chaud (hot reload) est actif : chaque modification d'un fichier source est reflétée immédiatement dans le navigateur, sans redémarrage.
npm run dev:webProduire un build de production
Cette commande compile l'application en un ensemble de fichiers statiques prêts à déployer. Le résultat se trouve dans apps/web/dist/ : c'est ce dossier que vous envoyez sur votre hébergement.
cd apps/web
npm run buildDéployer comme site statique
Une fois le dossier apps/web/dist/ produit, vous pouvez l’uploader tel quel sur :
- GitLab Pages : via
.gitlab-ci.yml(un exemple est fourni dans le dépôt). - GitHub Pages : push du contenu de
dist/sur une branchegh-pages. - Netlify / Vercel / Cloudflare Pages : connecter le dépôt et pointer la sortie vers
apps/web/dist. - Serveur web classique (nginx, Apache) : copier
dist/dans le dossier servi.
Servir en HTTP ou HTTPS
DuckDB-WASM et certaines API modernes (File System Access) nécessitent un contexte sécurisé : HTTPS, ou HTTP uniquement sur localhost. Si vous hébergez Linkr sur un domaine, activez HTTPS.
Utiliser Docker
En cours de construction
Le dossier docker/ du dépôt contient des Dockerfile et un docker-compose.yml, mais cette configuration n’est pas encore validée. Elle sera documentée ici une fois le mode full-stack stabilisé. En attendant, utilisez le mode dev local décrit ci-dessus.
Structure du dépôt
Le dépôt est un monorepo Turborepo :
apps/web/— frontend React + Vite (c’est l’app principale).apps/api/— backend FastAPI (en cours de développement).packages/default-plugins/— plugins d’analyse inclus par défaut (Table 1, Plot Builder, etc.).docker/— configurations Docker.docs/— documentation interne du projet (différente de la documentation utilisateur que vous lisez ici).
Commandes utiles
| Commande | Effet |
|---|---|
npm install | Installe toutes les dépendances du monorepo. |
npm run dev:web | Lance le frontend en dev (port 3000). |
npm run build | Produit le build de production de tous les workspaces. |
cd apps/web && npm run preview | Sert localement le build de production. |
Dépannage
npm install échoue. Vérifiez que vous utilisez bien Node.js 20+ (node -v). Si vous avez plusieurs versions de Node.js, utilisez nvm use 20.
Port 3000 déjà pris. Le script de dev vous propose automatiquement un autre port, ou fermez le processus qui l’occupe (lsof -i :3000 sur macOS/Linux).
Le build est très lourd. C’est normal : les runtimes DuckDB-WASM, Pyodide et webR pèsent plusieurs Mo chacun. Ils sont chargés à la demande par le navigateur, pas tous d’un coup.
Pour aller plus loin
- Créer votre premier projet : Votre premier projet.
- Comprendre les différences entre les deux modes : Modes de déploiement.