Web development

Dr Ghada Yosry · Medical Practice Platform

A strabismus surgeon treating adults and children. The narrowness of the speciality is the asset, and the site was built on it: twelve forms of the condition each with a full page, booking fixed on every screen, and two clinics in two governorates with entirely different schedules.

12

forms of strabismus, each with a page of its own

Client
Dr Ghada Yosry
Industry
Healthcare, ophthalmology and eye surgery

drghadayosry.comOpen the site

drghadayosry.com/

In short

01

The challenge

  • The speciality is extremely narrow (strabismus only) and the patient does not search a clinical name. They search a description: my son's eye turns.
  • In children a squint is a social and psychological matter too, and a mother reads worried about how her child looks, not only about the operation.
  • Two clinics in two governorates with sparse and completely different schedules, one of them running a single day a month.
02

What we did

  • A full page for each of the twelve: esotropia and exotropia in children and adults, vertical, paralytic, recurrent, thyroid- and diabetes-related, and amblyopia.
  • The copy is written in the description parents actually use, with the clinical term set beside it rather than in place of it.
  • Each clinic's hours written out in full (the day, the time, the frequency) instead of call to book.
03

What came of it

  • A mother now finds her child's exact case (not eye medicine in general) because each of the twelve forms of strabismus has a page of its own.
  • Somebody searching by description, my son's eye turns, arrives just as somebody searching by term, esotropia, and both end at the same booking button.
  • A patient travelling from Minya can plan the journey: both clinic schedules are written out by day, hour and frequency rather than call to book.

Project snapshot

How big a job this was

Medium. The site is not large by page count, but the difficulty sits elsewhere: twelve closely related clinical conditions that have to be told apart clearly without the copy repeating itself, a library catching described searches rather than named ones, and two clinics whose scheduling logic has nothing in common.

Project size
Medium
Type of site
A single-speciality practice site
Who it speaks to
Parents of children with a squint, and adults living with one since childhood or after an illness. Most of them search by describing what they can see rather than by a clinical name, from Cairo, Minya and Upper Egypt.
Built on
Next.js · Caddy · custom admin
  • 12

    condition pages

    Each form on its own page: its causes, its signs and its treatment

  • 6

    fields in a single condition record

    Descriptive name, clinical name, signs, causes, age to intervene, treatment

  • 2

    clinics in two governorates

    New Cairo and Minya, each with its own schedule

  • 2

    search routes reaching the same page

    By description, my son's eye turns, and by term, esotropia

Scope delivered

  • Positioning a narrow speciality
  • Information architecture for closely related conditions
  • UX and the booking journey
  • Interface design
  • A Next.js build with a content dashboard
  • Technical SEO foundations and medical structured data

Technologies

  • Next.jsThe whole site, with pages rendered on the server
  • ReactThe interface components
  • CaddyWeb server and certificates
  • next/imageImages in modern formats at fitting sizes
  • Schema.org MedicalClinicDeclaring the practice as a medical facility
  • Custom adminServices, articles and results

The client

Whose site this is

Dr Ghada Yosry is a consultant ophthalmic surgeon specialising in strabismus in adults and children. The speciality is unusually narrow: not eyes in general but squint specifically, in its forms, esotropia and exotropia in children and in adults, vertical, paralytic, recurrent after earlier surgery, associated with thyroid disease or diabetes, following retinal-detachment surgery, and amblyopia.

The practice runs from two places: New Cairo and the city of Minya. The philosophy the site puts forward is that the treatment does not only restore sight. It restores the patient's confidence in how they look, which carries particular weight in a condition that affects children socially.

That narrowness is the practice's greatest commercial asset and, online, its greatest problem at the same time.

It is an asset because a mother whose child has a squint, on finding a surgeon who does nothing else, has effectively ended her comparison. It is a problem because the search volume on a term like paralytic strabismus is tiny next to eye doctor, and because the mother is not typing paralytic strabismus in the first place. She is typing my son's eye turned after he fell.

