radio-canada-ohdio
v19.0.0
Published
Radio-Canada OHdio
Readme
Radio-Canada OHdio
L'application Web et Mobile Audio de Radio-Canada est la destination unique de tous les auditeurs de Radio-Canada qu'ils écoutent du contenu parlé ou de la musique.
Documentation
Normes de développement : Confluence Dev UI
Normes et règles d'affaires du produit OHdio : Confluence
Design : Figma, Zeroheight
Pré-requis
- Node 8+
- Mettre à jour NPM
npm install npm@latest -g- Éditeur de code Visual Studio Code - recommandé
- Extensions VSCode recommandé - ESLint, GitLens, IndentRainbow
Installation de l'app Ohdio V5 sur votre poste (Windows ou MacOS)
Sous le répertoire GIT/Ohdio
rm -Rf node_modules (Seulement lors de changement de packages au projet)
npm installExécution
APP V5 Permet de :
- Lancer V5 en développement local
- Lancer V5 en développement local (SSR seulement)
- Vérifer le routage
- Supprimer la cache
- Changer de contexte - appOhdio
npm start
Changer le contexte - appOhdio (Entre un changement de projet)Générer une nouvelles composante, un module ou une page
npm run generateGénérer le Sprite d'îcones SVG
npm run generate-svgValidation du typage
npm run type-checkPoints d'entrés
| Service | Lien | Détails | | ------------- | -------------------------------------------------------- | ---------------------------------------- | | Dev | https://lcl-v5.radio-canada.ca/ohdio/ | | Neuro version | http://aq10-rli-services.radio-canada.ca/neuro/version | Déterminé l'env Scoop utilisé sur Sphère |
Déploiement des environnments
| Azure | | ---------------------------------------------------------------------------------------- | | Ohdio Dev | | Ohdio Staging | | OHdio Prod |
Arborescance des fichiers
.
+-- /.vscode
| +-- settings.json // Settings VSCode
+-- /appOhdio // Contient tous les fichiers pour l’éxécution de l’application
| +-- /assets // favicon, images, js, json, svg
| +-- /components // Composantes de présentation (Atomic Design)
| +-- /ads // Composantes publicitaires
| +-- /attachments // Composantes utilisé dans le corps d'article.
| +-- /cards // Composantes de cartes de produits dans une liste ou lineups.
| +-- /interactives // Composantes d’éléments et modules interactifs
| +-- /layouts // Composantes de structure de la mise en page
| +-- /lineups // Composantes de lineups de contenu
| +-- /pictorials // Composantes graphiques
| +-- /textuals // Composantes de contenu et textes statiques
| +-- /views // Composantes des mise en pages
| +-- /containers // Logique affaire, gestion des actions, call aux api, etc
| +-- /AppShell // Fonctionalité globales à OHdio.
| +-- /login3 // Service de connexion utilisateur
| +-- /modules // Modules qui englobe une composante ayant besoin au State de l’application
| +-- /pages // Modèle de pages du site renvoyés selon les différents Routes fourni
| +-- /LegacyRedirects // Redirection dans anciens sites ICI Première et ICI Musique
| +-- /Root // Point d’entrée de l’application
| +-- /lib // Librairies partagé
| +-- /ads // Librairies publicitaires
| +-- /constants // Constantes globales et de contenus
| +-- /enums // Fichier d’énumerations de valeur possible de props
| +-- /helpers // Composantes utilitaires non classifiés
| +-- /hooks // Hooks personalisés
| +-- /observables // Hook d’observation des éléments
| +-- /styled // Librairies de styles pour Styled-Component
| +-- /colors // Palette de couleur et CSSVars
| +-- /grid // Construction de la grille
| +-- /interactives // Constantes des éléments interactifs
| +-- /layouts // Utilitaire true/false
| +-- /pictorials // Styles graphiques
| +-- /textuals // Police et taille de font
| +-- GlobalStyles.js // Reset CSS, styles génériques
| +-- /typeguards // Validation d’union entre deux typages
| +-- /types // Typages globales des composantes Front du projet
| +-- /bff // Typages provenant de Bff-Audio
| +-- /sphere // Typages provenant de Sphère
| +-- /middlewares // Middlewares Redux
| +-- /scripts // Script de génération de composantes avec command
+-- /dist // Destination Bundle (auto-généré)
+-- .eslintrc // Configuration eslint
Convention de code
Lorsque vous écrivez du code (javascript ou styled-component), la configuration de l'éditeur ainsi que l'analyseur de code (EsLint) sont basés sur les conventions airBnb.
| Syntaxe | | --------------------------------------------------------------------- | | Css & Sass | | JS ES6 | | React & JSX |
Langages
- Typescript: Javascript, TS, TSX
- VCinq: HTML5, Javascript
Normes de documentations
- Documentation UI et règles d'affaires sous Figma.
- Chaque
Interfacedoivent avoir des props avec description.
export interface ComponentProps {
/** Description */
prop?: string;
}- Chaque composante doit avoir un titre, une description et son usage.
- Les textes et libellés doivent être sous
lib/constants/labels. - Les liste de valeurs doivent tous être des Enums, si global mettre sous
lib/enums/. - Les typagess personalisés qui ne proviennent pas du backend sont gérés sous
lib/types. - Le typages générés par Bff-Audio sont sous
bff/types. - Le typages générés par Sphère sont sous
lib/types/sphere.
/**
* Description de la composante et usage
*/- Documenter les
functionet paramètres requis.
/**
* Description de la fonctionalité
* @param {#} paramètres - description
* @returns
*/Ordre des importations
- React
- Plugins & Dependences Radio-Canada
- Librairies
- Containers
- Components
- Relatives
Dépendances de projet
Service de publicités @cbcradcan/rcads
Tout les publicité Display.
Lecteur audio @cbcradcan/ohdio-player
Lecteur audio jouant des médias audio et playlists.
Vcinq @cbcradcan/vcinq
Base des projets React.
- Guide d'utilisation
- Changelog et Nouveautés
- Le déploiement de l'environnement basé sur la librairie React se fera en plusieurs phases.
- Bunker/DotCa garde la responsabilité de construire le modèle (state) de chacune des pages web. Bunker/DotCa sera remplacé à terme par une API de présentation, toujours en c#/.net
- BunkerNext (React) effectue toute les logiques de présentations incluant (html, css, interaction javascript)
Widget Perso @cbcradcan/widgetsperso
Gestion de la modale d'inscription à l'info-lettre OHdio par l'équipe Pivot/perso.
Plugins
Quelques uns des modules
npmutilisés :
| Plugin | Détails | Usage | | ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | | classNames | A simple JavaScript utility for conditionally joining classNames together. | Global | | he | “HTML entities” is a robust HTML entity encoder/decoder written in JavaScript. | Text | | html-to-react | A lightweight library that converts raw HTML to a React DOM structure. | BodyHtml | | insane | Lean and configurable whitelist-oriented HTML sanitizer | String helper | | react-animation | Css Animation | Button | | react-aria/focus | A FocusScope manages focus for its descendants. | Global | | react-dom | Entry point to the DOM and server renderers for React. | Global | | react-redux | Redux is a predictable state container for JavaScript apps. | Global | | react-transition-group | A set of components for managing component states (including mounting and unmounting) over time, specifically designed with animation in mind. | Modal, PageTransition, TouchDrawerPanel | | redux-saga | Middleware to handle side effects in Redux | Global | | striptags | This function tries to return a string with all NULL bytes, HTML tags stripped from a given string. | Text | | style-components | Utilising tagged template literals (a recent addition to JavaScript) and the power of CSS, styled-components allows you to write actual CSS code to style your components. | Components |
