All Work
Full StackHealthcare / Medical TourismDeployed · France

MET Academy Student Portal: E-Learning Platform with Cloudflare DRM + Bilingual UI

Bilingual (FR/EN) custom LMS built from scratch for a French medical aesthetics platform — 20 training modules delivered via Cloudflare Stream signed tokens, admin-controlled access, and a GHL patient journey automation capturing leads from two Vercel landing pages through to post-payment nurture.

Client: METCARE / My Esthetic TravelVisit siteRead full case study

20

Training modules

2h

Video token expiry (DRM)

FR/EN

Bilingual

0

Open enrollment — admin-only

The Problem

  • METCARE needed a secure, professional e-learning platform for post-operative aesthetic training that no off-the-shelf LMS could provide: bilingual (French/English), admin-only enrollment (no open registration), DRM-level video protection without enterprise licensing, and integration with their patient acquisition funnel.
  • Platforms like Kajabi or Teachable couldn't handle the access control requirements or the French-language patient journey automation alongside the LMS.

The Solution

Two parallel systems.

01MET Academy LMS

  • built from scratch with Next.js + Node.js REST API on Vercel, Supabase PostgreSQL with Row Level Security for auth, and Cloudflare Stream for video delivery.
  • Admin creates student accounts manually
  • activation email sent via Resend
  • student sets password
  • auto-logged in.
  • All video content delivered via signed Cloudflare Stream tokens with 2-hour expiry — direct URL sharing is technically impossible;
  • tokens require an active authenticated session.
  • 3 public intro videos use unsigned tokens for marketing access.
  • 20 training modules with Previous/Next navigation and sidebar.
  • FR/EN UI toggle persistent in localStorage (default French).
  • httpOnly JWT cookie authentication — not localStorage.
  • Full forgot-password flow with email-triggered reset.

02Parcours 360 Patient Journey

  • 2 GHL workflows — 'Website
  • GHL' captures form submissions from the Vercel funnel (`parcours-360-ide.vercel.app`) into GHL contacts with team notification;
  • 'Post Payment Email Sequence' fires after payment to handle nurture and onboarding.

Screenshots

Results

Custom LMS operational with admin-controlled enrollment — no self-registration, no off-the-shelf platform dependencies

Video DRM via Cloudflare Stream signed tokens with 2-hour expiry — direct URL sharing technically impossible without an active authenticated session

3 free public intro videos use unsigned tokens for marketing access, seamlessly integrated alongside gated content

Bilingual FR/EN UI (default French) with language preference persisted in localStorage across sessions

httpOnly JWT cookie auth prevents XSS token theft — more secure than localStorage-based auth common in LMS platforms

Parcours 360 patient journey: form submissions from 2 Vercel funnels captured into GHL with team notification + post-payment email sequence running automatically

Tech Stack

Next.jsNode.jsSupabaseCloudflare StreamVercelResendGHLn8n

Want something like this?

Tell me what you're building. I'll tell you honestly if I can help.