ProfessionnelMoyen

Rowad

Plateforme bilingue pour les entrepreneurs saoudiens — podcasts, formations, bibliothèque de ressources et outils — livrée en site Astro statique adossé à un CMS Strapi.

— Vue d'ensemble

Architecture Overview

graph TB
    subgraph CMS["apps/admin — Strapi 5"]
        A[Localized content types] --> B[(PostgreSQL)]
        A --> C[S3 + CloudFront CDN]
    end
    subgraph Build["apps/web — Astro 7, build time"]
        D[Generated Strapi client] --> E["features/*/api.ts"]
        E --> F[Content loaders]
        F --> G[(Astro content store)]
        G --> H["data.ts accessors"]
    end
    A -->|REST| D
    H --> I[Static HTML + React islands]

Une plateforme bilingue destinée aux entrepreneurs d'Arabie saoudite, réalisée chez Poyesis. Elle associe un back-office de contenu Strapi à un front-end Astro entièrement statique : les équipes programme publient podcasts, formations, profils d'experts, événements, dispositifs de financement et une bibliothèque de ressources depuis le CMS, et le site les reconstruit puis les livre en HTML statique.

Le flux de données est la décision d'architecture à retenir. Chaque source externe — collections Strapi, hébergeur de podcasts, API Google — est déclarée comme une content collection Astro et chargée par un loader une seule fois par build. Les pages et les composants ne font jamais d'appel réseau : ils lisent un store de contenu local via des accesseurs typés. Le client Strapi est généré depuis le schéma réel, si bien qu'un champ renommé dans le CMS devient une erreur de type au build plutôt qu'une section vide en production.

L'arabe est une locale de premier rang, pas une couche de traduction ajoutée après coup. Des intégrations i18n sur mesure déclinent chaque route par langue et toute la mise en page se reflète en RTL. L'interactivité reste volontairement réduite : les îlots React ne s'hydratent que là où un composant le justifie, et une étape de lint parcourt le graphe d'imports de chaque îlot pour rejeter tout import réservé au serveur avant qu'il n'atteigne le navigateur.

Fonctionnalités clés :

  • Bilinguisme anglais/arabe complet, mise en page RTL et routes par locale
  • Catalogue de podcasts synchronisé depuis la plateforme d'hébergement
  • Bibliothèque de formations avec inscription LMS et suivi des certifications
  • Bibliothèque de ressources, glossaire, outils et contenus gratuits
  • Tableau de bord personnel avec favoris sur tous les types de contenu
  • Recherche floue côté client et listes filtrables
  • Événements, experts, partenaires, prix et témoignages gérés par la rédaction
  • Inscription à la newsletter et routage des demandes de contact
  • Dimensionnement des images au build à partir des dimensions stockées dans le CMS

Stack technique :

  • Frontend : Astro 7, React 19, Tailwind v4, TypeScript
  • CMS : Strapi 5, PostgreSQL
  • Infrastructure : AWS S3 + CDN CloudFront
  • Bibliothèques : recherche Fuse.js, carrousels Embla, pipeline d'images Sharp
  • Outillage : pnpm workspaces, Turborepo, Node 24

Projet client réalisé pour un employeur : le dépôt reste privé.

— Stack
AstroStrapiAWSTypeScriptReactTailwind CSSPostgreSQLTurborepo