📚 Bibliothèque pour la cartographie de l’offre de médiation numérique.

Overview

Bibliothèque pour la cartographie de l’offre de médiation numérique

À propos

Il s'agit d'une collection d'éléments Angular à destination des projets qui ont pour vocation d'intégrer des fonctionnalités liées au recensement de l'offre de médiation numérique sur le territoire Français et à l'orientation des usagers vers les services de médiation numérique les plus adaptés à leurs besoins.

Table des matières

Prérequis

  • Git : Système de contrôle de versions distribué d'un ensemble de fichiers
  • Node : Environnement d'exécution pour Javascript
  • Yarn : Gestionnaire de paquets pour les produits développés dans des environnements Node

Node et Yarn peuvent être installés via nvm qui permet d'obtenir et d'utiliser rapidement différentes versions de Node via la ligne de commande.

Installation

Pour l'utiliser dans un projet Angular

  • Avec yarn : yarn add @gouvfr-anct/mediation-numerique
  • Avec npm : npm install @gouvfr-anct/mediation-numerique

Pour contribuer au développement

Ce projet a été construit dans un espace de travail Angular, pour fonctionner correctement, il est nécessaire de le cloner dans un environnement similaire :

En utilisant l'espace de travail original

  • Suivre la procédure d'installation du projet Client Base
  • Une fois que l'espace de travail est prêt, il faut créer le dossier @gouvfr-anct dans projects
  • Puis cloner le dépôt en local dans le dossier projects/@gouvfr-anct : git clone [email protected]:anct-cartographie-nationale/mediation-numerique.git

En utilisant un projet Angular déjà existant

  • Dans le dossier du projet Angular cible, lancer la commande de génération de bibliothèques : ng generate library @gouvfr-anct/mediation-numerique
  • Cette commande va adapter les fichiers package.json, angular.json et tsconfig.json pour adapter le projet au développement de la bibliothèque qui vient d'être générée dans le nouveau dossier projects
  • Créer le fichier tsconfig.base.json à la racine du projet et y copier le contenu de tsconfig.json en supprimant la propriété compilerOptions.paths, pour éviter une duplication il est possible de faire en sorte que tsconfig.json étende tsconfig.base.json en ajoutant seulement la propriété compilerOptions.paths
  • Optionnellement, il est possible d'adapter le code généré dans angular.json et tsconfig.json, ainsi que l'arborescence dans le dossier projects afin d'ajouter le @ manquant pour correspondre au chemin projects/@gouvfr-anct/mediation-numerique
  • Supprimer le dossier mediation-numerique contenant le code de la bibliothèque générée
  • Puis cloner le dépôt en local à la place : git clone [email protected]:anct-cartographie-nationale/mediation-numerique.git
  • Attention à bien installer les paquets npm dont la bibliothèque a besoin dans le projet Angular de base :
    • @angular/flex-layout
    • leaflet
    • geojson
    • @asymmetrik/ngx-leaflet

Dans tous les cas

Installer Husky

Husky est un outil de gestion des hooks git pour effectuer des tâches automatiques

Mise en place de Husky :

yarn husky install

Rendre exécutable les fichiers qui contiennent les hooks :

chmod a+x .husky/commit-msg
chmod a+x .husky/pre-commit

Utilisation

Ces commandes servent dans un contexte de développement de la bibliothèque et doivent être exécutées depuis la racine de l'espace de travail, c'est-à-dire depuis le dossier parent du dossier projects.

Construction

Exécuter yarn build @gouvfr-anct/mediation-numerique pour construire le projet. Les fichiers de sortie sont écrits dans le dossier dist/.

Test

Exécuter yarn test @gouvfr-anct/mediation-numerique pour tester le projet.

ESLint

Exécuter yarn lint @gouvfr-anct/mediation-numerique pour une analyse statique des fichiers .ts du projet.

Commit lint

Exécuter yarn commitlint --from HEAD~1 pour valider la syntaxe du dernier commit.

Prettier

Exécuter yarn prettier pour mettre à niveau la syntaxe de l'ensemble des fichiers du projet.

Contribution

Nommage des branches

  • Avant de créer une nouvelle branche de travail, récupérer les dernières modifications disponibles sur la branche main
  • La nouvelle branche de travail doit ête préfixée par build/, chore/, ci/, docs/, feat/, fix/, perf/, refactor/, revert/, style/ ou test/ en fonction du type de modification prévu, pour plus de détails à ce sujet, consulter Conventional Commits cheat sheet
  • Une branche portant une version à publier doit être de la forme release/X.Y avec X.Y égal au numéro de majeur et de mineur de la release, cela signifie donc que tous les patches sont à appliquer sur la même branche pour chaque version mineure. Cette organisation permet de gérer plusieurs versions de la bibliothèque en parallèle sans mettre en péril la rétrocompatibilité.

Commits

Convention

Les commits de ce repository doivent respecter la syntaxe décrite par la spécification des Commits Conventionnels

Signature

La branche main, ainsi que l'ensemble des branches de travail avec un préfixe valide requièrent que les commits soient signés :

