We implemented Sanity as the project's headless CMS over 14 weeks: Arabic-first content model (weeks 1-5): structured content reflecting the tourism destination's content universe. Attraction model: localised fields for name, description (rich text with Arabic formatting), highlights, practical information, and accessibility information. Non-localised: coordinates, capacity, age suitability, and linked media. Arabic descriptions written by Saudi Arabic copywriters — not translated from English. English descriptions created independently for international audiences — same information but culturally adapted. Event model: comprehensive event content — event name (localised), description (localised), performer/artist profiles (localised bios), schedule (dates, times with Hijri display option), venue (linked to attraction model), ticket categories (pricing in SAR, availability), terms and conditions (legal Arabic reviewed by Saudi legal team), and promotional media (Arabic and English creative). Hotel and accommodation model: room categories, amenities, rates, availability integration, and booking information — structured for delivery to the website, app, and OTA partners.
Experience model: curated visitor experiences (combining attractions, dining, and entertainment into recommended itineraries) — personalised by visitor type (family, couple, group, solo), duration, and interests. Custom Sanity Studio (weeks 2-8): Arabic-first editing experience. The Sanity Studio customised for Arabic content creation — RTL interface, Arabic field labels, Arabic-optimised rich text editor with proper paragraph direction, Tashkeel toolbar for formal Arabic content, and side-by-side Arabic/English editing with translation status tracking. Editorial workflow: Arabic content created first → Arabic editor reviews → Arabic published → English translation initiated (either by translator in the Studio or via translation service integration) → English editor reviews → English published. Translation coverage dashboard: showing percentage of Arabic content translated to English — alerting when untranslated content exceeds 48 hours.
Event content: simplified event creation — content coordinators (not developers) creating and updating events through intuitive forms with real-time preview showing how the event will appear across website, app, and digital signage. Multi-channel delivery (weeks 4-12): content flowing from Sanity to all 9 channels. Website (Next.js): Arabic and English sites rebuilt on Next.js consuming Sanity content. Static generation for most content (rebuilt on Sanity webhook), server rendering for real-time availability and pricing. Performance: sub-2-second page loads. Mobile app (React Native): consuming Sanity content through the same API — identical content to website but rendered for mobile UI. Push notifications: Sanity content triggering push notifications for events, announcements, and promotions — in the user's preferred language. Digital signage: lightweight display application pulling real-time content from Sanity — today's events, current promotions, wayfinding information, and emergency notifications. Content updated centrally — reflected on all displays within minutes.
Social media: Sanity content triggering social media post creation — event announcement in Sanity generating draft posts for Twitter/X (Arabic 280-char summary + image), Instagram (visual card with Arabic text overlay), and Snapchat (story-format content). Social media team reviewing and publishing drafts — not recreating content from scratch. Travel trade portal: structured content exported to travel trade formats — GDS descriptions, tour operator content kits, and press materials — all from the same Sanity content. WhatsApp: event announcements and updates delivered via WhatsApp Business API — triggered by Sanity content publication. Customers receiving bilingual notifications with event details, ticket links, and practical information. Brand consistency (weeks 8-14): unified content governance. Terminology glossary: centralised in Sanity — the official Arabic and English names for every attraction, venue, experience, and concept. Content editors selecting from the glossary rather than typing names — ensuring consistency across all content.
Pricing and hours: maintained in Sanity as structured data — published to all channels simultaneously. A price change in Sanity reflected on website, app, ticketing platform, and digital signage within minutes — not days.