Portfolio de Dasek Joiakim - Semestre 4
Semestre 2
Ressource d'apprentissage
Article réflexif
Centralisation des données

La centralisation des données - Second Brain - Joiakim Dasek

Slide de présentation

Pourquoi ?

Je vais commencer par décrire le contexte ou la situation à laquelle la présentation tente de répondre :

Nous sommes donc étudiant DTA et lors de nos premiers jours ou même semaine dans cette formation, nous avions un sentiment d’incertitude et rien de très étonnant, on devait s’attendre à cela. On a bien compris dès le début que l’on doit, chacun, définir son cadre de travail pour remédier à cette incertitude.

Certains éléments n’étaient pas encore clair, que dois-je faire pour quand et comment faire cela ? Trois éléments important: quoi, quand et comment, pour qui à la limite c’est pas très important.

Après analyse de la situation, on remarque clairement que pour répondre à ces trois questions on a une partie dans cette formation qui est plutôt définie et même “stricte” :


Référentiel de compétences, sa définition, son but et son contenu sont clair et voici une représentation :

Référentiel de compétences

Chaque sous-éléments du Portfolio répondent donc à la question du quoi, le comment est propre à chacun et le qui est suffisamment clair. Dans cette formation le but est de se former par soi-même, mais aussi de se former en équipe, de partager les connaissances et acquis !

Alors le problème d’avoir des données non structurés et éparpillées font perdre un temps fou ! Ce temps pourrait être consacré à un appofondissement de connaissances ou bien que ce soit pour un coach qui voudrait présenter une idée d’une classe à une autre mais qui perd du temps à retrouver cette source ou d’un élève voulant utiliser un livre présenté six moi plus tôt par un camarade de classe pour un projet.

Partant de cette partie bien définie de référentiel de compétences et du principe de partage de connaissances (coach-élèves & élèves-élèves), on peut construire un service qui faciliterait cet échange et soulagerait l’organisation au niveau Team Academy, d’équipe de projets et même l’organisation individuelle.

Un service où la structure des données est uniformisée quelque soit le type de document et permettrait de définir des termes compréhensible par tous, dit-on contrat individuel ou contrat d’apprentissage etc…

Quoi ?

En automatisant le traitement des données, le partage, le stockage et en redant possible d’assigner des propriétés à une ou des ensembles de données. Cela permettrait de construire bon nombre de fonctionnalités qui pourrait satisfaire nos besoins.


J’ai donc pris l’initiative pendant un bon mois de régler le problème de la forme de rendu. Je me suis donc renseigner sur un lanagage de balise légé appelé Markdown. Il est très simple à apprendre, utiliser, écrire, lire, convertir en HTML et aide à maintenir une forme uniforme au seins d’une équipe !

Je me suis donc dit, chacun n’a qu’à écrire un fichier en Markdown pour un rendu et je centralise le tout dans une application pour que tout le monde ait accès. Voici une réprésentation de ce processus.


Sauf que c’est pas optimisé si ces documents ne sont pas classés, s’il y a du contenu que l’on ne veut pas forcément partager mais retrouver dans le même endroit, si un coach doit corriger et donner un feedback etc…

Je me suis rendu compte de bien des problèmes et donc j’ai encore cherché et un jour on m’a fait connaître un service appelé Notion.


Notion est une plateforme en ligne qui propose une suite d'outils de productivité, y compris des fonctionnalités de prise de notes, de gestion de projets et de collaboration. Donc exactement ce à quoi je recherche ! Je me suis donc inscris, j’ai testé un peu près toutes les fonctionnaliées et le service est très plaisant, la documentation se fait très bien et tout est uniforme.

Je regarde si je peux inviter un camarade pour qu’on ait le même espace de travail mais c’est là où ça bloque, il faut avoir un plan payant pour tous les membres d’un Workspace. La seule solution pour que quelqu’un voit mon document, je dois partager un lien et là on revient en arrière, donc ce quelqu’un doit avoir une multitude de lien et ça, multiplié par le nombre de camarade de classe.


Je me suis demandé si il y avait une référence de leur API (Définition d’une API)


Et si il y avait des contraintes comme le fait d’avoir un compte gratuit ou un taux limite de requête etc… Non aucune limitation, enfin certaine mais pas au point qu’elle soient contraignantes pour la solution que je me suis mis à développer :

La solution à ce problème est de bypasser la restriction payante du workspace non disponible en version gratuite. Le but est donc de créer une application où je créé notre espace de travail. J’ai donc lu à nouveau l’API et créé des clés API (Expliquer clé API - Comment Notion va savoir qui je suis et quel droit ai-je sur une ressource) pour pouvoir récupérer depuis mon application :

  1. Des informations sur l’utilisateur
  2. Une base de données contenant ses propriétés et les pages
  3. Une page spécifique
  4. Un block et ses enfants

On va reculer de trois pas pour avoir une vue d’ensemble sur le fonctionnement, cela veut donc dire que j’utilise Notion pour écrire, mettre en forme et stocker le contenu ainsi qu’assigner des propriétés à ces documents et l’application WEB va regrouper tous les documents et lister par propriétés créé, les différents documents.

PRESENTER Notion et la DB + PRESENTER Second Brain

Je vais présenter le modèle MVC pour comprendre le lien des différents éléments technologique :

Le modèle MVC (Model-View-Controller) est un modèle de conception de logiciel qui sépare les données de l'application (modèle), l'interface utilisateur (vue) et la logique de contrôle (contrôleur).

