diff --git a/.github/workflows/checks-and-tests.yml b/.github/workflows/checks-and-tests.yml index 97a322acf..ec4ccecb3 100644 --- a/.github/workflows/checks-and-tests.yml +++ b/.github/workflows/checks-and-tests.yml @@ -84,7 +84,7 @@ jobs: uses: ./.github/actions/restore-npm-cache - name: Build Application - run: npm run build + run: WITH_GENERATE_IMAGE_FORMATS=false npm run build build-storybook: runs-on: ubuntu-latest diff --git a/README.md b/README.md index 6c3e772e0..ff27f1e7f 100644 --- a/README.md +++ b/README.md @@ -154,7 +154,21 @@ first paragraph. second paragraph displayed after 2 empty lines. ``` -**3 - Write the content of the article** +**3 - Adding Cover** + +To maintain graphic consistency, cover visuals should be in a photorealistic style and preferably related to the topics of your articles. + +By "photorealistic style" we mean: no cartoons, no 3D visuals, no illustrations, no graphics, no logos, etc. + +To choose your image, you have several options: + +- Head to [La Boîte à Outils de l'Astronaute](https://drive.google.com/drive/folders/1SLZRiqHSel3AWNSVbrblfg3ON_XwR5RU?usp=drive_link) to access ready-to-use image banks +- If you can't find what you're looking for, you can access free and royalty-free image banks like [AdobeStock](https://stock.adobe.com/fr/), [Pexels](https://www.pexels.com/fr-fr/), [Unsplash](https://unsplash.com/fr) +- If you still can't find an image despite these different solutions, you can ask Thomas Péjout to generate an image for you with MidJourney + +In order to have a quality image, we ask you to integrate an image with a minimum width of 3000 px + +**4 - Write the content of the article** The content of the article be written in markdown. You can use one of the solutions: @@ -186,7 +200,7 @@ If you need to add internal anchor links from your article to other article of o > Warning: Don't add html in your markdown, you don't have to override the blog template in the markdown. -**4 - Add your pull request** +**5 - Add your pull request** Create your branch and add your pull request. ```bash diff --git a/_articles/en/2020-12-09-monitor-your-docker-containers.md b/_articles/en/2020-12-09-monitor-your-docker-containers.md index 2430e4e1a..e41a17635 100644 --- a/_articles/en/2020-12-09-monitor-your-docker-containers.md +++ b/_articles/en/2020-12-09-monitor-your-docker-containers.md @@ -9,7 +9,8 @@ excerpt: >- `docker stats` in ssh does not allow you to correctly assess your production environment. We will therefore see how to meet this monitoring need for containers in production. -oldCover: /assets/2017-12-12-monitorer-ses-containers-docker/cover.jpeg +cover: + path: /imgs/articles/2020-12-09-monitor-your-docker-containers/cover.jpg categories: [] authors: - qneyrat diff --git a/_articles/en/2020-12-15-using-traefik-as-a-reverse-proxy.md b/_articles/en/2020-12-15-using-traefik-as-a-reverse-proxy.md index 49782d5b3..aa1d228e1 100644 --- a/_articles/en/2020-12-15-using-traefik-as-a-reverse-proxy.md +++ b/_articles/en/2020-12-15-using-traefik-as-a-reverse-proxy.md @@ -7,7 +7,8 @@ title: Using Traefik as a reverse proxy excerpt: >- In need for exposing websites and applications easily on the internet with a valid SSL certificate ? You're on the right spot ! :) -oldCover: /assets/2019-12-18-utiliser-traefik-comme-reverse-proxy/cover.jpg +cover: + path: /imgs/articles/2020-12-15-using-traefik-as-a-reverse-proxy/cover.jpg categories: [] authors: - jmoati diff --git a/_articles/en/2021-01-05-introduction-gitlab-ci.md b/_articles/en/2021-01-05-introduction-gitlab-ci.md index 44ad67601..59e7e0a94 100644 --- a/_articles/en/2021-01-05-introduction-gitlab-ci.md +++ b/_articles/en/2021-01-05-introduction-gitlab-ci.md @@ -8,7 +8,8 @@ excerpt: >- This article presents some of the possibilities that GitLab CI/CD offers. You will find on the Codelabs platform two tutorials linked to this article, which will show you two use cases. -oldCover: /assets/2018-09-19-introduction-gitlab-ci/cover.png +cover: + path: /imgs/articles/2021-01-05-introduction-gitlab-ci/cover.jpg categories: - architecture authors: diff --git a/_articles/en/2021-03-08-women-in-it.md b/_articles/en/2021-03-08-women-in-it.md index 751f0bd2b..f68b34f2b 100644 --- a/_articles/en/2021-03-08-women-in-it.md +++ b/_articles/en/2021-03-08-women-in-it.md @@ -10,6 +10,8 @@ excerpt: > in IT. The purpose of this article is to tell you about our experience to give you a better vision of why there aren't many of us, why some give up, and, above all, how to make that change. +cover: + path: /imgs/articles/2021-03-08-women-in-it/cover.jpg categories: [] authors: - marishka diff --git a/_articles/en/2021-09-22-po-free-developer-time-with-integromat.md b/_articles/en/2021-09-22-po-free-developer-time-with-integromat.md index bcfe090c7..fa1702e07 100644 --- a/_articles/en/2021-09-22-po-free-developer-time-with-integromat.md +++ b/_articles/en/2021-09-22-po-free-developer-time-with-integromat.md @@ -8,7 +8,8 @@ excerpt: >- You're part of a small team with a lot of features to release quickly and a PoC needed to test a product but you only have little to no tech skills ? NoCode is what you're looking for ! -oldCover: /assets/2021-09-22-po-liberez-du-temps-a-vos-developpeurs-avec-integromat/cover.jpg +cover: + path: /imgs/articles/2021-09-22-po-free-developer-time-with-integromat/cover.jpg categories: [] authors: - marianne diff --git a/_articles/en/2021-09-29-dependency-injection.md b/_articles/en/2021-09-29-dependency-injection.md index 7a44ebba3..04eb42d78 100644 --- a/_articles/en/2021-09-29-dependency-injection.md +++ b/_articles/en/2021-09-29-dependency-injection.md @@ -8,6 +8,8 @@ excerpt: >- You work with Symfony, but the concept of dependency injection is a little blurry for you? Find out how to take advantage of the component reading this article. +cover: + path: /imgs/articles/2021-09-29-dependency-injection/cover.jpg categories: - php authors: diff --git a/_articles/en/2022-01-31-build-website-with-nextjs.md b/_articles/en/2022-01-31-build-website-with-nextjs.md index 36d26dfcc..a166ffc58 100644 --- a/_articles/en/2022-01-31-build-website-with-nextjs.md +++ b/_articles/en/2022-01-31-build-website-with-nextjs.md @@ -5,6 +5,8 @@ date: '2022-01-31' slug: how-to-build-your-website-with-nextjs title: How To Build Your Website With NextJS excerpt: Tutorial on the basics of NextJS for building a website. +cover: + path: /imgs/articles/2022-01-31-how-to-build-your-website-with-nextjs/cover.jpg categories: - javascript authors: diff --git a/_articles/en/2022-02-22-throwback-to-nantes-2021-devfest-my-first-conference.md b/_articles/en/2022-02-22-throwback-to-nantes-2021-devfest-my-first-conference.md index f29f677d2..a22aa7f0c 100644 --- a/_articles/en/2022-02-22-throwback-to-nantes-2021-devfest-my-first-conference.md +++ b/_articles/en/2022-02-22-throwback-to-nantes-2021-devfest-my-first-conference.md @@ -7,6 +7,8 @@ title: 'Throwback to Nantes'' 2021 DevFest, my first conference' excerpt: >- Finally! After 4 years of working as a web developer, I finally attended a conference linked to my job & passion: the DevFest Nantes. +cover: + path: /imgs/articles/2022-02-22-throwback-to-nantes-2021-devfest-my-first-conference/cover.jpg categories: [] authors: - jbberthet diff --git a/_articles/en/2022-07-27-responsive-accessible-typography.md b/_articles/en/2022-07-27-responsive-accessible-typography.md index 44e88487a..f1ecd4404 100644 --- a/_articles/en/2022-07-27-responsive-accessible-typography.md +++ b/_articles/en/2022-07-27-responsive-accessible-typography.md @@ -9,7 +9,8 @@ excerpt: >- take for granted. There is much noise around this topic. Pixels? Are breakpoints enough to switch sizes across devices? Do we even need breakpoints at all? -oldCover: /assets/2022-07-27-responsive-accessible-typography/read-me.png +cover: + path: /imgs/articles/2022-07-27-responsive-accessible-typography/cover.jpg categories: [] authors: - meugeniatr diff --git a/_articles/en/2023-02-09-monolith-to-microservices.md b/_articles/en/2023-02-09-monolith-to-microservices.md index 46e700b3e..7cd93a02a 100644 --- a/_articles/en/2023-02-09-monolith-to-microservices.md +++ b/_articles/en/2023-02-09-monolith-to-microservices.md @@ -7,6 +7,8 @@ title: 'Migrating from a Monolith to Microservices: A Step-by-Step Guide' excerpt: >- This article is a step-by-step guide on how to migrate from a Monolith to Microservices +cover: + path: /imgs/articles/2023-02-09-monolith-to-microservices/cover.jpg categories: [] authors: - marishka diff --git a/_articles/fr/2023-06-28-un-pont-entre-les-mondes-comment-les-design-tokens-facilitent-la-cooperation-entre-developpeurs-et-designers.md b/_articles/fr/2023-06-28-un-pont-entre-les-mondes-comment-les-design-tokens-facilitent-la-cooperation-entre-developpeurs-et-designers.md index c993f1961..439e5bc60 100644 --- a/_articles/fr/2023-06-28-un-pont-entre-les-mondes-comment-les-design-tokens-facilitent-la-cooperation-entre-developpeurs-et-designers.md +++ b/_articles/fr/2023-06-28-un-pont-entre-les-mondes-comment-les-design-tokens-facilitent-la-cooperation-entre-developpeurs-et-designers.md @@ -13,6 +13,8 @@ excerpt: >- designers. Vous saurez tout sur leur rôle de langue commune, leur impact sur la créativité et la cohérence visuelle. categories: [] +cover: + path: /imgs/articles/2023-06-28-un-pont-entre-les-mondes-comment-les-design-tokens-facilitent-la-cooperation-entre-developpeurs-et-designers/cover.jpg authors: - fpasquet keywords: diff --git a/_articles/fr/2023-08-09-comment-creer-de-la-dette-technique-des-le-debut-d-un-nouveau-projet.md b/_articles/fr/2023-08-09-comment-creer-de-la-dette-technique-des-le-debut-d-un-nouveau-projet.md index 224d434ad..7b29e4ecc 100644 --- a/_articles/fr/2023-08-09-comment-creer-de-la-dette-technique-des-le-debut-d-un-nouveau-projet.md +++ b/_articles/fr/2023-08-09-comment-creer-de-la-dette-technique-des-le-debut-d-un-nouveau-projet.md @@ -9,7 +9,6 @@ excerpt: >- technique qui nous fait perdre du temps et qui nous rend fou au point de vérifier qui a fait le code. Vous aussi vous voulez entrer dans la postérité lors d’un git blame et mal concevoir votre produit ? -oldCover: /assets/2023-08-09-comment-creer-de-la-dette-technique-des-le-debut-d-un-projet/logo.png categories: - php - javascript diff --git a/_articles/fr/2023-08-09-comprendre-et-personnaliser-son-environnement-docker.md b/_articles/fr/2023-08-09-comprendre-et-personnaliser-son-environnement-docker.md index dbe3d88ae..854facbc8 100644 --- a/_articles/fr/2023-08-09-comprendre-et-personnaliser-son-environnement-docker.md +++ b/_articles/fr/2023-08-09-comprendre-et-personnaliser-son-environnement-docker.md @@ -7,7 +7,6 @@ title: Comprendre et Personnaliser son environnement Docker excerpt: >- Comprendre comment fonctionne Docker et être capable de créer son environnement sur mesure -oldCover: /assets/2023-07-25-comprendre-et-personnaliser-ses-docker/cover.jpg categories: - architecture authors: diff --git a/_articles/fr/2023-10-23-event-driven-architecture.md b/_articles/fr/2023-10-23-event-driven-architecture.md index 8ff761bda..984cd7911 100644 --- a/_articles/fr/2023-10-23-event-driven-architecture.md +++ b/_articles/fr/2023-10-23-event-driven-architecture.md @@ -5,6 +5,8 @@ date: '2023-10-23' slug: event-driven-architecture-examples title: 'Comment implémenter une Event Driven Architecture ? Définition et exemples' excerpt: 'Pourquoi, quand et comment mettre en place une event driven architecture ? Exemples et conseils' +cover: + path: /imgs/articles/2023-10-23-event-driven-architecture/cover.jpg authors: - marishka categories: @@ -67,7 +69,7 @@ Le service _Catalog_ réduit le stock disponible pour les produits concernés. Reprenons ensemble le fonctionnement du modèle AMQP 0-9-1 (vous pouvez trouver la documentation [ici](https://www.rabbitmq.com/tutorials/amqp-concepts.html)) : -![]({BASE_URL}/imgs/articles/2023-10-23-edd/event-driven-architecture-rabbitmq.png) +![]({BASE_URL}/imgs/articles/2023-10-23-event-driven-architecture/event-driven-architecture-rabbitmq.png) Les messages sont publiés sur des _exchanges_, voyez ça comme une boîte aux lettres. Les exchanges distribuent ensuite des copies des messages aux _queues_ à l'aide des _bindings_. diff --git a/_articles/fr/2023-10-26-how-to-git-gud.md b/_articles/fr/2023-10-26-how-to-git-gud.md index 20ed61f1b..f191c297f 100644 --- a/_articles/fr/2023-10-26-how-to-git-gud.md +++ b/_articles/fr/2023-10-26-how-to-git-gud.md @@ -4,8 +4,10 @@ lang: fr date: 2023-10-26 slug: les-commandes-git title: >- - How to git gud : quelles commandes Git utiliser pour améliorer son workflow au quotidien ? + How to git gud : quelles commandes Git utiliser pour améliorer son workflow au quotidien ? excerpt: Vous trouverez dans cet article une sélection de commandes Git qui vous permettront de simplifier votre quotidien ! +cover: + path: /imgs/articles/2023-10-26-how-to-git-gud/cover.jpg categories: [] keywords: - git diff --git a/_articles/fr/2023-10-30-pourquoi-creer-design-system.md b/_articles/fr/2023-10-30-pourquoi-creer-design-system.md index aeffe0a6b..5c539383d 100644 --- a/_articles/fr/2023-10-30-pourquoi-creer-design-system.md +++ b/_articles/fr/2023-10-30-pourquoi-creer-design-system.md @@ -5,6 +5,8 @@ date: 2023-10-30 slug: pourquoi-creer-design-system title: "Design System : Qu'est-ce que c'est et pourquoi en avez-vous besoin ?" excerpt: Plongez dans le monde du Design System pour comprendre comment il assure la cohérence visuelle et fonctionnelle dans la conception. Explorez ce qu'est un Design System, pourquoi il est essentiel, le moment propice pour envisager sa création, ainsi que les étapes à respecter. +cover: + path: /imgs/articles/2023-10-30-pourquoi-creer-design-system/cover.jpg categories: [] keywords: - design system @@ -194,7 +196,7 @@ Chacun de ces outils présente des avantages spécifiques, et le choix dépendra ### Outils de Documentation -Plusieurs outils de documentation, comme **Storybook** et **Zeroheight**, sont conçus pour simplifier la documentation des composants de l'interface utilisateur et des Design Systems. Storybook propose une interface conviviale pour présenter de manière structurée les composants, leurs variations et leurs spécifications, tandis que Zeroheight permet de créer des documents détaillés mettant en avant les composants, leurs utilisations et leurs règles. +Plusieurs outils de documentation, comme **Storybook** et **Zeroheight**, sont conçus pour simplifier la documentation des composants de l'interface utilisateur et des Design Systems. Storybook propose une interface conviviale pour présenter de manière structurée les composants, leurs variations et leurs spécifications, tandis que Zeroheight permet de créer des documents détaillés mettant en avant les composants, leurs utilisations et leurs règles.

En résumé

diff --git a/_articles/fr/2023-11-03-atomic-design.md b/_articles/fr/2023-11-03-atomic-design.md index 9a56139de..7318fa235 100644 --- a/_articles/fr/2023-11-03-atomic-design.md +++ b/_articles/fr/2023-11-03-atomic-design.md @@ -5,6 +5,8 @@ date: 2023-11-03 slug: atomic-design title: "Atomic Design : pour des interfaces modulaires et évolutives" excerpt: Explorez l'approche de l'Atomic Design et ses bénéfices pour vos développements d'interfaces. Les principes de modularité, flexibilité et maintenabilité sont des éléments-clés pour vous guider vers le succès. +cover: + path: /imgs/articles/2023-11-03-atomic-design/cover.jpg categories: - javascript keywords: diff --git a/_articles/fr/2023-11-06-micro-frontend.md b/_articles/fr/2023-11-06-micro-frontend.md index bbc8a9ff0..22f864a7a 100644 --- a/_articles/fr/2023-11-06-micro-frontend.md +++ b/_articles/fr/2023-11-06-micro-frontend.md @@ -5,6 +5,8 @@ date: 2023-11-06 slug: micro-frontend title: "Micro frontend : la solution pour une meilleure maintenabilité de vos applications web" excerpt: "Comprendre et mettre en place le concept de micro frontend : cas d'usage concrets et exemples d'implémentations basés sur notre expérience" +cover: + path: /imgs/articles/2023-11-06-micro-frontend/cover.jpg categories: - javascript keywords: diff --git a/_articles/fr/2023-11-10-system-props.md b/_articles/fr/2023-11-10-system-props.md index 8b387c18b..60802c854 100644 --- a/_articles/fr/2023-11-10-system-props.md +++ b/_articles/fr/2023-11-10-system-props.md @@ -5,6 +5,8 @@ date: 2023-11-10 slug: system-props title: "System Props : Flexibilité et cohérence dans le Design" excerpt: Découvrez ce que sont les System Props, quels sont leurs avantages, et comment les intégrer pour améliorer vos composants d'interface. +cover: + path: /imgs/articles/2023-11-10-system-props/cover.jpg categories: - javascript keywords: diff --git a/_articles/fr/2023-11-14-rex-plateforme-data.md b/_articles/fr/2023-11-14-rex-plateforme-data.md index 5db9fa80a..8d9b58dc6 100644 --- a/_articles/fr/2023-11-14-rex-plateforme-data.md +++ b/_articles/fr/2023-11-14-rex-plateforme-data.md @@ -9,6 +9,8 @@ excerpt: | des extractions, de la transformation et de la visualisation très rapidement. Cependant, pour assurer la pérénnité et l'évolutivité de ces analyses, il est nécessaire de monter une plateforme dédiée et d'industrialiser les différents processus. C'est le sujet de cet article. +cover: + path: /imgs/articles/2023-11-14-rex-plateforme-data/cover.jpg authors: - tthuon categories: diff --git a/_articles/fr/2023-11-27-rex-custom-components-react-varnish-esi.md b/_articles/fr/2023-11-27-rex-custom-components-react-varnish-esi.md index b41bd5930..5a995d3e5 100644 --- a/_articles/fr/2023-11-27-rex-custom-components-react-varnish-esi.md +++ b/_articles/fr/2023-11-27-rex-custom-components-react-varnish-esi.md @@ -5,6 +5,8 @@ date: 2023-11-27 slug: integration-composants-react-avec-esi-dans-site-no-code title: "REX Studio : Intégration de composants React avec Varnish ESI dans un site No Code" excerpt: "Découvrez comment notre Studio a intégré avec succès des composants React et Varnish ESI sur un site No Code. Explorez les défis à relever et les solutions mises en œuvre" +cover: + path: /imgs/articles/2023-11-27-rex-custom-components-react-varnish-esi/cover.jpg categories: - javascript keywords: diff --git a/_articles/fr/2023-11-28-construire-un-design-system-robuste-avec-react-les-fondations-essentielles.md b/_articles/fr/2023-11-28-construire-un-design-system-robuste-avec-react-les-fondations-essentielles.md index 5821c9388..89881e064 100644 --- a/_articles/fr/2023-11-28-construire-un-design-system-robuste-avec-react-les-fondations-essentielles.md +++ b/_articles/fr/2023-11-28-construire-un-design-system-robuste-avec-react-les-fondations-essentielles.md @@ -5,6 +5,8 @@ date: 2023-11-28 slug: design-system-react title: "Construire un Design System robuste avec React : les fondations essentielles" excerpt: "Découvrez comment créer un Design System solide avec React. Ce guide simplifié explore les bases essentielles pour concevoir une interface cohérente, améliorer le développement et offrir une expérience utilisateur harmonieuse." +cover: + path: /imgs/articles/2023-11-28-construire-un-design-system-robuste-avec-react-les-fondations-essentielles/cover.jpg categories: - javascript keywords: diff --git a/_articles/fr/2023-12-05-integration-crm.md b/_articles/fr/2023-12-05-integration-crm.md index a238c60cb..0d3d25e6b 100644 --- a/_articles/fr/2023-12-05-integration-crm.md +++ b/_articles/fr/2023-12-05-integration-crm.md @@ -5,6 +5,8 @@ date: 2023-12-05 slug: integration-crm-avec-plateforme-e-commerce title: "Comment intégrer votre CRM avec votre plateforme e-commerce" excerpt: "Découvrez un cas d'usage d'intégration d'un CRM avec une application e-commerce, en asynchrone, avec Hubspot et RabbitMQ" +cover: + path: /imgs/articles/2023-12-05-integration-crm/cover.jpg categories: - php keywords: diff --git a/_articles/fr/2024-01-10-typage-generique-en-php.md b/_articles/fr/2024-01-10-typage-generique-en-php.md index 17f29fc47..171297988 100644 --- a/_articles/fr/2024-01-10-typage-generique-en-php.md +++ b/_articles/fr/2024-01-10-typage-generique-en-php.md @@ -5,6 +5,8 @@ date: 2024-01-10 slug: typage-generique-php title: "Typage générique en PHP : définition, conseils et exemples" excerpt: "Découvrez comment réaliser du typage générique en PHP : introduction et définition du concept, conseils et explications pas-à-pas de cas pratique." +cover: + path: /imgs/articles/2024-01-10-typage-generique-en-php/cover.jpg categories: - php keywords: diff --git a/_articles/fr/2024-01-17-expressionlanguage-comment-utiliser-ce-composant-symfony.md b/_articles/fr/2024-01-17-expressionlanguage-comment-utiliser-ce-composant-symfony.md index 7b4391033..1cf9b0329 100644 --- a/_articles/fr/2024-01-17-expressionlanguage-comment-utiliser-ce-composant-symfony.md +++ b/_articles/fr/2024-01-17-expressionlanguage-comment-utiliser-ce-composant-symfony.md @@ -6,6 +6,8 @@ slug: symfony-expressionlanguage title: 'Symfony ExpressionLanguage : Comment utiliser ce composant ?' excerpt: >- Le composant Symfony ExpressionLanguage : qu'est-ce que c'est ? Quand et comment l'utiliser ? Comment créer des expressions lors de cas plus complexes ? +cover: + path: /imgs/articles/2024-01-17-expressionlanguage-comment-utiliser-ce-composant-symfony/cover.jpg categories: - php authors: diff --git a/_articles/fr/2024-02-19-quelques-conseils-pour-optimiser-votre-environnement-de-travail-sous-linux.md b/_articles/fr/2024-02-19-quelques-conseils-pour-optimiser-votre-environnement-de-travail-sous-linux.md index 013d45248..401e2ee90 100644 --- a/_articles/fr/2024-02-19-quelques-conseils-pour-optimiser-votre-environnement-de-travail-sous-linux.md +++ b/_articles/fr/2024-02-19-quelques-conseils-pour-optimiser-votre-environnement-de-travail-sous-linux.md @@ -7,6 +7,8 @@ title: 'Quelques conseils pour optimiser votre environnement de travail sous Lin excerpt: >- Travailler efficacement sous Linux va bien au-delà des simples commandes du terminal. Dans cet article, découvrez quelques conseils pour optimiser votre environnement de travail et améliorer votre expérience utilisateur. categories: [] +cover: + path: /imgs/articles/2024-02-19-quelques-conseils-pour-optimiser-votre-environnement-de-travail-sous-linux/cover.jpg authors: - nicolas keywords: diff --git a/_articles/fr/2024-04-03-retour-sur-la-flowcon-2024.md b/_articles/fr/2024-04-03-retour-sur-la-flowcon-2024.md index bd0e61f7c..2c6a9b4d4 100644 --- a/_articles/fr/2024-04-03-retour-sur-la-flowcon-2024.md +++ b/_articles/fr/2024-04-03-retour-sur-la-flowcon-2024.md @@ -6,7 +6,8 @@ slug: retour-sur-la-flowcon-2024 title: 'Retour sur la Flowcon 2024' excerpt: >- Trois astronautes reviennent sur la Flowcon, la conférence sur le développement de logiciel en flux, qui a eu lieu les 6 et 7 Mars 2024 -cover: /assets/2024-04-03-retour-sur-la-flowcon-2024/cover.png +cover: + path: /imgs/articles/2024-04-03-retour-sur-la-flowcon-2024/cover.jpg categories: - agile authors: @@ -75,11 +76,11 @@ Les ateliers, quant à eux, ont été une véritable bouffée d'air frais, diver En tant qu’architecte applicatif/lead développeuse, je suis allée à la Flowcon pour d’un côté améliorer mes connaissances sur l’agilité, et de l’autre pour suivre des conférences plus techniques liées à l’architecture. -La conférence regroupant les deux, c’était _L’architecture n’appartient pas aux architectes !_ par [Fathi Bellahcene](https://fr.linkedin.com/in/fathi-bellahcene-50774564) de Veepee. +La conférence regroupant les deux, c’était _L’architecture n’appartient pas aux architectes !_ par [Fathi Bellahcene](https://fr.linkedin.com/in/fathi-bellahcene-50774564) de Veepee. - - + + Il explique le fonctionnement de l’équipe (voire des équipes) d’architecture mais aussi des équipes de développement qui sont parties prenantes des décisions techniques les concernant. >Le pôle architecte doit créer une relation de confiance avec les lead devs et sachants des équipes et leur donner de la liberté car, dans leur écosystème, l’architecte est considéré comme une fonction support “Comment puis-je aider ?”. @@ -87,10 +88,10 @@ Il explique le fonctionnement de l’équipe (voire des équipes) d’architectu Le prix de la conférence sans langue de bois revient à Aboubakr Bekkali et Noémie Aung de chez L’Occitane pour _Chouette, un problème!_. J’ai beaucoup aimé la franchise qu’ils ont eue sur les problématiques quand ils sont arrivés chez L’Occitane avec des équipes en souffrance et sur le parcours difficile pour en sortir. Ils ont expliqué les enjeux et montré les facettes d’une conduite du changement. Ils ont mis en place du Lean, d’abord seuls puis accompagnés d’une coach (comme quoi, l’[accompagnement c’est important](https://eleven-labs.com/audit-systeme-information/)), et petit à petit les résultats sont apparus. > J’y ai retenu qu'“il faut savoir poser un problème” et que sa résolution peut prendre plusieurs mois, ainsi que "la discipline est la clé du succès". -Par curiosité, je suis allée assister à la conférence de [Chloé Girardin](https://fr.linkedin.com/in/chlo%C3%A9-girardin-34766395) _Product Marketing Manager dans la vraie vie_. Même si je ne suis pas du tout la cible, Chloé, par sa personnalité et sa vision, a su me vendre son métier et m'entraîner dans son quotidien. Sur certains points, cela m’a fait penser à Eleven Labs : la [gamification](https://eleven-labs.com/galaxie-eleven/) et une [culture d’entreprise forte](https://eleven-labs.com/culture-entreprise/) pour créer des liens entre les consultants et fédérer ([🦝](https://emojipedia.org/fr/raton-laveur) Forever). +Par curiosité, je suis allée assister à la conférence de [Chloé Girardin](https://fr.linkedin.com/in/chlo%C3%A9-girardin-34766395) _Product Marketing Manager dans la vraie vie_. Même si je ne suis pas du tout la cible, Chloé, par sa personnalité et sa vision, a su me vendre son métier et m'entraîner dans son quotidien. Sur certains points, cela m’a fait penser à Eleven Labs : la [gamification](https://eleven-labs.com/galaxie-eleven/) et une [culture d’entreprise forte](https://eleven-labs.com/culture-entreprise/) pour créer des liens entre les consultants et fédérer ([🦝](https://emojipedia.org/fr/raton-laveur) Forever). \ -![Product Marketing Manager dans la vraie vie]({BASE_URL}/imgs/articles/2024-04-03-retour-sur-la-flowcon-2024/pmm.jpg) +![Product Marketing Manager dans la vraie vie]({BASE_URL}/imgs/articles/2024-04-03-retour-sur-la-flowcon-2024/pmm.jpg) Je ne vais pas reparler de la conférence d’Eric Fourboul sur la _Géographie des impacts environnementaux du numérique - Exemple des datacenters_ car Julien en a déjà parlé, mais elle met en lumière ces problématiques souvent oubliées dans l’IT. diff --git a/_assets/articles/2020-12-09-monitor-your-docker-containers/cover.jpg b/_assets/articles/2020-12-09-monitor-your-docker-containers/cover.jpg new file mode 100644 index 000000000..aa7dbc6ed Binary files /dev/null and b/_assets/articles/2020-12-09-monitor-your-docker-containers/cover.jpg differ diff --git a/_assets/articles/2020-12-15-using-traefik-as-a-reverse-proxy/cover.jpg b/_assets/articles/2020-12-15-using-traefik-as-a-reverse-proxy/cover.jpg new file mode 100644 index 000000000..d15a32917 Binary files /dev/null and b/_assets/articles/2020-12-15-using-traefik-as-a-reverse-proxy/cover.jpg differ diff --git a/_assets/articles/2021-01-05-introduction-gitlab-ci/cover.jpg b/_assets/articles/2021-01-05-introduction-gitlab-ci/cover.jpg new file mode 100644 index 000000000..1dcab3ae2 Binary files /dev/null and b/_assets/articles/2021-01-05-introduction-gitlab-ci/cover.jpg differ diff --git a/_assets/articles/2021-03-08-women-in-it/cover.jpg b/_assets/articles/2021-03-08-women-in-it/cover.jpg new file mode 100644 index 000000000..f21a75075 Binary files /dev/null and b/_assets/articles/2021-03-08-women-in-it/cover.jpg differ diff --git a/_assets/articles/2021-09-22-po-free-developer-time-with-integromat/cover.jpg b/_assets/articles/2021-09-22-po-free-developer-time-with-integromat/cover.jpg new file mode 100644 index 000000000..335b94c76 Binary files /dev/null and b/_assets/articles/2021-09-22-po-free-developer-time-with-integromat/cover.jpg differ diff --git a/_assets/articles/2021-09-29-dependency-injection/cover.jpg b/_assets/articles/2021-09-29-dependency-injection/cover.jpg new file mode 100644 index 000000000..a3212872f Binary files /dev/null and b/_assets/articles/2021-09-29-dependency-injection/cover.jpg differ diff --git a/_assets/articles/2022-01-31-how-to-build-your-website-with-nextjs/cover.jpg b/_assets/articles/2022-01-31-how-to-build-your-website-with-nextjs/cover.jpg new file mode 100644 index 000000000..317f1ae91 Binary files /dev/null and b/_assets/articles/2022-01-31-how-to-build-your-website-with-nextjs/cover.jpg differ diff --git a/_assets/articles/2022-02-22-throwback-to-nantes-2021-devfest-my-first-conference/cover.jpg b/_assets/articles/2022-02-22-throwback-to-nantes-2021-devfest-my-first-conference/cover.jpg new file mode 100644 index 000000000..36f16110b Binary files /dev/null and b/_assets/articles/2022-02-22-throwback-to-nantes-2021-devfest-my-first-conference/cover.jpg differ diff --git a/_assets/articles/2022-07-27-responsive-accessible-typography/cover.jpg b/_assets/articles/2022-07-27-responsive-accessible-typography/cover.jpg new file mode 100644 index 000000000..d687fe159 Binary files /dev/null and b/_assets/articles/2022-07-27-responsive-accessible-typography/cover.jpg differ diff --git a/_assets/articles/2023-02-09-monolith-to-microservices/cover.jpg b/_assets/articles/2023-02-09-monolith-to-microservices/cover.jpg new file mode 100644 index 000000000..5fe693c26 Binary files /dev/null and b/_assets/articles/2023-02-09-monolith-to-microservices/cover.jpg differ diff --git a/_assets/articles/2023-06-28-un-pont-entre-les-mondes-comment-les-design-tokens-facilitent-la-cooperation-entre-developpeurs-et-designers/cover.jpg b/_assets/articles/2023-06-28-un-pont-entre-les-mondes-comment-les-design-tokens-facilitent-la-cooperation-entre-developpeurs-et-designers/cover.jpg new file mode 100644 index 000000000..8e46098f4 Binary files /dev/null and b/_assets/articles/2023-06-28-un-pont-entre-les-mondes-comment-les-design-tokens-facilitent-la-cooperation-entre-developpeurs-et-designers/cover.jpg differ diff --git a/_assets/articles/2023-07-25-comprendre-et-personnaliser-ses-docker/cover.jpg b/_assets/articles/2023-07-25-comprendre-et-personnaliser-ses-docker/cover.jpg deleted file mode 100644 index b195bc006..000000000 Binary files a/_assets/articles/2023-07-25-comprendre-et-personnaliser-ses-docker/cover.jpg and /dev/null differ diff --git a/_assets/articles/2023-08-09-comment-creer-de-la-dette-technique-des-le-debut-d-un-nouveau-projet/logo.png b/_assets/articles/2023-08-09-comment-creer-de-la-dette-technique-des-le-debut-d-un-nouveau-projet/logo.png deleted file mode 100644 index 47e9126fe..000000000 Binary files a/_assets/articles/2023-08-09-comment-creer-de-la-dette-technique-des-le-debut-d-un-nouveau-projet/logo.png and /dev/null differ diff --git a/_assets/articles/2023-10-23-event-driven-architecture/cover.jpg b/_assets/articles/2023-10-23-event-driven-architecture/cover.jpg new file mode 100644 index 000000000..e128ac0b9 Binary files /dev/null and b/_assets/articles/2023-10-23-event-driven-architecture/cover.jpg differ diff --git a/_assets/articles/2023-10-23-edd/event-driven-architecture-rabbitmq.png b/_assets/articles/2023-10-23-event-driven-architecture/event-driven-architecture-rabbitmq.png similarity index 100% rename from _assets/articles/2023-10-23-edd/event-driven-architecture-rabbitmq.png rename to _assets/articles/2023-10-23-event-driven-architecture/event-driven-architecture-rabbitmq.png diff --git a/_assets/articles/2023-10-26-how-to-git-gud/cover.jpg b/_assets/articles/2023-10-26-how-to-git-gud/cover.jpg new file mode 100644 index 000000000..8498a0ac2 Binary files /dev/null and b/_assets/articles/2023-10-26-how-to-git-gud/cover.jpg differ diff --git a/_assets/articles/2023-10-30-pourquoi-creer-design-system/cover.jpg b/_assets/articles/2023-10-30-pourquoi-creer-design-system/cover.jpg new file mode 100644 index 000000000..d15a32917 Binary files /dev/null and b/_assets/articles/2023-10-30-pourquoi-creer-design-system/cover.jpg differ diff --git a/_assets/articles/2023-11-03-atomic-design/cover.jpg b/_assets/articles/2023-11-03-atomic-design/cover.jpg new file mode 100644 index 000000000..9c1a3ac7f Binary files /dev/null and b/_assets/articles/2023-11-03-atomic-design/cover.jpg differ diff --git a/_assets/articles/2023-11-06-micro-frontend/cover.jpg b/_assets/articles/2023-11-06-micro-frontend/cover.jpg new file mode 100644 index 000000000..4ab04c081 Binary files /dev/null and b/_assets/articles/2023-11-06-micro-frontend/cover.jpg differ diff --git a/_assets/articles/2023-11-10-system-props/cover.jpg b/_assets/articles/2023-11-10-system-props/cover.jpg new file mode 100644 index 000000000..412bea71d Binary files /dev/null and b/_assets/articles/2023-11-10-system-props/cover.jpg differ diff --git a/_assets/articles/2023-11-14-rex-plateforme-data/cover.jpg b/_assets/articles/2023-11-14-rex-plateforme-data/cover.jpg new file mode 100644 index 000000000..a88b6f5ba Binary files /dev/null and b/_assets/articles/2023-11-14-rex-plateforme-data/cover.jpg differ diff --git a/_assets/articles/2023-11-27-rex-custom-components-react-varnish-esi/cover.jpg b/_assets/articles/2023-11-27-rex-custom-components-react-varnish-esi/cover.jpg new file mode 100644 index 000000000..ec8e0c090 Binary files /dev/null and b/_assets/articles/2023-11-27-rex-custom-components-react-varnish-esi/cover.jpg differ diff --git a/_assets/articles/2023-11-28-construire-un-design-system-robuste-avec-react-les-fondations-essentielles/cover.jpg b/_assets/articles/2023-11-28-construire-un-design-system-robuste-avec-react-les-fondations-essentielles/cover.jpg index 809ac92f1..6040646e3 100644 Binary files a/_assets/articles/2023-11-28-construire-un-design-system-robuste-avec-react-les-fondations-essentielles/cover.jpg and b/_assets/articles/2023-11-28-construire-un-design-system-robuste-avec-react-les-fondations-essentielles/cover.jpg differ diff --git a/_assets/articles/2023-12-05-integration-crm/cover.jpg b/_assets/articles/2023-12-05-integration-crm/cover.jpg new file mode 100644 index 000000000..bc5114c89 Binary files /dev/null and b/_assets/articles/2023-12-05-integration-crm/cover.jpg differ diff --git a/_assets/articles/2024-01-10-typage-generique-en-php/cover.jpg b/_assets/articles/2024-01-10-typage-generique-en-php/cover.jpg new file mode 100644 index 000000000..259ccdd16 Binary files /dev/null and b/_assets/articles/2024-01-10-typage-generique-en-php/cover.jpg differ diff --git a/_assets/articles/2024-01-17-expressionlanguage-comment-utiliser-ce-composant-symfony/cover.jpg b/_assets/articles/2024-01-17-expressionlanguage-comment-utiliser-ce-composant-symfony/cover.jpg new file mode 100644 index 000000000..c5032bfeb Binary files /dev/null and b/_assets/articles/2024-01-17-expressionlanguage-comment-utiliser-ce-composant-symfony/cover.jpg differ diff --git a/_assets/articles/2024-02-19-quelques-conseils-pour-optimiser-votre-environnement-de-travail-sous-linux/cover.jpg b/_assets/articles/2024-02-19-quelques-conseils-pour-optimiser-votre-environnement-de-travail-sous-linux/cover.jpg new file mode 100644 index 000000000..1bb060c49 Binary files /dev/null and b/_assets/articles/2024-02-19-quelques-conseils-pour-optimiser-votre-environnement-de-travail-sous-linux/cover.jpg differ diff --git a/_assets/articles/2024-04-03-retour-sur-la-flowcon-2024/cover.jpg b/_assets/articles/2024-04-03-retour-sur-la-flowcon-2024/cover.jpg index fa4328d51..d73e07248 100644 Binary files a/_assets/articles/2024-04-03-retour-sur-la-flowcon-2024/cover.jpg and b/_assets/articles/2024-04-03-retour-sur-la-flowcon-2024/cover.jpg differ diff --git a/_assets/tutorials/2019-08-30-kotlin-exoplayer/cover.jpg b/_assets/tutorials/2019-08-30-kotlin-exoplayer/cover.jpg new file mode 100644 index 000000000..33ad7c590 Binary files /dev/null and b/_assets/tutorials/2019-08-30-kotlin-exoplayer/cover.jpg differ diff --git a/_assets/tutorials/2020-09-30-creez-un-chat-avec-symfony-et-mercure/cover.jpg b/_assets/tutorials/2020-09-30-creez-un-chat-avec-symfony-et-mercure/cover.jpg index ac34e4ca0..335b94c76 100644 Binary files a/_assets/tutorials/2020-09-30-creez-un-chat-avec-symfony-et-mercure/cover.jpg and b/_assets/tutorials/2020-09-30-creez-un-chat-avec-symfony-et-mercure/cover.jpg differ diff --git a/_assets/tutorials/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/cover.jpg b/_assets/tutorials/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/cover.jpg new file mode 100644 index 000000000..564294214 Binary files /dev/null and b/_assets/tutorials/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/cover.jpg differ diff --git a/_assets/tutorials/2024-03-27-chromatic/cover.jpg b/_assets/tutorials/2024-03-27-chromatic/cover.jpg new file mode 100644 index 000000000..ec8e0c090 Binary files /dev/null and b/_assets/tutorials/2024-03-27-chromatic/cover.jpg differ diff --git a/_tutorials/fr/2019-08-30-kotlin-exoplayer/index.md b/_tutorials/fr/2019-08-30-kotlin-exoplayer/index.md index 2f4f24b7b..5e55f37be 100644 --- a/_tutorials/fr/2019-08-30-kotlin-exoplayer/index.md +++ b/_tutorials/fr/2019-08-30-kotlin-exoplayer/index.md @@ -6,6 +6,8 @@ slug: kotlin-exoplayer title: Créer votre player Netflix avec Exoplayer excerpt: >- Dans ce tutoriel nous allons créer un player android en Kotlin grâce à Exoplayer, pour pouvoir lire une vidéo locale mp4. +cover: + path: /imgs/tutorials/2019-08-30-kotlin-exoplayer/cover.jpg categories: - architecture authors: diff --git a/_tutorials/fr/2020-09-30-creez-un-chat-avec-symfony-et-mercure/index.md b/_tutorials/fr/2020-09-30-creez-un-chat-avec-symfony-et-mercure/index.md index 967df0275..ab4e88a9e 100644 --- a/_tutorials/fr/2020-09-30-creez-un-chat-avec-symfony-et-mercure/index.md +++ b/_tutorials/fr/2020-09-30-creez-un-chat-avec-symfony-et-mercure/index.md @@ -6,6 +6,8 @@ slug: creez-un-chat-avec-symfony-et-mercure title: Créez un chat avec Mercure et Symfony excerpt: >- Le but de ce tutoriel est de maîtriser le protocole Mercure. Pour cela, nous allons le combiner au framework Symfony pour créer un petit système de chat. +cover: + path: /imgs/tutorials/2020-09-30-creez-un-chat-avec-symfony-et-mercure/cover.jpg categories: - php - javascript diff --git a/_tutorials/fr/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/index.md b/_tutorials/fr/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/index.md index 49c2395d8..9bf481f04 100644 --- a/_tutorials/fr/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/index.md +++ b/_tutorials/fr/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/index.md @@ -6,6 +6,8 @@ slug: composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine title: Composition over inheritance et typage générique avec Symfony et Doctrine excerpt: >- Abordons ensemble une solution pour utiliser l'injection de dépendance plutôt que l'héritage pour créer nos repositories Doctrine, tout en tirant parti du typage générique grâce à PHPStan. +cover: + path: /imgs/tutorials/2024-01-10-composition-over-inheritance-et-typage-generique-avec-symfony-et-doctrine/cover.jpg categories: - php authors: diff --git a/_tutorials/fr/2024-03-27-chromatic/index.md b/_tutorials/fr/2024-03-27-chromatic/index.md index 4584f2bca..e801686b9 100644 --- a/_tutorials/fr/2024-03-27-chromatic/index.md +++ b/_tutorials/fr/2024-03-27-chromatic/index.md @@ -6,6 +6,8 @@ slug: chromatic title: Ajouter des tests de non régression visuelle (et plus encore !) sur Storybook avec Chromatic excerpt: >- Nous allons découvrir comment utiliser Chromatic en CI pour faire des tests de non régression visuelle et des tests d'interaction sur un Storybook pour être confiant à chaque nouvelle feature implémentée. +cover: + path: /imgs/tutorials/2024-03-27-chromatic/cover.jpg categories: - javascript keywords: diff --git a/bin/build.ts b/bin/build.ts index c4fccbe40..630a051b9 100644 --- a/bin/build.ts +++ b/bin/build.ts @@ -7,6 +7,7 @@ import { generateImageFormats } from '../src/helpers/generateImageFormats'; const BASE_URL = process.env.BASE_URL || '/'; const MODE = process.env.NODE_ENV || 'production'; +const WITH_GENERATE_IMAGE_FORMATS = process.env.WITH_GENERATE_IMAGE_FORMATS !== 'false'; const ROOT_DIR = process.cwd(); const ASSETS_DIR = resolve(ROOT_DIR, '_assets'); const OUT_DIR = resolve(ROOT_DIR, 'dist'); @@ -39,9 +40,11 @@ const writeJsonDataFilesAndFeedFile = async (): Promise => { const build = async (): Promise => { const designSystemRootDir = resolve(process.cwd(), 'node_modules/@eleven-labs/design-system/dist'); cpSync(ASSETS_DIR, resolve(PUBLIC_DIR, 'imgs'), { recursive: true }); - const destDir = resolve(process.cwd(), 'public'); - cpSync(resolve(designSystemRootDir, 'imgs'), resolve(destDir, 'imgs'), { recursive: true }); - await Promise.all([writeJsonDataFilesAndFeedFile(), generateImageFormats()]); + cpSync(resolve(designSystemRootDir, 'imgs'), resolve(PUBLIC_DIR, 'imgs'), { recursive: true }); + await writeJsonDataFilesAndFeedFile(); + if (WITH_GENERATE_IMAGE_FORMATS) { + await generateImageFormats(); + } if (args.ssr) { await buildVite({ diff --git a/src/helpers/generateImageFormats.ts b/src/helpers/generateImageFormats.ts index f6e01c051..e70cea3f8 100644 --- a/src/helpers/generateImageFormats.ts +++ b/src/helpers/generateImageFormats.ts @@ -1,16 +1,40 @@ import { readFileSync, writeFileSync } from 'node:fs'; import { basename, dirname, extname, resolve } from 'node:path'; -import Sharp from 'sharp'; +import Sharp, { FormatEnum } from 'sharp'; import { DeviceEnum, IMAGE_FORMATS } from '@/constants'; import { getPosts } from '@/helpers/markdownContentManagerHelper'; +const resizeImage = async (options: { + imagePathOrBuffer: string | Buffer; + directoryPath: string; + filename: string; + width: number; + height: number; + extension: keyof FormatEnum; +}): Promise => { + const transformedImage = Sharp(options.imagePathOrBuffer, { failOn: 'none', animated: true }) + .resize({ width: options.width, height: options.height }) + .toFormat(options.extension); + + const transformedBuffer = await transformedImage.toBuffer(); + + const imageDestPath = resolve( + options.directoryPath, + `${options.filename}-w${options.width}-h${options.height}.${options.extension}` + ); + writeFileSync(imageDestPath, transformedBuffer); +}; + export const generateImageFormats = async (): Promise => { const posts = getPosts(); - const covers = posts.filter((post) => post.cover).map((post) => post.cover?.path); + const transformedBufferPromises: Promise[] = []; + + const covers = posts.filter((post) => post.cover?.path).map((post) => post.cover?.path); covers.push('/imgs/default-cover.jpg'); + performance.mark('generate-image-formats-start'); for (const cover of covers) { const imagePath = resolve(process.cwd(), 'public', cover!.slice(1) as string); const directoryPath = dirname(imagePath); @@ -24,16 +48,28 @@ export const generateImageFormats = async (): Promise => { for (const format of Object.values(IMAGE_FORMATS[device])) { const width = format.width * pixelRatio; const height = format.height * pixelRatio; - const transformedImage = Sharp(originalImageBuffer, { failOn: 'none', animated: true }) - .resize({ width, height }) - .toFormat(extension); - - const transformedBuffer = await transformedImage.toBuffer(); - - const imageDestPath = resolve(directoryPath, `${filename}-w${width}-h${height}.${extension}`); - writeFileSync(imageDestPath, transformedBuffer); + transformedBufferPromises.push( + resizeImage({ + imagePathOrBuffer: originalImageBuffer, + filename, + directoryPath, + width, + height, + extension, + }) + ); } } } } + + await Promise.all(transformedBufferPromises); + performance.mark('generate-image-formats-end'); + const performanceMeasure = performance.measure( + 'generate-image-formats', + 'generate-image-formats-start', + 'generate-image-formats-end' + ); + const durationInSeconds = performanceMeasure.duration / 1000; + console.info(`The generation of image formats was done in ${durationInSeconds} seconds`); }; diff --git a/src/hooks/useNewsletterCard.tsx b/src/hooks/useNewsletterCard.tsx index bc38e086b..0f7a197b0 100644 --- a/src/hooks/useNewsletterCard.tsx +++ b/src/hooks/useNewsletterCard.tsx @@ -1,10 +1,19 @@ import { NewsletterCardProps } from '@eleven-labs/design-system'; import React from 'react'; +import { useTranslation } from 'react-i18next'; import { TransWithHtml } from '@/containers/TransWithHtml'; -export const useNewsletterCard = (): NewsletterCardProps => ({ - title: , - description: , - children: