How is the content organised?
Articles, at /articles. Each article has a category and child ages, and the list filters by them.
Services, at /services. These are six pages, each with its own address.
Pages for parents, at /parents. There are three: an online consultation, videos of talks and stories for children.
Plain pages, such as the home page, the biography, the practice and the contact page.
Articles, services and pages for parents are article types of the CMS, not separate code files. The practice writes the text in the editor of the admin, and the same layout displays the page.
An article page has a table of contents built from its sections, an image, a reading time, three related articles and a "Book an appointment" button. The frequently asked questions appear as an accordion at the end.
How is the contact form protected?
The form sends its data to the site itself, never to a third-party service. The server checks it in this order:
It checks that the request comes from the site itself and that its size is small.
It limits requests: 5 per 10 minutes for each IP address. The IP is read from the header set by the reverse proxy, never from a header the visitor sends.
It silently drops bot requests: a hidden field that a person never fills in, and a minimum time to fill the form (3 seconds).
It validates the fields. The name has 2 to 80 characters, the email must be valid and the message has 10 to 2,000 characters. A message with more than two links is rejected.
It stores the message in the database and then emails it to the practice. If the email fails, the message is not lost.
If the security settings ask for a captcha, the form shows it and the server verifies it before anything is stored. When something goes wrong, the visitor sees a general message and a suggestion to phone, never a technical error.
What do search and answer engines read?
Every page has structured data, a small block of code that tells machines what the page is:
On all pages, the practice is described as a physician, a medical clinic and a website.
Articles are described as articles, with author, dates and image. They can also declare their main topics, for example a condition.
The frequently asked questions are written in one field and shown both as an accordion and as FAQPage. The page and its code say exactly the same.
Breadcrumbs describe where the page sits in the site.
Each article also has a short answer summary and key facts, written for answer engines. The sitemap is built whenever it is requested, so a new page appears without a new release of the site. robots.txt explicitly opens the site to the crawlers of the major answer engines (ChatGPT, Claude, Perplexity, Google).