Retour au bureau

Dans le bureau : le cahier

OsaBoard

Un tableau infini, à plusieurs.

OsaBoard est un espace de travail collaboratif en temps réel. On pose des blocs sur un canvas infini (texte, code, Kanban, sondage, carte, base de données…), on les relie entre eux, et chacun voit les curseurs des autres bouger en direct.

Ce que c'est
Canvas collaboratif · React Flow + WebRTC
Rôle
Conception et développement
Période
5 → 7 octobre 2026
Statut
En ligne
Stack
React FlowWebRTCNext.jsSocket.iosql.js
18types de blocs
31commits en une nuit
2 178lignes de code
16 Kopar message découpé

01Le point de départ

« Au départ, c'était un tableau blanc. Au bout de quelques heures, c'était devenu un outil de travail. »

La première version d'OsaBoard était un simple tableau blanc partagé en WebRTC. Deux heures plus tard, je l'ai réécrite autour de React Flow : au lieu de traits, on manipule des blocs qu'on peut relier.

Le reste de la nuit a servi à ajouter des blocs utiles : du code, du Markdown, une checklist, un Kanban, un sondage, un minuteur, une carte, un agenda, la météo, et même une petite base SQL qui tourne dans le navigateur.

02En images

À quoi ça ressemble.

Barre d'outils d'OsaBoard avec les types de blocs
La barre d'outils : chaque icône ajoute un type de bloc.
osaboard.osalabs.fr
Accueil d'OsaBoard
Créer une room, en importer une, ou rejoindre par code.

03Comment ça marche

Sous le capot.

Chaque participant garde une copie du tableau. Les changements voyagent directement entre les navigateurs.

Alice navigateur Bob navigateur Chloé mobile Dan navigateur Serveur présentation
  1. Une room et un code

    Le serveur Socket.io ne sert qu'à présenter les participants.

  2. Un maillage WebRTC

    Chaque participant ouvre un DataChannel avec chacun des autres : un vrai réseau à N personnes, sans serveur central.

  3. Des messages découpés

    Les gros contenus (images compressées, tableaux) sont découpés en morceaux de 16 Ko et réassemblés à l'arrivée.

  4. Des blocs React Flow

    18 types de nœuds personnalisés, reliés par des liens animés. Les curseurs de chacun s'affichent en direct.

  5. Export et import

    Un tableau entier se sauvegarde dans un fichier et se rouvre dans une nouvelle room.

✦À toi de jouer

Bouge les blocs

Une version miniature du canvas : déplace les blocs, ajoutes-en, et regarde les liens suivre.

!Les défis

Ce qui a résisté.

Des boucles de rendu infinies

ProblèmeSynchroniser l'état React Flow avec le réseau dans un useEffect relançait le rendu à l'infini.

SolutionLes mises à jour réseau passent par des fonctions de mise à jour ciblées, sans effet qui se déclenche lui-même.

Les candidats ICE perdus

ProblèmeCertaines connexions ne s'établissaient jamais.

SolutionLes candidats ICE n'étaient pas envoyés à temps : ils sont maintenant transmis dès qu'ils arrivent.

Passer de 2 à N personnes

ProblèmeLe premier modèle ne reliait que deux participants.

SolutionUne topologie maillée : chaque nouvel arrivant ouvre une connexion avec chacun des participants déjà présents.

⏱Journal de bord

Comment c'est arrivé.

  1. Tableau blanc WebRTC

    Première version, en verre dépoli.

  2. Réécriture avec React Flow

    On passe des traits aux blocs reliés.

  3. Une salve de fonctionnalités

    YouTube, Markdown, curseurs, chat, glisser-déposer.

  4. Messages découpés

    Les gros contenus passent enfin par le DataChannel.

  5. Agenda, météo, base SQL

    De vrais outils sur le canvas.

  6. N participants

    Maillage WebRTC et support mobile.

→Et ensuite

La suite du projet.

  • Un historique pour annuler les actions des autres.
  • Des modèles de tableaux prêts à l'emploi (rétro, brainstorming, planning).

Astuce : les flèches ← → de ton clavier passent d'un projet à l'autre.