The contribution model
A theme or plugin is TypeScript inside the platform repository, reviewed and deployed like any other platform code. If you are a developer or team who wants to build one, that means working with the platform team on the repository itself — not uploading an artifact.
What a theme can do
- Own the header, footer, default home page, listing and product page arrangement, and the product card.
- Ship a CSS-token palette (light and dark) that the merchant’s own brand colours layer over.
- Expose merchant-tunable settings (header style, card shape, badges…) with Arabic and English labels, validated server-side.
- Pick named variants for the shared cart, checkout, account and order pages.
Merchants keep full control of their content: the home page is a section-by-section page builder (add, remove, reorder, hide), photos upload to the platform’s asset server, and a whitelist of advanced colour tokens covers the “I just need to change one colour” case — raw custom CSS is deliberately not supported.
What a plugin can do
- Register payment methods — six gateways ship this way today (COD, Sham Cash, Syriatel Cash, MTN Cash, manual transfer, PayTabs).
- Register shipping calculators — per-governorate rates and store pickup ship this way.
- Add entities, GraphQL APIs, scheduled jobs, dashboard pages, and react to platform events.
- Integrate delivery companies and suppliers through adapter registries.
The guides and worked examples
The repository carries step-by-step tutorials in docs/developer-guide/ — a theme guide built around the “layali” theme and a plugin guide built around the “store-pickup” plugin (one payment method plus one shipping calculator, with tests). Both examples exist to be copied.