So the site has to do two contradictory things: stay extremely specialised in its substance, and stay extremely plain in its language.

Where it started

What the site was stalling on

Doctors' sites in Egypt are built from one template: a home page with the doctor's photograph and qualifications, a Services page carrying a list of specialities, and a booking page. That template is designed for a generalist, and it ruins a specialist.

The reason is that it reduces the speciality to a line in a list. When strabismus is item four in a menu, the mother reading it does not feel she has found the squint surgeon. She feels she has found an eye doctor who also does squints. And that reopens the comparison the speciality was supposed to close.

There is a second problem, in the language. A site written in precise clinical terms fails with this audience, because the person searching does not know the name of their condition. They can see an eye that turns, a child being teased at school, a head tilted to see properly. None of those is a term. A site waiting for a mother to type esotropia is waiting for something that will not happen.

Finally, the hours. A clinic on Mondays at six and Wednesdays at two, and a second clinic in another governorate on the first Saturday of the month, is not a schedule that can be written as call to book. A patient travelling from Minya needs to know exactly before setting off, because a mistake here costs a day of travel.

  • A narrow speciality is an asset only if the whole site is about it, not if it is an item in a list.
  • The patient searches by description rather than by term, so the content has to catch both.
  • Twelve closely related conditions that have to be told apart without the copy repeating itself.
  • The social dimension in children is part of the parents' decision, and is missing from every medical site.
  • Two clinics with sparse, different hours, and patients travelling between governorates for an appointment.

The brief

What the new site had to do

  • The site saying this is the squint surgeon from the first screen, not this is an eye doctor.
  • Each of the twelve forms on a full page with its own URL.
  • Copy written in a parent's language, with the clinical term beside it for confidence.
  • Each clinic's hours written out in full before any call.
  • A booking route present on every screen.
  • A results section showing the difference without promising anything.

Strategy

How the problem was approached

The whole strategy rests on a single decision: let the narrow speciality be the site, not a section of it.

So instead of strabismus being an item in a services menu, the entire site is about strabismus: the navigation, the home page, the library, the results. And the expansion is not sideways into other specialities. It is downwards into depth: twelve forms, each with a full page.

That buys two things at once. A positioning signal: a mother seeing twelve pages about squint understands immediately that this is not somebody who does squints among other things. And search coverage: twelve pages covering twelve different intents instead of one page covering one, or none.

Depth instead of breadth

Twelve pages for one condition. Each answers one form: esotropia in children is not esotropia in adults, paralytic strabismus is not recurrence after earlier surgery, and thyroid-related is not diabetes-related. Those distinctions are clinically real, and written as independent pages they work simultaneously as a specialisation signal and as search coverage.

The language of description

Every page opens on the description parents use (an eye that turns inwards, tilting the head to see) with the clinical term arriving after it rather than before. That order serves both: the mother confirms this is her child's case, and Google learns that this page covers the description as well as the term.

The social dimension

In children the decision is not purely medical. Parents also move when a child starts being teased at school or becomes self-conscious in photographs. The site says so plainly instead of ignoring it, and the practice's core message is built on it: the treatment restores sight and confidence together. That is not marketing language. It is the most accurate description of what actually makes parents act.

Scheduling as a design problem

A Cairo clinic with fixed weekly slots, and a Minya clinic on the first Saturday of each month. That schedule is written out in full on the site rather than hidden behind call to book, because a patient coming from another governorate is planning a journey, not asking a question. The clarity here prevents a wasted trip, which matters more than any refinement of the booking flow.

Content

an article library works the layer before the terminology: symptoms, causes, the right age to intervene, and questions like the best eye doctor in Minya. A real local search phrasing. That library is what catches described searches and hands them to the right condition page.

Presence to the language models

The site's robots file declares an explicit policy: indexing allowed, models permitted to read the page in order to answer with it, training not permitted. That has become a practical decision rather than a theoretical one: a growing share of medical questions is asked of a model rather than of a search engine, and the practice wants the answer to come from its own material.