Publier sur la branche principale

  • La branche principale est main, il n'est pas possible de publier en faisant un push depuis un dépôt local
  • Il faut forcément créer une nouvelle branche de travail avec l'un préfixe autorisé
  • À chaque publication sur une branche de travail, le workflow Validate feature sur github actions vérifie
    • Qu'il est possible de créer un build sans erreur
    • Que la syntaxe correspond bien à ce qui est défini par Prettier
    • Que le code écrit en TypeScript respecte les conventions décrites par les règles ESLint
    • Que les messages des commits suivent le standard établi par Conventional Commits
  • Une fois les développements terminés, il faut créer une pull request avec la banche de travail comme origin et la branche main comme destination.
  • La pull request ne peut être fusionné que si :
    • Les étapes du workflow Validate feature sont valides
    • Les fichiers modifiés ont été revus par au moins une personne
    • Les commits ajoutés sont signés
  • La branche de travail est supprimée automatiquement une fois qu'elle a été fusionnée

Déployer

Pour publier une nouvelle version, il faut que le numéro de version cible soit mis à jour dans le fichier package.json, que le fichier CHANGELOG.md soit mis à jour et que le commit de la version à publier porte un tag de la forme vX.Y.Z correspondant au numéro de version présent dans package.json.

Il est possible d'automatiser ce processus en utilisant la commande standard-version :

  • Récupérer la version à publier depuis la branche main
  • Vérifier la valeur du prochain tag avec la commande standard-version --dry-run
  • Récupérer ou créer la branche release/X.Y correspondant à la majeure et la mineure indiquée par la commande précédente
  • Lancer la commande standard-version qui
    • met à jour la version dans le fichier package.json
    • met à jour le fichier CHANGELOG.md
    • créé un nouveau commit
    • ajoute le tag correspondant à la version dans le fichier package.json
  • Pousser la branche release/X.Y avec le tag conduit à la publication d'une nouvelle version
  • Si le numéro de version est le plus grand au sens de la priorité définie par la spécification de la gestion sémantique de version (11), alors il faut créer une pull request vers la branche main, il ne faut pas le faire si ce n'est pas le cas.

Construit avec

langages & Frameworks

  • TypeScript est un langage open source construit à partir de JavaScript
  • Angular est une boîte à outils open source pour construire des clients web

Outils

CLI

  • Jest est une boîte à outils pour écrire des tests automatisés en JavaScript
  • Eslint est un analyseur statique de JavaScript avec les plugins suivants :
  • Prettier est un magnificateur de code source en JavaScript

CI

  • Github Actions est l'outil d'intégration et de déploiement continu intégré à GitHub
  • Secrets du dépôt :
    • NODE_AUTH_TOKEN : Clé d'accès NPM pour publier sur l'organisation @gouvfr-anct

Déploiement

Documentation

Table des matières

Mise en place

Configurations

Les modules Map et Structure ont besoin d'être configurés en utilisant la méthode forRoot qui prend en paramètre des implémentations côté projet afin de les injecter dans les éléments de la bibliothèque qui en ont besoin.

  • Map
    • GeometryPolygonConfiguration : Configuration d'une forme de type FeatureCollection<Polygon> à afficher sur la carte
    • ZoomLevel : Configuration des niveaux de zooms min, regular, userPosition et max
    • InitialPosition : Configuration de la position initiale de la carte par la latitude et la longitude
    • MarkerType : Configuration des types de marqueurs structure, mdm, conseillerFrance, user
    • GeojsonService : Repository disposant des méthodes getMDMGeoJson et getTownshipCoord
  • Structure
    • SearchService : Repository disposant des méthodes getCategoriesAccompaniment, getCategoriesOthers, getCategoriesTraining et getIndex
    • StructureService : Repository disposant des méthodes getStructure et sendMailOnStructureError

Les configurations peuvent être définies sous forme d'objets ou d'énumérations dans un dossier config du projet, les repositories peuvent être définis comme des services Angular classiques sans providedIn: 'root', car c'est le module de la bibliothèque qui se charge de l'injection dans les providers.

Modules

Éléments disponibles

Shared

Composants
Directives
Pipes

Map

Composants
Models
Repositories

Structure

Composants
Models
Repositories

Gestion des versions

Afin de maintenir un cycle de publication claire et de favoriser la rétrocompatibilité, la dénomination des versions suit la spécification décrite par la Gestion sémantique de version

Les versions disponibles ainsi que les journaux décrivant les changements apportés sont disponibles depuis la page des Releases.

Licence

Voir le fichier LICENSE.md du dépôt.

