Choosing a CMS for Saudi bilingual projects comes down to data ownership, translation workflow, permissions, and operating cost. We build with headless CMS daily, and the three paths we see are Directus, Strapi, or a fully custom admin. Each fits a different team.
This is an honest comparison from production, not docs marketing.
1. Architecture difference
Directus sits directly on top of SQL. You bring Postgres, Directus introspects tables and gives instant REST and GraphQL. Your data stays queryable with plain SQL, backups are normal pg_dump, and you can add tables outside Directus without breaking. This matters when you later add Fatoora queues, pgvector for search, or reporting views.
Strapi is Node-first with its own content-type builder that generates database structures through its abstraction. It is productive for JavaScript-only teams and has a plugin marketplace for SEO, media, and ecommerce. Tradeoff is migration complexity when you outgrow the abstraction, plus historically paywalled internationalization limits that hurt AR plus EN projects.
Custom admin means you build tables, APIs, auth, media, and audit from scratch, usually with Next.js plus Prisma or Django. You get exact workflows like multi-step Fatoora approval per branch, but you pay 5 to 10 times more upfront plus permanent maintenance.
2. Translations and Arabic workflow
Directus translations pattern uses base tables plus language tables, for example articles plus articles_translations with languages_code, title, content, and SEO fields. Fallback logic is explicit. Query requested locale then fallback to English. Editors see side-by-side AR and EN with RTL preview. This fits Saudi clients who publish both languages but sometimes ship Arabic first.
Strapi internationalization is built-in now but requires careful configuration for required fields per locale, fallback, and bulk publish. For large catalogs with 500 plus items in two languages, test bulk operations early.
Custom gives you exactly the translation UX you design, but you must build diff, approval, and publishing yourself. Only worth it when translation is tied to legal review, like banking disclosures.
3. Permissions and governance
Directus roles are granular to collection, field, and action. You can allow branch editors to edit only their branch articles in draft status, while HQ approves publish. API tokens can be scoped per integration for Next.js revalidation versus mobile app.
Strapi roles are solid for admin versus editor, with more setup needed for row-level rules. Plugins help but add upgrade risk.
Custom gives row-level everything, at the cost of building audit logs, which NCA and enterprise buyers ask for. If you go custom, budget audit tables from day one.
4. Self-hosting and cost
Directus runs as Node plus Postgres plus Redis plus S3 storage. A single 8GB VPS handles five SME projects with Docker Compose. Backups are Postgres plus file storage. Upgrades are usually smooth if you snapshot schema in git.
Strapi needs similar Node hosting with more memory for admin build. Plugin upgrades can break. Factor Node expertise for maintenance.
Custom hosting is whatever you build, but you own every CVE and every migration. For most SMEs this is overkill.
5. Developer experience
Directus Flows automate slugs, notifications, and webhooks without code. Example flow is on items.create for articles, generate slug, notify reviewer on Slack, and trigger Next.js revalidate via webhook. This saves weeks versus custom queues.
Strapi lifecycle hooks and plugins cover similar ground in JavaScript. If your team lives in TypeScript and React, both are comfortable. Directus wins when your team is comfortable with SQL and wants direct data access for analytics.
6. When to choose what
Choose Directus when you own Postgres, need bilingual content with approval, want cheap self-hosting, and like SQL access for reporting and AI embeddings. This is our default for Saudi content sites, support portals, and catalogs.
Choose Strapi when your team is Node-only, you need marketplace plugins fast, and you accept abstraction. Good for MVPs that need admin plus API in days.
Go custom only when workflow cannot fit either, like Fatoora EGS per branch with multi-signature approval, or complex B2B pricing engines. Get a written commitment for maintenance budget before agreeing.
Bottom line is data outlives UI. Pick the system that leaves your data clean in Postgres with translations intact, because you will redesign the frontend twice before you migrate the backend.





