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 на продакшене перечисляет 890 адресов. Сайт двуязычный ro/ru. Редактируемый контент (врачи, пакеты, процедуры, статьи, настройки, изображения) хранится в локальной SQLite-базе через `better-sqlite3`, с WAL-журналом и активными внешними ключами, управляется из `/admin` через 20 API-маршрутов; аутентификация использует `jose` для сессии и `bcryptjs` для пароля, а смена пароля инвалидирует существующие сессии. Формы записи и контакта проверяются с помощью `zod` + `react-hook-form` и отправляют сформированное сообщение напрямую в Telegram через Bot API. Есть также калькулятор цен на `calculator`.
Что можно проверить снаружи
- 890 адресов в sitemap на продакшене: `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).