OKSoftware
Case study

Alba — klinika stomatologiczna

Premium strona kliniki stomatologicznej z własnym CMS-em, działająca produkcyjnie na utwardzonym VPS — edytowalne treści, galeria metamorfoz, rezerwacja online i dane pacjentów obsłużone z myślą o RODO.

Kategoria
Strona kliniki + CMS / Własny serwer
Branża
Medycyna / Stomatologia

Alba to kompletny, produkcyjny serwis kliniki stomatologicznej: szybka strona publiczna, którą klinika edytuje samodzielnie, panel redakcyjny oraz infrastruktura postawiona od pustego serwera do wdrożenia z monitoringiem i kopiami zapasowymi. To projekt referencyjny — klinika i jej dane są fikcyjne — pokazujący, jak od początku do końca powinna wyglądać nowoczesna i bezpieczna strona gabinetu.

Alba — klinika stomatologiczna — zrzut ekranu 1
Alba — klinika stomatologiczna — zrzut ekranu 2
Alba — klinika stomatologiczna — zrzut ekranu 3

Wyzwanie

Strony gabinetów bywają wolne, trudne w aktualizacji i nieostrożne z danymi pacjentów: formularze kopiujące informacje o zdrowiu do skrzynek e-mail, zewnętrzne widżety ładowane przed jakąkolwiek zgodą, panele administracyjne otwarte na cały internet. Celem była strona, która wygląda premium, którą personel aktualizuje bez programisty i która na każdym poziomie poważnie traktuje dane pacjentów.

Podejście

Next.js jako strona publiczna i Strapi jako panel redakcyjny, oba na PostgreSQL za Caddy, całość w Dockerze na jednym VPS. Obrazy budują się w GitHub Actions i są wdrażane po SHA commita, więc każde wydanie jest powtarzalne, a cofnięcie zmian to jedno polecenie. Zabezpieczenia są warstwowe — sieć, serwer, HTTP, aplikacja i CMS — tak, by przełamanie jednej warstwy nie otwierało pozostałych.

Co zbudowaliśmy

  • Strona publiczna: usługi, galeria metamorfoz z suwakiem przed/po, zespół z filtrem specjalizacji, aktualności, opinie pacjentów, kontakt
  • CMS Strapi po polsku i angielsku — personel sam edytuje usługi, zespół, aktualności i galerię
  • Formularz kontaktowy zapisywany wyłącznie w CMS-ie (bez kopii w e-mailu i logach), z automatycznym usuwaniem po okresie retencji
  • Rezerwacja online osadzona jako iframe od zaufanego dostawcy — bez skryptów dostawcy na stronie
  • Mapa ładowana dopiero po zgodzie odwiedzającego, więc nikt zewnętrzny nie dostaje wcześniej jego adresu IP
  • Content-Security-Policy z nonce generowanym przy każdym żądaniu, ochrona CSRF, limity żądań i honeypot w formularzu
  • Własny renderer treści — tekst z CMS-a nigdy nie trafia na stronę jako surowy HTML
  • Publiczne API tylko do odczytu, CORS zamknięty do jednej domeny, odizolowana sieć bazy danych
  • Utwardzony serwer: firewall obejmujący ruch Dockera, fail2ban, SSH wyłącznie na klucz, kontenery bez uprawnień roota
  • Szyfrowane kopie zapasowe poza serwerem z przetestowanym odtwarzaniem, monitoring dostępności i skrypty audytu serwera

Wyniki

  • Działa produkcyjnie pod adresem alba.oksoftware.co
  • Każde wydanie odtwarzalne z jednego commita i odwracalne jednym krokiem
  • Zgłoszenia pacjentów nie opuszczają systemu kliniki
  • Uczciwie zaznaczony zakres: klinika, personel, opinie i dane kontaktowe to fikcyjne treści demonstracyjne

Stack

Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS v4, Strapi 5, PostgreSQL 17, Caddy 2 z limitami żądań, Docker Compose, GitHub Actions z GitHub Container Registry, kopie zapasowe restic, VPS na Debianie.

Next.jsTypeScriptTailwind CSSStrapiPostgreSQLCaddyDockerGitHub ActionsInternal R&D

Chcesz podobny system?

Bez handlowców — porozmawiaj z Lead Engineerem o swoim procesie.