Verificat 2026-09-06HTTP 200 · 13 rute publice
Що потрібно було вирішити
Медичний центр із номенклатурою з сотень тарифних послуг потребував, щоб кожна послуга була окремою сторінкою, яку можна знайти в пошуку, з ціною та одиницею виміру — не PDF зі списком цін. Крім того, ціни та команда змінюються, тож клініка мала могла редагувати їх самостійно, а запис на прийом мав потрапляти на ресепшн одразу, а не в електронну скриньку.
Що ми збудували
Next.js 14.2.35 (App Router) з React 18, TypeScript і Tailwind. Кожна позиція з медичної номенклатури стала окремим статичним маршрутом: 521 файл `page.tsx` у `src/app`, з яких 481 у `/servicii` — 184 фізіотерапія, 122 консультативні послуги, 61 періодичні медичні огляди, 27 гінекологія, 26 озонотерапія, 23 пакети лікування, 18 альтернативна медицина, 12 діагностика, решта по секціях. Sitemap у production перелічує 890 адрес. Сайт двомовний ro/ru. Редагований контент (лікарі, пакети, лікування, статті, налаштування, зображення) зберігається в локальній базі SQLite через `better-sqlite3`, з журналом WAL і активними зовнішніми ключами, керується з `/admin` через 20 API маршрутів; автентифікація використовує `jose` для сесії та `bcryptjs` для пароля, а зміна пароля анулює наявні сесії. Форми запису та контакту перевіряються через `zod` + `react-hook-form` і надсилають відформатоване повідомлення безпосередньо в Telegram через Bot API. Є також калькулятор цін на `calculator`.
Що можна перевірити ззовні
- 890 адрес у sitemap production: `curl -s https:/`sitemap.xml` | grep -c '<loc>'` → 890 (2026-09-06).
- Публічне атрибутування: футер на `https://constructorul.md/` містить „MegaPromoting” із посиланням на `megapromoting.com` (2026-09-06); в історії — коміт `Add MegaPromoting link to footer` (2026-01-27).