Design

How it looks, and why each call was made

The design is calm and warm and deliberately far from a cold clinical look. Half the readers are anxious parents, and anxiety is not settled by medical blue and photographs of equipment.

Headings are large and the body text has open line spacing, because part of this audience reads from a phone in less than ideal conditions. Contrast is high because (a particular irony on this site) some of the readers genuinely have impaired vision.

The surgeon's photograph sits somewhere prominent, not as decoration but because trust in this category attaches to a person. Booking is fixed on every screen, so that the moment a mother decides does not require her to go looking.

The whole site about one condition

A narrow speciality is only an asset when it is the site. As an item in a list it reopens the comparison the speciality was meant to end.

The description before the term

A mother types what she can see, not the name of the condition. A page that opens on the term leaves her unsure this is her child's case.

Hours written out in full

A patient coming from another governorate is planning a journey. Call to book can cost them a wasted day.

Booking fixed on every screen

For parents the moment of decision arrives while they are reading, not after they finish. If booking is not in front of them then, it gets postponed.

High contrast and large type

Some readers of an eye-surgery site have impaired vision. This is the site where accessibility is not a compliance item. It is the audience.

The build

How it was built

The site runs on Next.js with server rendering, so the clinical content arrives complete in the HTML: 706 words are readable on the home page with JavaScript switched off. The practice itself is declared with MedicalClinic data, so whatever is reading the site (a search engine or a language model) sees a medical facility with a location and a speciality rather than a set of pages.

A condition in the system is a record with fields: the descriptive name, the clinical name, the signs, the causes, the age at which to intervene, and the treatment. That structure is not housekeeping. It is what prevents the most dangerous failure on a site with twelve closely related conditions, which is pages resembling each other so closely that neither reader nor search engine can tell them apart.

And the robots file carries a line most sites do not have: an explicit statement that models may read the page in order to answer with it, and may not train on it.

  • A condition record with fields: descriptive name, clinical name, signs, causes, age to intervene, treatment.
  • MedicalClinic data generated from the practice and location records.
  • A booking route in the page shell, so no page can ship without one.
  • Both clinics' hours as structured data rather than a line in the footer.
  • A robots file with an explicit policy for language models: reading allowed, training not.
  • A dashboard for conditions, articles and results.

Features

What the site can do

Twelve independent condition pages

Each form on its own page: description, term, signs, age to intervene and treatment.

A results section

The difference after treatment shown plainly and without promising an outcome.

Booking on every screen

A booking route fixed in the page shell, because parents decide while reading.

Two clinic schedules in full

The day, the hour and the frequency for each clinic, so a travelling patient can plan rather than ask.

The article library

Catching described and local searches and routing them to the right condition page.

MedicalClinic structured data

The practice declared as a medical facility with its location and speciality, rather than a set of pages.

An explicit policy for language models

Reading allowed so the answer comes from the source, training not permitted.

Measurement

Figures you can check yourself, right now

Open the domain and run PageSpeed on it. These are the figures you should find.

  • 99

    Performance

    Lighthouse desktop: run against the published domain, 6 September 2026

  • 100

    Accessibility

    Lighthouse desktop: run against the published domain, 6 September 2026

  • 100

    Best Practices

    Lighthouse desktop: run against the published domain, 6 September 2026

  • 85

    SEO

    Lighthouse desktop: run against the published domain, 6 September 2026

Detail beneath the surface. These are Lighthouse figures run against the published domain, and you can run it now and land in the same range.

The first three (Performance 99, Accessibility 100, Best Practices 100) come from decisions taken in the design rather than optimisation done at the end: high contrast and large type, server-rendered pages, and images at generated sizes.

The fourth (SEO 85) is the lowest of them, because Lighthouse looks for a meta description on every page and the home page is missing one. That is a maintenance item done from the dashboard in a minute, and it is written here as it is rather than rounded up.