La vue est responsable de l’affichage des données à l’utilisateur et l’interaction qu’il peut avoir avec. Le modèle est responsable de la gestion des données (écriture, lecture et suppression) et enfin le contrôleur lui va faire le pont entre ces les données et la vue.


Les limites de ce projet :

  1. Base de données décentralisée
  2. Plan gratuit devient plus limitant ou payant
  3. Référence de l’API qui change trop régulièrement (Breakingchanges)

Pour pouvoir briser ces dépendances il faut se détacher de Notion et créer son propre outil d’édition intégré dans notre service. Expliquer avec le modèle MVC le détachement.


J’ai compris petit à petit qu’il y avait bien plus de besoins à satisfaire que centraliser, partager, uniformiser et étiquetter les données et puis Notion n’est pas encore suffisant et limitant pour du long terme mais regroupe l’essentiel des fonctionnalitées auxquelles nous aurions besoins !

Le projet à développer pourra proposer à un public cible plus large et avec des fonctionnalités qui permettent à ce que ce service épouse n’importe quelle structure d’organisation de formation, de classe, d’équipe de projet etc…

J’ai donc jusqu’à présent, listé ce que je pense que ce service devra faire à terme pour la Team Academy, ce service devra donc :

MONTRER L’APPLICATION SECOND-BRAIN

  • Centraliser, structurer, uniformiser et étiquetter les données
  • Authentification (lu API SWITCH EDU-ID) → permettrait que ce soit uniquement des élèves HES avec filtre de filière etc… Membre Coach assignée à une classe, élèves à une classe. Tout ce qui est gestion d’authentification et système de droits d’accès.
    • Rôle de coach aura la possibilité de voir l’avancement de la classe (Tableau de bord), de créé les propriétés statiques de la formation (Séance de discussion, Lecture individuelle, Article réflexif, etc…), de donner un feedback sur un block spécifique d’une page d’un rendu, de valider ou non du contenu, de l’épingler, de modifier à souhait les documents officiel, de notifier les élèves de l’arrivée de nouvelles notes, feedbacks, rendu, délais, de gérer les droits et accès entre différentes classes ou filières et héritera des droits du rôle d’élèves…
    • Rôle d’élève aura la possibilité de voir son avancement, de visualiser la documentation partagée, et ses documents privés, de créér des propriétés supplémentaires de celle créé par le coach comme “Tableau de bord de la semaine” et si l’idée de l’étiquette est très bonne, le coach peut ajouter aux propriétés statiques, de créér du contenu, de l’étiquetter, de partager (droit d’édition à plusieurs par exemple porjet Digitourism) etc…
      • Grande force de tagger un block de page pour une compétence de l’année et le Portfolio se complète auotmatiquement
  • Menu
    • Team Academy
      • Présentation etc…
      • Documents officiels Notebook DTA ou BTA
    • Ma classe
      • Tableau de bord
        • Tâche à faire, en cours, terminé
        • Feedback et documents à réviser
        • Etat des rendus (validé ou non)
      • Portfolio
      • Shared Brain
        • Contrat individuel
        • Lecture individuelle
        • Article réflexif
        • Session de formation
        • Séance de discussion
        • Module Prog
        • Module Infra & Réseau
        • Module IT
        • Module Modélisation
        • Projets
        • Lexique
        • Timeline
        • Contrat d’équipe
      • My Brain
        • Roadmap
        • Tableau de board
        • Knowbase
    • Réglages
      • Informations du compte
      • Notifications
      • etc..
    • Sytème de recherche très performant, puisque les données sont étiquettées, et que les données dans les documents sont indexables ! Recherche de connaissances, docments inter-filière, première année (droits et accès défini par coach…)

Comment ?

Par le biais de la DTA, de cette première année où les compétences pourrait être utilisée pour répondre et améliorer cet article réflexif !


Les technologies ?

Next.js, React, MongoDB, librairie react richtext editor, API, Git

Pourquoi uniquement application WEB ?

C’est un coût en temps de produire pour différentes plateforme, un coût financier pour déployer sur les Stores, pour mettre à jour une application native il faut aller sur le store etc…

A contrario, une application WEB, il suffit de développer une application responsive, les mises à jour sont instantanées et avec le CI/CD

En gros CI/CD permet de automatiser la plupart des étape de tests , de build, de déploiement et de versioning pour garantir la qualité de l'application et une mise à jour efficace.

Avec Next.js on peut produire une application mobile aussi performante que native pour ce type de projet.

C'est aussi une app mobile utra rapide et accès hors connexion aux données, se met à jour dès connexion au réseau.

Seo ?

App statique pour la documentation donc 100% SEO mais on peut désactiver cette fonctionnalité


Quel coût pendant la phase production ?

  • Elasticité prix
  • Scalabilité
  • Application conteneurisée, si crash relancée à froid très rapidement

Licence du code ?

Les licences de code définissent les termes et les conditions d'utilisation d'un logiciel, y compris les droits et les responsabilités des utilisateurs.

  • Un projet suffisament abstrait pour s’adapter à plusieurs situations mais pas trop pour que le client comprenne au mieux le service et puisse l’exploiter à son maximum

Avantage pour l’équipe (de la solution actuelle)

Partager le code source et participer pour la solution future, mise en pratique de beaucoup de compétences.


Solution actuelle

Le code source sera mis en place sur Github pour que vous puissiez tester le prototype actuel mais aussi l’exploiter. Vous pourrez ajouter des iddées d’améliorations etc…

Résultat du prototype

Second-brain (opens in a new tab)