Comments
  • Feat/structure form avatar and buttons

    Feat/structure form avatar and buttons

    Le but de cette PR est de mettre à jour le projet mediation-numérique avec les nouveautés apporté par le projet Res'in.

    Les modifications sont les suivantes:

    1. Rajout du "postcode" dans le model "address" (en optionnel)
    2. Rajout de nouveau type de bouton (SecondaryWide, SecondaryUltraWide, SecondaryOnlyIcon,)
    3. Rajout de 2 tailles pour les icones svg
    4. Généralisation de la fiche structure
    5. Ajout d'un avatar a la fiche structure
    opened by hsubtil 2
  • fix: missing structure exports

    fix: missing structure exports

    @marc-gavanier effectivement je n'avais pas fait au nom de branche, elle était générée automatiquement. J'ouvre cette PR depuis le fork pour tester si la CI passe. La prochaine fois je passerai directement par le repo

    opened by bastiendmt 1
  • Feat/refacto buttons and structures

    Feat/refacto buttons and structures

    Le but de cette PR est de mettre à jour le projet mediation-numérique avec les nouveautés apporté par le projet Res'in.

    Les modifications sont les suivantes:

    • Rajout du "postcode" dans le model "address" (en optionnel)
    • Rajout de nouveau type de bouton (SecondaryWide, SecondaryUltraWide, SecondaryOnlyIcon,)
    • Rajout de 2 tailles pour les icones svg
    • Généralisation de la fiche structure
    opened by yoanvallet 1
  • chore: add anct prettier config

    chore: add anct prettier config

    Ajout du fichier de configuration .prettier. Cela permettra a tous les contributeurs externes a l'ANCT d'avoir la bonne configuration lors des développements.

    enhancement 
    opened by hsubtil 0
  • feat: add buttons styles, css animations and structure form avatar

    feat: add buttons styles, css animations and structure form avatar

    Le but de cette PR est de mettre à jour le projet mediation-numérique avec les nouveautés apporté par le projet Res'in.

    Les modifications sont les suivantes:

    1. Rajout du "postcode" dans le model "address" (en optionnel)
    2. Rajout de nouveau type de bouton (SecondaryWide, SecondaryUltraWide, SecondaryOnlyIcon,)
    3. Rajout de 2 tailles pour les icones svg
    4. Généralisation de la fiche structure
    5. Ajout d'un avatar a la fiche structure
    opened by hsubtil 0
  • Feat/refacto buttons and structures

    Feat/refacto buttons and structures

    Le but de cette PR est de mettre à jour le projet mediation-numérique avec les nouvautés apporté par le projet Res'in.

    Les modifications sont les suivantes:

    • Rajout du "postcode" dans le model "address" (en optionnel)
    • Rajout de nouveau type de bouton (SecondaryWide, SecondaryUltraWide, SecondaryOnlyIcon,)
    • Rajout de 2 tailles pour les icones svg
    • Généralisation de la fiche structure
    opened by yoanvallet 0
Owner
Cartographie Nationale des lieux d'inclusion numérique
Offre la possibilité aux acteurs de l'inclusion numérique locaux de mettre en avant l'offre de médiation numérique sur leur territoire.
Cartographie Nationale des lieux d'inclusion numérique
Tutoriel en francais sur le framework Sheweny, création de bots discord pour les débutants

Tutoriel Sheweny ✨ Sheweny est un framework pour créer des bots sur discord avec discord.js. Bienvenue dans le repo du tutoriel sur le framework Shewe

Sheweny 5 Jul 29, 2022
Anonymify - Outils TypeScript pour l'anonymisation des données en langue Française, compatible Node.js et dans les browsers.

@socialgouv/anonymify Outils TypeScript pour l'anonymisation des données en langue Française. Compatible Node.js et dans les navigateurs Démo : https:

Fabrique numérique des Ministères Sociaux 4 Nov 16, 2022
Mini-site de streaming réalisé dans le cadre d'une présentation orale sur le sujet du protocole RTP pour la matière Services Réseaux.

Mini-site de streaming réalisé dans le cadre d'une présentation orale sur le sujet du protocole RTP pour la matière Services Réseaux.

Quentin 1 Jan 21, 2022
Plateforme de CTF pour étudiants d'Epitech

Plateforme_CTF Plateforme de CTF pour étudiants d'Epitech (les challenges ne sont pas présents sur ce répo, celui-ci nous sert simplement en tant que

Théo Faupin 6 Mar 11, 2022
UserScript de l'overlay de la KCorp pour le /r/place 2022

reddit-place-kcorp original authors : oralekin, LittleEndu, ekgame, Wieku, DeadRote Instructions FR ▶️ - Installer l'extension Tampermonkey sur chrome

CorentinGC 138 Jan 3, 2023
Stealer node.js pour voler des comptes discords et des informations (navigateur, pc, ect)

⚠ À BUT ÉDUCATIF ⚠ LLX404 STEALER V1 Example: Et bien plus de fonctionnalités ! (badges boost, 0 detect, webhook introuvable, injection permanante, ip

˞˞˞˞˞˞˞˞˞˞˞˞˞˞˞˞˞˞˞˞ 31 Jan 2, 2023
Scripts pour la fresque pixel art ZEvent Place 2022

Scripts pour la fresque pixel art ZEvent Place 2022 English: detailed documentation have been translated, see "documentation" folder above. Download t

null 7 Sep 11, 2022