Designer & Frontend Developer

Client

Dana Koshanian — Osteopath D.O

Role

Designer & Frontend Developer

Stack

Vite, React 18, TypeScript, Framer Motion, CSS

Date

2026

Website

Visit site

01

The Challenge

Healthcare practitioners often settle for generic Doctolib profiles or cookie-cutter templates that erode trust. The challenge was to craft a site that feels simultaneously professional and human — one that reassures anxious patients, communicates expertise on specialties (bruxism, anxiety), and drives bookings without feeling like a pushy funnel.

02

The Solution

I designed and built the site end-to-end with Vite + React + TypeScript, using Framer Motion for subtle reveal animations. The typography pairs Fraunces (editorial serif) with Inter (utility sans), on a warm cream and terracotta palette. Dedicated specialty pages (anxiety, bruxism) provide deep SEO coverage, while a floating Doctolib CTA and phone FAB keep booking one tap away on mobile. Deployed on Vercel with sitemap.xml, robots.txt and OG image.

typescript
// Client-side meta + JSON-LD injection for a Vite SPA
export function useDocumentMeta({ title, description, canonical, jsonLd }: Meta) {
  useEffect(() => {
    const previousTitle = document.title;
    document.title = title;
    setMetaContent('meta[name="description"]', description);
    setMetaContent('meta[property="og:title"]', title);
    setMetaContent('meta[property="og:description"]', description);
    if (canonical) {
      setCanonical(canonical);
      setMetaContent('meta[property="og:url"]', canonical);
    }

    let script: HTMLScriptElement | null = null;
    if (jsonLd) {
      script = document.createElement('script');
      script.type = 'application/ld+json';
      script.textContent = JSON.stringify(jsonLd);
      document.head.appendChild(script);
    }

    return () => {
      document.title = previousTitle;
      if (script?.parentNode) script.parentNode.removeChild(script);
    };
  }, [title, description, canonical, jsonLd]);
}

Per-route SEO meta and Schema.org JSON-LD injection for a Vite SPA — each specialty page gets its own canonical, OG tags and LocalBusiness structured data

Gallery image 1
Gallery image 2
Gallery image 3
Gallery image 4

Next Project

SEO LVMH

SEO / Analytics