Case Study / Web
Esperanza
Ethical addiction recovery — Essaouira, Morocco

Overview
The Project
Esperanza is an ethical addiction recovery programme expanding from the UK to Morocco. Chris Soloman, the founder, runs esperanzahealth.co.uk in the UK and is launching a Morocco-based programme with its first event — a music therapy retreat at Dar Souiri in Essaouira, September 2026.
My role: full-stack — design, build, deploy, and handover. The brief was a site that Chris could point prospective clients to with confidence, knowing it would load fast, read well, and feel trustworthy from the first second.
Stack
Duration
April 2026 — ongoing
Service
Web Development →Context
The Challenge
The audience is people in crisis — or their families searching on their behalf. They're comparing rehab programmes across the UK, Spain, Thailand, and Morocco. Trust is everything. A site that feels generic, slow, or even slightly off will lose them in seconds to a competitor with better positioning.
SEO is the primary acquisition channel. Esperanza Morocco is competing against established UK rehab directories with years of backlink authority. The site needs to rank for long-tail terms like "ethical rehab Morocco" and "addiction recovery Essaouira" while the domain is brand new with zero history.
The timeline was tight: Chris needed a presentable MVP before outreach to referral partners, well ahead of the September 2026 retreat. Phase 1 was English-only. French and Arabic come in Phase 2 once the content is proven and the programme is running.
Solution
The Approach
I chose Astro over Next.js for this project. The site is content-driven with no authenticated features — static generation gives the best possible performance and the simplest deployment story. Every page ships as pre-rendered HTML with zero client-side JavaScript unless a component explicitly opts in. Cloudflare Pages handles hosting on the free tier with global edge distribution.
The design system prioritises warmth and credibility over the clinical look that most rehab sites default to. Muted earth tones, generous white space, and real photography where available. No stock photos of people holding hands on a beach. The typography is readable at every size because the families searching at 2am on their phones are the most important audience.
Stripe integration is handled via an external checkout link rather than a custom payment flow — the right call for Phase 1 because it avoids PCI scope entirely while still giving Chris a working booking pipeline. Playwright E2E tests cover the contact form, navigation, and booking flow because quality on a trust-critical site matters more than shipping a day earlier.
Results
Current State
- Phase 1 MVP built and deployed
- Lighthouse ≥ 95 across all four categories
- Contact form operational via Resend
- Stripe booking flow live (external checkout link)
- Playwright E2E suite covering critical paths
- Multilingual scaffold in place (FR/AR for Phase 2)Phase 2
- Full content pass and photographyPhase 2
- SEO campaign and backlink strategyPhase 2
Hindsight
What I'd Do Differently
Astro Content Collections were over-engineered for Phase 1 content volume. The site has fewer than ten pages — plain MDX imports would have been simpler and faster to iterate on. The collection schema validation is valuable at scale, but at this size it added configuration overhead without catching real bugs.
I'd also start the Playwright suite earlier. I wrote tests after the first feature pass, which meant retrofitting selectors. Writing the first smoke test alongside the first page would have been ten minutes of work and would have caught a routing bug I found manually instead.
This project used the Web Development service.
← All projectsHave a project with similar constraints?
Trust-critical audience, tight timeline, strong SEO requirements — I've been here before.