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 builtLucrarea se poate verifica din exterior chiar acum: datele publice ale unui centru stomatologic raional pe care îl administrăm sunt servite ca fișier structurat — 89 de servicii, fiecare cu categorie, subcategorie, denumire, preț, unitate de măsură și un indicator de eligibilitate pentru asigurarea obligatorie, dintre care 27 marcate ca eligibile; 7 categorii și 10 subcategorii, verificate de noi pe 06.09.2026. A doua parte a dovezii e securizarea, cu diff în istoric: la preluare, parola de administrator era comparată în browser și ajungea în pachetul JavaScript public, iar scrierile pe interfața de programare se puteau face de oricine de pe internet. Precizarea corectă, ca să nu ne atribuim mai mult decât e al nostru: prima variantă a site-ului nu e a noastră. Contribuția care se poate arăta cu diff e preluarea, securizarea, tipurile, integrarea continuă și igiena dependințelor.
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.