Alongside all of it: 725 words readable on the home page with JavaScript switched off, and the practice declared with MedicalClinic data carrying its speciality and locations, which is what lets a condition page be read by a language model when a mother asks about her child's squint.

Search

What was set up for Google to read

Search here has two layers. The first is narrow terminology with small volume and very high intent, paralytic strabismus, recurrence after squint surgery. The second is plain description and local phrasing, my son's eye turns, the best eye doctor in Minya. The first layer lives in the condition pages, the second in the library, and both lead to the same booking.

  • A page and its own URL for each of the twelve forms.
  • The plain description and the clinical term written together on every page.
  • MedicalClinic structured data with the speciality and the locations.
  • A canonical on every page, with hreflang declared for both versions.
  • A title and description written per condition rather than generated.
  • Alt text on every image, 27 of 27.
  • A published sitemap carrying every page, with robots closing admin and API.
  • A declared policy for language models: indexing and reading allowed, training not.
  • Internal linking from every article into the condition it concerns.

01·From the build

Twelve conditions, twelve pages, and the difference between them readable

The most dangerous thing about a site carrying twelve closely related conditions is that the pages come out resembling one another. If the difference between esotropia in children and esotropia in adults is one swapped word in the same text, the reader cannot tell them apart, Google cannot tell them apart, and the whole speciality is lost.

So a condition was treated as a record with fields rather than a page written by hand: the descriptive name, the clinical name, the signs, the causes, the age at which to intervene, and the treatment. That shape forces the writing to differentiate: the signs in a child are not the signs in an adult, the age to intervene in esotropia is not the same as in amblyopia, and a squint recurring after surgery is a different problem from one caused by thyroid disease or diabetes.

And the twelve are not an invented list to fill pages. They are the conditions this practice actually treats: esotropia in children, esotropia in adults, exotropia in children, exotropia in adults, vertical, paralytic, recurrent, combined, after retinal detachment surgery, thyroid-related, diabetes-related, and amblyopia with reduced vision.

02·From the build

A mother does not type esotropia

A medical site written only in precise terminology fails with this audience for a simple reason: the person searching does not know the name of their condition.

She can see an eye that turns. Or a child being teased at school. Or a head tilted to see properly. None of those is a term. A site waiting for a mother to type esotropia is waiting for something that will not happen.

So every condition page opens with the description and puts the term beside it: your child's eye turns inward. That is called esotropia. That order is not an editorial detail. It is what lets the page be found both ways and understood without a dictionary.

The article library was built on the same logic one layer wider: questions as they are actually asked (the signs of pseudostrabismus in children, the types of squint and their causes) and local searches as they are actually typed: the best eye doctor in Minya, the best doctor for adult squint. Each of them routes into the condition page it concerns.

03·From the build

Scheduling as a design problem

One clinic in Cairo and one in Minya. Different hours, different frequencies, and a patient who may cross a governorate to attend.

Call to book, in that situation, is not a missing line. It is a gamble with a full day of travel. Somebody coming from Minya needs to know exactly before setting off, and if the number does not answer or the information turns out to be wrong, the cost is not a wasted call. It is a wasted journey.

So both clinics' schedules were written out in full on the site (the day, the hour and the frequency) and declared as structured data rather than a line in the footer, so they can be read from the page, from a search result, and by any language model asked when the clinic is open.

And the booking button was fixed into the page shell rather than living on one page, so the moment a mother decides does not require her to go looking. Parents decide while reading, not after finishing and returning to the menu.

04·From the build

The social dimension medical sites leave out

Strabismus is not only a medical condition. It is a social one, and the mother searching at night is not only worried about vision. She is worried about her child at school.

Medical sites tend to ignore that because it is not a line in a report. But content that ignores it is discussing a different problem from the one in the reader's head.

So the writing addresses both: the clinical sign and the daily consequence. Without exaggeration and without exploiting the anxiety. The aim is that a mother feels the writer understands her situation, not that she is frightened into booking faster.

