Cloud Coding
Plate-forme permettant de développer depuis son navigateur différents frameworks en temps réel.
Introduction
Bienvenue sur la documentation Cloud Coding ! 🍾🍾🍾
Cloud Coding est une plate-forme collaborative permettant de développer des applications web directement dans votre navigateur.
Vos applications sont développées avec un rendu en temps réel, disponible grâce à un lien généré sur le domain principale de Cloud Coding.
Différents modèles à disposition
Nous mettons plusieurs modèles à disposition lors de la création d'un projet, afin de vous aider à définir votre projet.
Réseau social
Cloud Coding, c'est aussi un réseau social. Vous pouvez partager vos projets, suivre plusieurs développeurs, discuter avec eux, etc.
Présentation
Présentation de l'application et ses fonctionnalités
Introduction
Introduction à Cloud Coding
Cloud Coding est une plate-forme collaborative permettant de développer des applications web directement dans votre navigateur.
Vos applications sont développées avec un rendu en temps réel, disponible grâce à un lien généré sur le domain principale de Cloud Coding.
Différents modèles à disposition
Nous mettons plusieurs modèles à disposition lors de la création d'un projet, afin de vous aider à définir votre projet.
Réseau social
Cloud Coding, c'est aussi un réseau social. Vous pouvez partager vos projets, suivre plusieurs développeurs, discuter avec eux, etc.
Projets
Une fois inscrit, vous avez la possibilité de créer un projet.
C'est une étape indispensable pour pouvoir ensuite développer, car c'est à ce moment que vous pouvez définir votre modèle et le nom de votre projet.
Création d'un projet
Rendez-vous sur la page Projets → Nouveau projet et donnez un nom à votre projet.
Visibilité
Vous avez 3 niveaux de visibilité pour votre projet :
- Public : votre projet est visible par tous les utilisateurs de Cloud Coding.
- Privé : votre projet est visible uniquement par vous.
- Invité : votre projet est visible par vous et les utilisateurs de votre équipe.
Création depuis un modèle {#models}
Lors de la création d'un projet sur Cloud Coding, vous avez le choix entre plusieurs modèles de départ.
Modèles disponibles
Il existe actuellement 5 modèles 💯 :
- NestJS 8
- React 18.1
- Angular 14
- Quarkus 2.8
- Flask 2.1
Vous pouvez également choisir d'importer votre propre projet GitHub, à condition que ce dernier soit codé dans une des techno disponibles.
Import d'un projet GitHub
Même si vous importez un projet GitHub personnel, veillez à sélectionner le modèle correspondant au langage de votre projet. Auquel cas le projet pourra ne pas se lancer correctement.
Le projet à importer doit obligatoirement être public.
Liste des projets
Une fois que vous avez créé un ou plusieurs projets, vous pouvez consulter la liste de ces derniers depuis la page Projets.
Projets rejoints
Un utilisateur peut aussi vous inviter dans un groupe et par extension, aux projets de ce dernier. Lorsque c'est le cas, il est possible de voir sur la liste des projets, ceux auquel vous appartenez.
Consultation d'un projet
Lorsque vous consultez un projet, vous pouvez voir les détails de celui-ci :
- Modèle : le modèle utilisé pour développer le projet.
- Nom : le nom du projet.
- Dernière version : la dernière version du projet.
- Visibilité : la visibilité du projet.
- Date de création : la date de création du projet.
- Propriétaire : l'utilisateur qui a créé le projet.
- Groupe : le groupe auquel appartient le projet (si c'est le cas).
- Statut : le statut du projet. (Inactif, Initialisation, En cours d'exécution)
Les seules informations modifiables sont la visibilité et le nom du projet.
Le bouton Go Code !!! permet de lancer le projet et arriver sur la fenêtre d'édition du code.
Commentaires
Un fil de commentaire propre au projet est également présent sur la page de consultation. Vous pouvez ainsi partager vos idées et vos remarques concernant le projet.
Si le projet est public, les commentaires postés seront visibles sur votre profil utilisateur.
Groupes
Les groupes sont très importants dans Cloud Coding. Il faut voir ça un peu comme une Organisation sur Github.
Ces derniers vous permettent d'inviter des membres à vous rejoindre sur un ou plusieurs projets. Vous pouvez ainsi inviter de gens à rejoindre vos projets privés et à leur assigner des rôles.
Création d'un groupe
Rendez-vous sur la page Groupe → Nouveau groupe et donnez un nom à votre groupe.
Consultation des groupes
Une fois que vous avez créé un ou plusieurs groupes, vous pouvez consulter la liste de ces derniers depuis la page ** Groupes**.
Groupes rejoints
Lorsqu'un utilisateur vous ajoute à son groupe, vous pouvez consulter les groupes que vous avez rejoints sur la même page sous la section groupes rejoints
Consultation d'un groupe
Lorsque vous consultez un groupe que vous venez de créer, ce dernier ne contient aucun projet et seulement vous comme membre.
Ajout / Retrait d'un projet
Vous pouvez ajouter facilement un projet dans un groupe grâce au bouton Ajouter un projet, il vous suffit ensuite de taper au moins les 3 premières lettres du nom du projet que vous souhaitez ajouter dans votre groupe.
Après quelques secondes, vous verrez apparaitre votre projet dans le groupe.
Vous pouvez ajouter des projets publics ou privé dans un groupe, seuls les membres ayant les droits de modification pourrons éditer le code, les autres membres pourrons seulement le consulter.
Si vous voulez retirer le projet du groupe, il vous suffit de cliquer sur le bouton - et de confirmer le retrait du projet.
Gestion des membres
L'utilité d'un groupe est de pouvoir ajouter des membres à celui-ci.
Pour faire cela, vous pouvez cliquer sur le bouton Ajouter un membre et vous aurez la possibilité de rechercher un utilisateur à ajouter dans votre groupe. Vous pouvez chercher un utilisateur par son nom, son email ou son identifiant.
Il est ensuite possible de lui autoriser la modification du groupe et des projets qu'il contient.
On peut également le retirer du groupe.
Conversation
Un groupe vous permet d'avoir accès à une conversation privée entre les membres de ce dernier. Cette conversation est accessible depuis la page Groupe de votre groupe. C'est du temps réel, il n'y a pas besoin de rafraichir la page pour voir les messages. Vous pouvez formater vos messages grâce à un éditeur de texte riche en balises.
Réseau social
La philosophie de Cloud Coding est de rendre le développement social, de pouvoir partager et collaborer à plusieurs dessus. Ce n'est donc pas étonnant de retrouver dans notre application un tas de fonctionnalités allant dans ce sens !
Explorer
En vous rendant sur la page Social, vous pouvez explorer les différents réseaux sociaux que nous avons développés.
Utilisateurs
Cette partie vous permet de rechercher les utilisateurs inscrits sur Cloud Coding. Vous avez accès à une barre de recherche pour vous permettre de rechercher un utilisateur par son nom ou par son email.
Lorsque vous consultez un utilisateur, vous pouvez voir ses informations, ses projets publics, les personnes qui le suivent, ses commentaires postés sur des projets publics....
Projets publics
Cette partie vous permet de rechercher des projets publics. Vous avez accès à une barre de recherche pour vous permettre de rechercher un projet par son nom.
La consultation d'un projet est la même que celle d'un projet vous appartenant.
Relations
Que serait un réseau social sans relations entre les utilisateurs ? C'est une question réthorique, bien sûr !
C'est pourquoi nous avons poussé cet aspect sur notre application afin de pouvoir suivre des utilisateurs, ou encore avoir des amitiés.
:::info Les amitiés dans la vraie vie, c'est mieux quand même. :::
Amis
Vous pouvez demander d'autres utilisateurs en amis. L'autre utilisateur doit accepter votre demande. Vous pouvez sur la page Social voir les demandes d'amis que vous avez reçus ainsi que celle en attente.
Conversation
Lorsque vous êtes amis avec un autre utilisateur, vous pouvez discuter avec lui. Il suffit de se rendre sur la page Social → Amis et de cliquer sur le nom de l'utilisateur avec qui vous souhaitez discuter.
Les messages envoyés peuvent être modifiés ou supprimés.
Followers / Followings
Si vous ne souhaitez pas ajouter les utilisateurs en amis, mais suivre les projets publics de ces utilisateurs, vous pouvez suivre les utilisateurs que vous souhaitez et inversement.
Code editor
Lorsque vous cliquez sur le bouton Go Code !!!, présent à différents endroits où les projets sont affichés, vous atteignez la page d'édition du code.
Si le projet n'était pas lancé, il faut attendre un peu pour qu'il démarre et soit consultable.
Arbre du code
Comme nous codons des projets entiers, il est important d'avoir une vue de l'arborescence de nos fichiers de code. Nous avons donc développé pour cela un outil de navigation dans l'arbre de notre projet.
Rendu temps réel
Une fois démarré, vous pouvez voir le rendu temps réel de votre application sur le côté droit de l'éditeur. Ce n'est ni
plus ni moins qu'un iframe
pointant sur le lien assigné de votre projet. Vous pouvez donc parfaitement copier le lien
de
votre application et le partager à qui vous voulez, du moment que le projet est lancé.
Consultation du lien
Le lien apparaissant au-dessus du rendu de votre application est public et peut être consulté par tout le monde. Il suffit de le copier / coller dans un navigateur web pour voir le rendu de votre application.
Développeurs connectés
Il est possible d'être plusieurs développeurs connectés en même temps sur un projet. Lorsque c'est le cas, il est
important de pouvoir voir qui est connecté en même temps que nous.
Il est possible d'avoir cette information depuis le menu de gauche de l'éditeur.
Un lien est disponible pour ouvrir un onglet sur la consultation du groupe afin d'avoir accès à la conversation.
Appel visio
Parce que ce n'est pas facile d'avoir une conversation écrite en même temps que nous codons, et parce qu'un des objectifs de notre application est l'aspect social, nous avons développé une fonctionnalité qui permet aux développeurs éditant un projet en même temps de pouvoir passer un appel vidéo directement depuis l'éditeur de code 💯💯💯.
Versioning
Un développeur change souvent d'avis, il peut donc avoir des versions différentes de son code.
Nous lui permettons ainsi de faire des snapshots
de son code, afin de pouvoir revenir à une version précédente.
Outils & Technologies
Outils et technologies utilisés pour la réalisation de Cloud Coding
Technologies
Pour mener à bien ce magnifique projet, nous avons dû mettre la main à la pate et utiliser plusieurs technologies.
Angular
Afin de développer un frontend moderne et responsive, nous avons utilisé Angular.
Le choix était tout indiqué, car ce Framework est très puissant et possède tout un tas de librairies annexes permettant d'enrichir son fonctionnement.
Librairies
Plus d'une dizaine de librairies ont été ajouté à Angular, afin de rendre notre application plus performante et unique.
Angular Material
Angular Material est une librairie qui permet de rendre les interfaces de l'application plus agréables et plus riches. Elle donne accès à une multitude de composants et de fonctions.
NGRX
NGRX est un groupe de librairies inspirées par le pattern Redux, qui est lui-même inspiré du pattern Flux. Le pattern ngrx est un pattern de gestion d'état. Il stocke l'état de l'application (State) dans un Store.
Dans notre application, nous avons utilisé un Store pour stocker l'état de l'application et des différentes informations présentes dessus.
Code Mirror
CodeMirror est un composant d'éditeur de code pour le Web. Il peut être utilisé dans les sites Web pour implémenter un champ de saisie de texte avec prise en charge de nombreuses fonctionnalités d'édition et dispose d'une interface de programmation riche pour permettre une extension supplémentaire.
Font Awesome
Font Awesome est une police d'écriture et un outil d'icônes qui se base sur CSS, Less et Sass.
Bootstrap
Bootstrap est une collection d'outils utiles à la création du design de sites et d' applications web. C'est un ensemble qui contient des codes HTML et CSS, des formulaires, boutons, outils de navigation et autres éléments interactifs, ainsi que des extensions JavaScript en option.
Lottie
Le format Lottie est un format ouvert d'animation vectorielle basé sur JSON créé à l'origine par la branche de design de Airbnb avec son plugin d'export BodyMovin, pour les animations produites sous After Effects.
Socket.io Client
Socket.IO est une bibliothèque qui permet une communication à faible latence, bidirectionnelle et basée sur les événements entre un client et un serveur.
Il repose sur le protocole WebSocket et offre des garanties supplémentaires telles qu'un mode dégradé en HTTP long-polling ou la reconnexion automatique.
NestJS
NestJS est un framework Node.js permettant de créer des applications back-end robustes et scalable.
Nous avons choisi ce framework, car il est très performant et permet de créer des applications back-end avec typescript.
Librairies
Plusieurs librairies ont été ajoutées à NestJS, afin de rendre notre application plus performante et unique.
TypeORM
TypeORM est un ORM (Object Relational Mapping) qui permet de faire le lien entre les objets d'une application et les tables d'une base de données relationnelle.
Passport
Passport est un middleware d'authentification pour Node.js. Il est extrêmement flexible et peut être facilement adapté à une application ou un service Web existant.
Swagger UI
Swagger UI est une interface utilisateur pour les API RESTful. Il permet de visualiser et d'interagir avec les ressources d'une API sans avoir à coder une interface utilisateur.
Nous nous sommes beaucoup servis de cette librairie pour tester nos API.
Socket.IO
Socket.IO est une bibliothèque qui permet une communication à faible latence, bidirectionnelle et basée sur les événements entre un client et un serveur.
Nous nous en servons pour tout ce qui est communication en temps réel (édition de code, envoie de message, appel vision, ...)
MailJet
MailJet est un service d'envoi d'email. Nous nous en servons pour envoyer des emails à nos utilisateurs.
Unique names generator
Unique names generator est une librairie qui permet de générer des noms uniques. Cela nous permet de créer des noms de domaines aléatoires et amusants pour les différents projets.
RabbitMQ
RabbitMQ est un message broker open source. Il permet de faire communiquer des applications entre elles.
Nous nous en servons pour faire communiquer notre application NestJS et nos lanceurs d'exécution de code.
PostgreSQL
PostgreSQL est un système de gestion de base de données relationnelle objet (SGBDRO) libre et multiplateforme.
Nous avons choisi cette base de données, car elle est très performante et très fiable.
Flask
Flask est un framework web Python léger et flexible. Il est conçu pour être facile à apprendre et à utiliser. Il est également conçu pour être simple à étendre et à intégrer avec d'autres bibliothèques et applications.
Nous avons choisi ce framework pour créer nos lanceurs d'exécution de code, afin que ces derniers aient tous la même interface.
Kotlin
Kotlin est un langage de programmation multiplateforme, orienté objet et fonctionnel, développé par JetBrains.
Il est utilisé pour développer notre application mobile Android.
Docusaurus
Docusaurus est un générateur de site web statique open source pour la documentation technique.
Nous avons choisi ce générateur de site web, car il est très performant et permet de créer des sites web statiques, afin d'héberger notre documentation.