Plays well with your stack.
Honest list. Live means shipped and used by an existing tenant today. Beta means behind a flag for design partners. Planned means on the roadmap with a target. We don’t list aspirations.
Identity & sign-in
How a board member proves who they are.
Email OTP
One-time code delivered to the user's email. No password to phish, no password to reset.
Codes expire in 10 minutes; rate-limited per email + per IP.
LiveWhatsApp OTP
OTP delivered through your WhatsApp Business API number. Faster on mobile, doubles as proof-of-presence.
Powered by Dardasha (BHD Group's WhatsApp engine). Falls back to email automatically.
LiveSAML 2.0 (Microsoft 365, Google Workspace, Okta)
Enterprise tier. SP-initiated SSO with JIT user provisioning and group-to-role mapping.
Target: Phase 9 (Q3 2026). Available on the on-prem build today via reverse-proxy header trust.
PlannedOpenID Connect
For tenants standardised on OIDC (Auth0, Keycloak, Authentik).
Target: Phase 9, alongside SAML.
PlannedMagic-link login
Single-click signed URL emailed to the user. Useful for very low-frequency board members.
Behind feature flag for two design-partner tenants.
BetaCommunication
How Diwan talks to your members.
WhatsApp Business API
Outbound for OTP + meeting reminders + decision broadcasts. Bring your own WABA number or use a Dardasha shared number.
Per-tenant template approval is your responsibility; we ship the request schema.
LiveSMTP relay
Bring your own SMTP (Postfix, SES, Resend, M365 SMTP). DKIM expected at the relay.
Cloud customers use the Diwan shared mail.diwan.om sender by default.
LiveIn-app notifications
Bell-icon dropdown in the workspace header, badge on every tab, push to user inbox.
No external service required.
LiveWeb push (PWA)
Browser notifications via the Push API for users who install the PWA.
Target: Phase 8.5.
PlannedPayments & billing
How money moves in and out.
Paymob Oman
Card + Apple Pay + Google Pay + OmanNet. Used for subscription renewals and tenant top-ups.
Webhook-verified; idempotent on transaction reference. Same Paymob integration BHD-ERP and Cardify use.
LiveBank transfer (manual)
For Enterprise + On-Prem customers who pay annually by wire. We send a proforma; you wire; we mark the tenant paid.
Bank Dhofar account; SWIFT BDOFOMRU.
LiveStripe
For tenants billing in USD/EUR (e.g., GCC family offices with foreign holdings).
Target: Phase 8.5.
PlannedCalendar & scheduling
How meetings reach the rest of the world.
ICS export per meeting
Every meeting page exposes an .ics link. Drops cleanly into Outlook, Google Calendar, Apple Calendar.
Includes attendees, location, agenda link, organiser email.
LiveICS feed per board
A single subscribable URL for the board's entire meeting calendar.
Auth-token in URL; revocable per user from /my.
LiveGoogle Calendar two-way sync
OAuth connect and Diwan pushes meetings + accepts RSVPs back.
Target: Phase 9.
PlannedOutlook / Microsoft 365 sync
Same as above using Graph API.
Target: Phase 9.
PlannedAPI & automation
For partners and internal IT.
Public discovery API
/api/almajlis/sectors.json, /modules.json, /health.json. CORS-open, cacheable, no auth needed.
Powers partner directory pages and the on-prem sizing tool.
LivePer-tenant REST API
Read-only endpoints for athletes, results, meetings, decisions on the OFC tenant.
Public on fencing.om today. Per-tenant authenticated read+write API ships in Phase 8.
BetaAPI keys
Per-tenant keys with scope (read/write/admin) and rotation. Self-serve from /board/settings.
Target: Phase 8 (next two iterations).
PlannedOutbound webhooks
POST to your URL on meeting-created, decision-passed, member-joined, payment-received. HMAC-signed.
Target: Phase 8.
PlannedCSV export
/{entity}.csv on every public list. Members, athletes, results, events, fees.
Same files used by the OFC weekly board pack.
LiveJSON feeds
RSS 2.0 + Atom on news, results, events, changelog. /api/public/feeds.json for discovery.
Auto-discovery via <link rel="alternate"> on every page.
LiveStorage & backup
Where data sits and how it leaves.
Local FS per tenant
data/tenants/<slug>/ on the host. Atomic writes via withFileLock(). Default for both Cloud and On-Prem.
Backed by the host's daily snapshot in Cloud; your own snapshot policy on-prem.
LiveDaily encrypted backup
tar.gz per tenant, encrypted with the operator's public key, written to /backup volume.
30-day retention by default; configurable per tenant.
LiveS3-compatible offsite
Push the encrypted daily tarball to your S3 / R2 / Wasabi bucket.
Target: Phase 8.5.
PlannedAzure Blob offsite
Same as S3, for tenants standardised on Azure.
Target: Phase 9.
PlannedDocuments & embeds
How Diwan output reaches non-users.
PDF export (server-rendered)
Meeting minutes, board packs, financial summaries, member statements. Browser-print-quality, header + footer + page numbers.
Powered by headless Chromium; runs in the same Node process.
LivePublic dashboards (iframe-friendly)
Pick which widgets are public, get an embed URL, drop it on your annual report.
Used by OFC for the public results widget at fencing.om.
LiveDOCX export
For boards that still circulate Word documents. Same source-of-truth, different render.
Target: Phase 9.
Planned