Solutions · Dental clinics
A service list with a marker for coverage under compulsory insurance, editable by reception — not a PDF with prices sent by email.
A dental clinic website is judged by one thing: whether the person finds the service they need, with its price and its unit — per tooth, per jaw, per session — and whether they know whether it is covered by insurance or not. The rest is décor. We build the structure that holds this and the panel from which the staff changes it themselves.
Already builtThe work can be verified from outside right now: the public data of a district dental centre we manage are served as a structured file — 89 services, each with category, subcategory, name, price, unit of measure and an eligibility indicator for compulsory insurance, of which 27 are marked as eligible; 7 categories and 10 subcategories, verified by us on 06.09.2026. The second part of the proof is the securing, with a diff in history: on takeover, the administrator password was compared in the browser and ended up in the public JavaScript package, and writes to the application programming interface could be made by anyone on the internet. The correct clarification, so we do not attribute to ourselves more than is ours: the first version of the site is not ours. The contribution that can be shown with diff is takeover, securing, types, continuous integration and dependency hygiene.
A dental clinic does not sell “services”. It sells a very long list of tariff items with units that do not resemble anything from another field: per tooth, per jaw, per extraction, per treated case, per session, per visit, per procedure. The person searching online is not looking for the clinic, but for their item: how much does an extraction cost, is it paid per tooth or per visit, is it covered by insurance. A website that answers this is useful; one that has a “Prices” page with an attached PDF is not.
The second thing that reality of a clinic requires is for the list to be changeable without a developer. Tariffs change, doctors change, the emergency schedule is announced differently in winter. If every change goes through a developer, the list stays old and, in a few months, patients come with last year’s price. The structure we build keeps the public data — services and team — in structured files read both by the API and directly by the visible part of the website, and the staff edit them from a panel.
The third thing, which no one asks for in the brief and which matters most, is who can write to that list. When we took over the project we write about here, anyone on the internet could send a write to the API, and the panel password ended up in the JavaScript bundle served to the browser — because its verification was done in the browser. We moved verification to the server: the password no longer leaves the server, a signed token valid for twelve hours is returned, with a limit of eight attempts per fifteen minutes per IP address and constant-time comparisons; the API listens only on the local address, so the web server is the only public path.
The marker for coverage under compulsory insurance deserves a separate sentence, because it is the field with the highest value for the patient and the highest risk for the clinic: it is an assertion with consequences. That is why it lives as institution-edited data, not as text written by us on a page; we build the field, the display and the ability to correct it in a minute.