Bagtyyar

MyORL — ENT Clinic Platform

Active build

Bilingual healthcare website for a private ENT surgical clinic in Athens — Next.js 16, Strapi 5 CMS, Meilisearch, fully deployed and serving patients.

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS v4
  • Strapi 5
  • PostgreSQL 18
  • Meilisearch
  • Docker
  • Caddy
  • Vitest
  • Playwright
  • Railway

Outcome

Live bilingual healthcare platform for an Athens ENT clinic — Next.js 16 frontend, Strapi 5 CMS with full content handover, Meilisearch patient-facing search, and Playwright-tested booking flow. Deployed on Railway and serving real patients.

Context

A private ENT (ear, nose, throat) surgical clinic in Athens needed a modern web presence: a bilingual (Greek/Russian) site with a condition encyclopedia, service and price pages, video content, and appointment booking — maintained by non-technical staff after handover. Client details are anonymized; the site is live and publicly reachable.

Engineering Decisions

  • Frontend: Next.js 16 App Router + React 19 + Tailwind CSS v4, bilingual routing (Greek/Russian), server components for fast first paint on clinic Wi-Fi and mobile data.
  • CMS: Strapi 5 + PostgreSQL 18 so clinic staff edit encyclopedia entries, prices, and videos without touching code.
  • Search: Meilisearch for instant, typo-tolerant search across conditions and treatments — patients rarely know exact medical spelling.
  • Migration: Custom extraction tooling (myorl-migrate) to pull content out of the legacy MODX site into structured Strapi content types.
  • Infrastructure: Docker Compose + Caddy locally; production deployed on Railway (frontend, Strapi, Postgres, and Meilisearch as separate services).
  • Testing: Vitest + React Testing Library for components, Playwright for end-to-end flows including booking.

Outcomes

  • Live in production, serving real patients — bilingual content, search, and booking all operational.
  • 314 commits across frontend, CMS, and migration tooling.
  • Full handover: the clinic edits its own content; no developer needed for routine updates.

Visit the live site · Public repository