ProfessionalMedium

Rowad

Bilingual entrepreneurship platform for Saudi founders — podcasts, courses, a resource library and tooling — shipped as a static Astro site over a Strapi CMS.

— Overview

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]

A bilingual platform for entrepreneurs in Saudi Arabia, built at Poyesis. It pairs a Strapi content backend with a fully static Astro front end: programme teams publish podcasts, courses, expert profiles, events, funding routes and a resource library from the CMS, and the site rebuilds and ships them as static HTML.

The data flow is the design decision worth naming. Every external source — the Strapi collections, the podcast host, Google APIs — is declared as an Astro content collection and pulled through a loader exactly once per build. Pages and components never fetch; they read a local content store through typed accessors. The Strapi client is generated from the live schema, so a renamed CMS field surfaces as a type error at build time rather than as a blank section in production.

Arabic is a first-class locale rather than a translation layer bolted on. Custom i18n integrations map every route per locale, and the whole layout mirrors for RTL. Interactivity stays deliberately small: React islands hydrate only where a widget earns it, and a lint step walks the import graph from every island to reject a server-only import before it can reach the browser.

Key Features:

  • Full English/Arabic bilingualism with RTL layout and locale-mapped routes
  • Podcast catalogue synced from the hosting provider
  • Course library with LMS enrolment and credential tracking
  • Resource library, glossary, tools and downloadable freebies
  • Personal dashboard with bookmarks across every content type
  • Fuzzy client-side search and filterable listings
  • Editor-managed events, experts, partners, awards and testimonials
  • Newsletter signup and contact routing
  • Build-time image sizing from stored CMS dimensions

Tech Stack:

  • Frontend: Astro 7, React 19, Tailwind v4, TypeScript
  • CMS: Strapi 5, PostgreSQL
  • Infrastructure: AWS S3 + CloudFront CDN
  • Libraries: Fuse.js search, Embla carousels, Sharp image pipeline
  • Tooling: pnpm workspaces, Turborepo, Node 24

Client work delivered for an employer, so the repository stays private.

— Stack
AstroStrapiAWSTypeScriptReactTailwind CSSPostgreSQLTurborepo