← BACK
02
Client Project — Production
2025Live in production
LIVE SITE ↗

Building a multilingual brand platform from zero digital presence to production

This case study shows how I took a client from scattered WhatsApp messages and zero online visibility to a professional, self-managed multilingual platform — live at elmoussaif.com.

Client DeliveryMultilingual (4 locales)CMS & AdminProduction
6
Problems
7
Decisions
5
Results
coreNext.js 16React 19TypeScript
backendMongoDBMongooseZodJWT Authbcrypt
featuresCloudinary (Image CDN)Sharp (Optimization)DnD Kit (Drag & Drop)Resend (Email)
systemTailwind CSS 4Framer Motion
testing
01
THE PROBLEM

What was actually broken

6 pain points identified before writing a single line of code

01

The client operated a successful private transport service but had zero digital presence

02

All bookings came through scattered WhatsApp messages and word-of-mouth

03

No credibility tool — potential B2B partners (riads, villas, hotels) had no way to evaluate the service

04

Photos, pricing, and service descriptions were scattered across messaging apps with no content ownership

05

Clients and partners operate in 4 languages (EN, FR, ES, AR) — no multilingual support existed

06

The client needed to manage content independently with zero technical knowledge

02
BUSINESS IMPACT

What this was costing the business

Real cost — not hypothetical risk

01

No online discoverability — the business was invisible to potential international clients

02

B2B partnerships were harder to establish without a professional interface

03

Content was lost or duplicated across messaging platforms

04

No SEO presence meant zero organic traffic from search engines

05

Every content update required developer intervention

03
STRUCTURAL DECISIONS

Why these choices — not others

7 deliberate trade-offs

01

Server Components by default — client components only where interactivity demands it (forms, animations, drag-and-drop)

02

Server Actions for all mutations — no separate REST API layer needed

03

Singleton MongoDB connection to prevent pool exhaustion in serverless environment

04

HSL-based design token system with CSS custom properties for theme variants (light, dark, luxury)

05

Strict separation of concerns — no database logic in components; all data access through server-only modules

06

4-locale routing architecture with culturally adapted content (not literal translations)

07

Full RTL support for Arabic with dedicated font stack (Noto Sans Arabic)

04
ARCHITECTURE

How the system is structured

The blueprint that holds everything together

01

Next.js App Router with SSR/SSG for public pages and Server Actions for admin dashboard

02

Shared /lib layer for db, auth, i18n, validators, SEO, email, and Cloudinary integration

03

MongoDB Atlas for data, Cloudinary for image CDN with transforms, Resend for transactional email

04

Modular data models: Settings, HomePage, AboutPage, ServicePage, Fleet, Tour, ContactMessage, Admin

05

All content models support 4-language localized fields stored as nested objects in MongoDB

05
RESULTS

What changed after shipping

5 measurable improvements

Client went from zero online visibility to a professional multilingual platform (0 → 1)

4-language coverage serving the full Marrakech tourism market (EN, FR, ES, AR)

Self-service admin — client manages all content independently without developer intervention

B2B partners (riads, villas, hotels) can now evaluate services through a professional interface

SEO infrastructure in place: structured data (JSON-LD), per-locale metadata, semantic HTML, optimized assets

What's next?

The value was not a prettier website. It was giving a real business the digital infrastructure to grow beyond word-of-mouth.

← ALL PROJECTSSTART A CONVERSATION →