Zweryfikowane 2026-09-06HTTP 200 · 13 rute publice
Co było do rozwiązania
Centrum medyczne z nomenklaturą setek usług taryfowych potrzebowało, aby każda usługa była osobną stroną, możliwą do znalezienia w wyszukiwarce, z ceną i jednostką miary — a nie PDF-em z listą cen. Dodatkowo ceny i zespół się zmieniają, więc klinika musiała móc edytować je samodzielnie, a zapisy miały trafiać do recepcji od razu, a nie do skrzynki e-mail.
Co zbudowaliśmy
Next.js 14.2.35 (App Router) z React 18, TypeScript i Tailwind. Każda pozycja z nomenklatury medycznej stała się własną trasą statyczną: 521 plików `page.tsx` w `src/app`, z czego 481 pod `/servicii` — 184 fizjoterapia, 122 usługi konsultacyjne, 61 okresowe badania lekarskie, 27 ginekologia, 26 ozonoterapia, 23 pakiety leczenia, 18 medycyna alternatywna, 12 diagnostyka, pozostałe według oddziałów. Sitemap w produkcji wymienia 890 adresów. Strona jest dwujęzyczna ro/ru. Edytowalna treść (lekarze, pakiety, leczenia, artykuły, ustawienia, obrazy) znajduje się w lokalnej bazie SQLite przez `better-sqlite3`, z dziennikiem WAL i aktywnymi kluczami obcymi, administrowana z `/admin` przez 20 tras API; uwierzytelnianie używa `jose` dla sesji i `bcryptjs` dla hasła, a zmiana hasła unieważnia istniejące sesje. Formularze rezerwacji i kontaktu są walidowane przez `zod` + `react-hook-form` i wysyłają sformatowaną wiadomość bezpośrednio do Telegrama, przez Bot API. Istnieje też kalkulator cen na `calculator`.
Co można sprawdzić z zewnątrz
- 890 adresów w sitemapie produkcyjnym: `curl -s https:/`sitemap.xml` | grep -c '<loc>'` → 890 (2026-09-06).
- Publiczne przypisanie: stopka na `https://constructorul.md/` zawiera „MegaPromoting” z linkiem do `megapromoting.com` (2026-09-06); w historii commit `Add MegaPromoting link to footer` (2026-01-27).