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



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.