The same logic governed the design. Warm colour and comfortable space, deliberately far from a cold clinical look; medical blue and photographs of equipment settle nobody. Headings are large and line spacing open, because part of this audience reads from a phone in less than ideal conditions, and contrast is high for a reason that is a particular irony on this site: some of these readers genuinely have impaired vision.

05·From the build

A line in a robots file that decides who may read

There is a small detail on this site that most clinic sites in Egypt do not have, and its value grows over time.

The robots file carries an explicit line: indexing is allowed, reading by language models in order to answer with the content is allowed, and training on it is not.

The reason is that search behaviour has changed. A mother with a question about her child's squint may now ask a language model rather than open Google. If the content is closed, the answer comes from somewhere else. If it is open without limits, the content is taken with nothing returned.

So the line opens the reading that brings a patient and closes the use that returns nothing. That is not a technical detail. It is a decision about who benefits from the practice's work.

The phases

How the work ran

Sitting with families and clinicians

Sessions with the surgeon to understand the clinical distinctions between the forms, and what actually makes parents act.

Strategy

The decision to let the narrow speciality be the site, and to expand downwards rather than sideways.

Information architecture

Twelve conditions with their pages, the library wired into them, and booking placed in the page shell itself.

Content

Writing the conditions under the surgeon's review, in description and terminology together.

Design

A warm visual language with high contrast and large type, for an audience some of whom read with difficulty.

Build

Next.js, a field-based condition record, MedicalClinic data, and a dashboard.

Launch and follow-up

Launch, with indexing watched for each of the twelve conditions separately.

Handover

What became yours

  • Domain, hosting and source files in the client's name from day one
  • A control panel the content is edited from without a developer
  • A walkthrough for whoever takes the site over afterwards
  • A month of monitoring and fixes after launch

Outcome

The outcome

The site now runs on the logic of the speciality rather than the logic of the generic doctor template.

A mother who can see her child's eye turning finds a page describing exactly what she is looking at, with the plain description and the clinical term written together, the signs, the age at which to intervene, and the treatment. She books from that same page, because the booking route is fixed in every screen rather than waiting to be hunted for. And if she is in Minya, she finds that clinic's schedule written by day, hour and frequency, so she can plan the journey without a call.

Somebody who asks a language model instead of opening Google arrives too, because the practice is declared as a medical facility with its speciality and its locations, and the content is explicitly readable so the answer comes from the source.

The project in a line: a narrow speciality, and a conventional medical template that wastes it by filing it as item four in a services menu. It was solved by making the speciality the entire site, and by expanding downwards into depth (twelve forms, twelve pages) rather than sideways into other specialities. The practice can now be found by description, by term and by place, and booked from any screen.

Delivery figures

  • 12

    forms of strabismus, each with its own page

    Counted in the published sitemap, 6 September 2026

  • 6

    fields that keep each condition distinct from its neighbour

    The published condition pages

  • 2

    clinics with their schedules written in full

    The published contact page

  • MedicalClinic

    the practice declared as a medical facility with its speciality and locations

    JSON-LD, measured on the live HTML, 6 September 2026

Work like this starts with a call about where you actually are

If this is close to what you need, the Web development page carries the whole method: what you receive, and the number the work answers to.

Our clients

Companies that chose to work with us

Some of our clients, across sectors with nothing in common.

  • Bravo Agrochemicals
  • El Masrya Office Furniture
  • Tareek El Shifa Center
  • Dr Ghada Yousry
  • Interact Labs
  • rawa
  • Next Industry
  • Medixia.ai
  • Falcon Water Treatment Systems
  • Golden Blast
  • Happy Plastics
  • Smart Modern School
  • Rafiq Academy
  • IPS Sports Academy
  • Mo Valley
  • Hyalure
  • G-Tour
  • Préime
  • Rahal
  • Dausar
  • El Gamry