publicodes icon indicating copy to clipboard operation
publicodes copied to clipboard

Transformer le studio en pad collaboratif

Open laem opened this issue 3 years ago • 7 comments

🕹️ À tester ici : https://deploy-preview-276--publicodes-website.netlify.app/studio

  • [x] 1er partage temps réel du code via P2P
  • [x] affichage des utilisateurs connectés
  • [x] mise en ligne d'une base de données via un serveur scalingo + BDD mongo (pour le stocker indéfiniment; le P2P est souvent bloqué)
  • [ ] plein de tests et améliorations d'UI à faire
    • [ ] par exemple, changer le nom de la salle -> nouveau doc où l'on copie le contenu de l'ancien
    • [ ] expérience de dev : stabilité de la vue présentation pendant la rédaction.
    • [ ] améliorations à faire sur un vrai cas d'usage
  • [x] avoir des réponses sur la question de la sécurité / fiabilité de la base de données / disclaimer sur ce qui y est stocké
  • [ ] Actuellement utilise laem/publicodes-live-server, mettre ça chez betagouv ?
  • [x] ajouter une couche yjs-indexeddb pour stocker les modifs en local en attendant une connexion ?
    • [ ] c'est fait, mais à tester en réel
  • [ ] quid de la rétrocompatibilité avec les anciennes URLs ? En cas de pb de base de données, c'est un fallback toujours intéressant ?

Pour ce faire, je reprends les ingrédients de nosgestesclimat.fr/groupe : yjs, mongo.

bonus

  • [ ] exposition d'un JSON de publicodes sur une url style /json/[monjson], pour utilisation style API

Je crois qu'il suffit d'ajouter une route /get, via l'ajout d'express par exemple, d'accéder à la BDD et d'envoyer le fichier en JSON à une URL autre, style /data/xxx

  • [ ] pouvoir montrer la vue édition, la vue présentation, ou les deux, à coder dans un searchParam
  • [ ] meta données de partage ? Donner un titre, une image, injectés en og:, pour faire vivre la page comme une vraie page Web partageable joliment

laem avatar Oct 20 '22 13:10 laem

une base de données via un serveur scalingo + BDD mongo

Le besoin ici c'est bien un stockage clé/valeur ? Peut-être plus simple à déployer et maintenir via cloudflare kv ?

mquandalle avatar Nov 22 '22 17:11 mquandalle

Le besoin ici c'est bien un stockage clé/valeur ? Peut-être plus simple à déployer et maintenir via cloudflare kv ?

Bonne suggestion ! L'avantage de scalingo est d'être en France :) On a déjà testé le déploiement de base mongo, c'est très simple également. Mais j'investigerai cloudflare kv.

laem avatar Nov 24 '22 15:11 laem

MAJ sur l'avancement de cette PR : j'ai pas trop le temps en ce moment, mais j'y compte bien :)

laem avatar Nov 24 '22 15:11 laem

:up: j'avance sur ma PR pour un pad publicodes, https://github.com/betagouv/publicodes/pull/276 Ça marchotte, mais je me trouve assez limité par l'environnement Docausorus... Par exemple, j'ai besoin de définir des classes CSS dynamiques (pour colorer les curseurs), et plus généralement je retrouve pas la liberté d'itération de styled-components. Ou d'intégrer un gestionnaire de query params.

Du coup je pense partir sur une app React distincte de publicodes/website :)

laem avatar Dec 15 '22 17:12 laem

Comme prévu, j'ai repris le dev ici https://publicodes.vercel.app

C'est une expérimentation avec Next-13.

Ce framework n'est pas trivial, mais je le trouve très intéressant pour autant.

https://github.com/laem/publicodes-live-studio

À réintégrer ici peut-être quand ce sera mûr.

laem avatar Jan 08 '23 18:01 laem

Je ferme, et continue le développement de la v2 ici https://github.com/laem/publicodes-live-studio/issues/2 :)

laem avatar Jan 23 '23 11:01 laem

MAJ sur ce sujet : je n'ai pas actuellement de projet qui justifie l'investissement de temps de mon côté dans cette fonctionnalité. Toujours partant pour la faire avancer, je continue de penser que ça pourrait être un super usage, mais il faut le justifier dans le budget d'un produit.

laem avatar Nov 03 '23 12:11 laem